2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

xargs를 사용하여 실행한 명령의 출력을 로그 파일로 저장하려면?

_____
Q: `xargs`로 실행한 명령의 출력을 로그 파일에 저장하려면 어떻게 해야 하나요?

A: `xargs` 명령어로 여러 인자를 받아 실행하는 명령의 표준 출력 및 표준 에러를 로그 파일로 저장하려면, 명령어 뒤에 리디렉션(`>` 또는 `>>`)을 추가하거나, 쉘을 통해 명령을 실행하며 로그를 저장하는 방식이 일반적입니다. 주요 방법은 다음과 같습니다.

---

1. 단일 명령을 `xargs`로 실행하고 출력 리디렉션하기

```bash
echo "arg1 arg2" | xargs -I {} sh -c 'your_command {} >> output.log 2>&1'
```

- `sh -c`를 사용하여 복잡한 명령을 실행하면서 출력 및 에러를 `output.log`에 추가(`>>`) 저장.
- `2>&1`는 표준 에러(stderr)를 표준 출력(stdout)으로 합쳐 함께 저장.
- `-I {}`는 `xargs`가 `{}`를 각각의 인자 위치에 대체.

---

2. 여러 인자를 한 번에 처리할 경우 (기본 동작)

```bash
echo "arg1 arg2 arg3" | xargs your_command >> output.log 2>&1
```

- `xargs`가 기본적으로 한 번에 가능한 최대 인자를 명령에 넘기므로, 명령 한 번 실행 후 출력이 `output.log`에 저장.
- `>>`는 기존 파일에 추가, `>`는 덮어쓰기.

---

3. 각 인자별로 명령을 실행하며 각각 출력 저장

만약 인자마다 한 번 실행하고, 각각 별도의 로그 파일에 저장하고 싶다면:

```bash
echo "arg1 arg2" | xargs -n 1 -I {} sh -c 'your_command {} > logs/{}.log 2>&1'
```

- `-n 1`은 한 번에 인자 1개씩 처리.
- 각각 `arg1.log`, `arg2.log`로 출력과 에러 저장.

---

4. `xargs` 출력 자체를 로그로 저장하기

만약 `xargs`가 실행하는 명령 자체는 표준 출력 없이 완료되고, `xargs` 출력 결과를 저장하고 싶다면:

```bash
echo "arg1 arg2" | xargs your_command > output.log 2>&1
```

- `xargs`가 실행하는 명령 실행 결과가 `output.log`에 저장.

---

요약

- 일반적으로 `xargs`로 실행할 명령 뒤에 리디렉션(`>`,`>>`) 및 `2>&1`를 통해 출력과 오류를 로그 파일에 저장.
- 복잡한 명령이나 인자를 여러 번 실행할 경우 `sh -c '...'` 와 조합.
- 인자별 개별 로그가 필요할 때는 `-n 1 -I {}` 옵션 활용.

---

예시 전체

```bash
cat list.txt | xargs -n 1 -I {} sh -c 'my_command {} >> command.log 2>&1'
```

모든 인자별 명령 출력이 `command.log`에 순차적으로 저장된다.

---

이 방식들 중 상황에 따라 적절히 선택해 사용하시면 됩니다.
`xargs`는 파이프를 통해 전달된 입력을 다른 명령의 인자 목록으로 변환하여 실행하는 유용한 유틸리티입니다.

`xargs`를 사용하여 실행한 명령의 출력을 로그 파일로 저장하려면 리디렉션을 사용할 수 있습니다.

다음은 `xargs`와 함께 사용하여 명령의 출력을 로그 파일에 저장하는 일반적인 방법입니다.

기본 구문 ```bash echo "input" | xargs your_command > output.log ``` 위의 구문에서 `your_command`는 파이프를 통해 전달된 입력을 처리하는 명령이며, `input`은 전달할 입력입니다.

이 명령의 출력은 `output.log` 파일에 저장됩니다.

예제 1. 파일 목록을 검색하여 로그 저장하기 ```bash ls | xargs -n 1 echo >> output.log ``` - 이 예제는 현재 디렉토리의 파일 목록을 가져와 각 파일 이름을 `echo` 명령으로 출력하고, 그 결과를 `output.log` 파일에 저장합니다.



2. 특정 패턴의 파일을 검색한 후 로그 저장하기 ```bash find . -name "*.txt" | xargs cat > output.log ``` - 이 예제는 현재 디렉토리 및 하위 디렉토리에서 `.txt` 파일을 찾아서 해당 파일의 내용을 출력하고, 그 결과를 `output.log` 파일에 저장합니다.

추가 옵션 - 추가적인 로그 파일로 기록하기 : `>>`를 사용하면 기존 로그 파일에 이어서 기록할 수 있습니다.

- 에러 로그 따로 기록하기 : `2>`를 사용해서 에러 출력을 다른 파일로 리디렉션할 수 있습니다.

```bash echo "input" | xargs your_command > output.log 2> error.log ``` 이와 같은 방법으로 `xargs`를 활용하면 명령의 출력을 손쉽게 로그 파일에 저장할 수 있습니다.

상황에 맞게 적절한 명령어와 인자를 사용하여 필요에 맞는 로그를 만들 수 있습니다.

작성자: 김윤서 [비회원] | 작성일자: 1년 전 2025-04-17 07:21:02
조회수: 116 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.