![5일이 지난 파일을 삭제하는 CRONTAB 작업에 대한 파이프라인 명령 출력 [닫기]](https://linux55.com/image/212653/5%EC%9D%BC%EC%9D%B4%20%EC%A7%80%EB%82%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20CRONTAB%20%EC%9E%91%EC%97%85%EC%97%90%20%EB%8C%80%ED%95%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
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