5일이 지난 파일을 삭제하는 CRONTAB 작업에 대한 파이프라인 명령 출력 [닫기]

5일이 지난 파일을 삭제하는 CRONTAB 작업에 대한 파이프라인 명령 출력 [닫기]

CRONTAB 작업을 실행하여 폴더에서 5일이 지난 파일을 삭제하고 싶습니다.오류를 방지하기 위해 명령 출력을 파일로 전송합니다..

명령줄에서 실행하면 이 명령은 파일을 삭제합니다.

/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \;

그러나 stdout 및 stderr 파이프를 얻기 위해 추가하면 실패합니다.

/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \; > /mnt/output/CRONDeleteFiles.txt 2>$1

명령줄에서 오류는 다음과 같습니다.

-bash: $1: 모호한 리디렉션

CRONTAB 이메일 오류 메시지에서 이 오류가 발생합니다.

/bin/sh: 1: 생성할 수 없음: 디렉터리가 존재하지 않습니다.

이것이 내 파이프라인 코드와 관련이 있는 것으로 의심됩니까?

이를 수행하는 올바른 방법은 무엇입니까?

답변1

stderr은 귀하의 예와는 2>&1달리 stdout으로 리디렉션됩니다 .2>$1

답변2

로거에 쓸 수 있습니다.

find /mnt/SQL_Backups/* -mtime +5 -print -delete 2>&1 | logger -t rmsqlbackups

내 시스템에는 우선순위나 기능(예를 들어)이 없기 때문에 시스템에 -p user.info기록됩니다 /var/log/messages. 2>&1캡처표준 에러또한표준 출력.

>>또는 자신만의 방법을 사용하여 파일에 씁니다. 비록 출력( ) 대신 추가( )가 필요할 수도 있지만 >여기에서는 모든 출력 앞에 현재 날짜/시간을 추가하여 다음 사항을 확인할 수 있습니다.

( date; find /mnt/SQL_Backups/* -mtime +5 -print -delete; echo ) >> /mnt/output/CRONDeleteFiles.txt 2>&1

관련 정보