xargs — 결과를 인자로 넘겨 실행

Linux / 자동화 및 예약 작업 / xargs.html

자동화 및 예약 작업원문등록 2026-10-18

💬 "xargs 명령어"

xargs는 표준입력을 명령 인자로 변환합니다. find와 결합해 대량 파일을 처리할 때 필수입니다.

-n/-P로 묶음 크기와 병렬 실행을 조절합니다.

  • 개념: 입력 줄을 명령 인자로 넘겨 실행합니다.
  • -n: 한 번에 넘길 인자 수를 지정합니다.
  • -P: 병렬 프로세스 수를 지정합니다.
  • -I: 자리표시자로 위치를 지정합니다.

자주 쓰는 옵션

옵션설명
-n <개수>한 번에 넘길 인자 수
-P <개수>병렬 실행 수
-I {} 자리표시자 사용
-0NUL 구분자 사용(공백 있는 파일명 안전)

필수 명령어 조합 3가지

  • find /var/log/app -name '*.log' -mtime +14 | xargs -r gzip — 오래된 로그 압축
  • find /srv/data -type f -print0 | xargs -0 -n 100 md5sum > /tmp/md5.txt — 공백 있는 파일명 안전하게 체크섬
  • cat hosts.txt | xargs -P 8 -I {} ssh {} 'uptime -p' — 여러 서버에 병렬로 명령 실행

💬 "처음 쓰는 사람이 따라하기 쉬운 예시 부탁해"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 대상 목록 확인

먼저 무엇이 대상인지 봅니다.

find /var/log/app -name '*.log' -mtime +14 | head

2단계 · 실행

xargs로 넘겨 처리합니다.

find /var/log/app -name '*.log' -mtime +14 -print0 | xargs -0 -r gzip

3단계 · 검증

결과를 확인합니다.

ls -1 /var/log/app/*.gz | wc -l

실무에서는 이렇게 씁니다

1. 오래된 로그 압축

상황 — 14일 지난 로그를 압축해 용량을 줄입니다.

find /var/log/app -name '*.log' -mtime +14 -print0 | xargs -0 -r gzip

결과 — 대상 로그가 일괄 압축되어 디스크가 확보됩니다.

포인트 — -print0/-0 조합으로 공백 있는 파일명도 안전하게 처리합니다.

2. 여러 서버 병렬 점검

상황 — 수십 대 서버의 상태를 한 번에 확인합니다.

cat hosts.txt | xargs -P 8 -I {} ssh -o ConnectTimeout=3 {} 'uptime -p'

결과 — 병렬로 실행되어 점검 시간이 크게 줄어듭니다.

포인트 — 병렬 수는 대상 부하를 보고 조절합니다.

주의할 점

  • 공백이 있는 파일명은 -0 없이 처리하면 깨집니다.
  • 대상이 없을 때 명령이 그대로 실행되지 않도록 -r을 씁니다.
  • -P로 과도한 병렬 실행은 대상 서버에 부하를 줍니다.
  • 삭제/변경 작업 전에는 대상 목록을 먼저 확인합니다.

실제 실행 화면

오래된 로그를 찾아 일괄 압축하고 결과 개수를 확인한 결과입니다.

xargs 명령어 실행 결과: 대량 로그 압축

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.