crontab의 여러 파일에 출력 저장

crontab의 여러 파일에 출력 저장

crontab에는 예약된 스크립트가 있습니다.

0 2 * * * /usr/local/bin/backup.sh >> /root/output_all.txt

출력을 동시에 여러 파일(output_all.txt 및 output_date.txt)에 저장하고 싶습니다.

tee출력을 여러 파일에 저장하는 명령이 있다는 것을 알고 있습니다 .
그런데 teetty가 존재할 때만 사용할 수 있나요?

다른 해결책이 있나요?

답변1

작품 이용에는 tee문제가 없습니다 . tty에 있는 운영 체제와 상호 작용하는 데 사용되는 장치입니다 /dev/tty#.

0 2 * * * /usr/local/bin/backup.sh | tee /root/output_all.txt output_date.txt 

출력을 파일에 추가하고 기존 콘텐츠를 덮어쓰지 않으려면 다음을 수행하세요.

0 2 * * * /usr/local/bin/backup.sh | tee -a /root/output_all.txt output_date.txt

위의 방법은 stdout 및 파일로 전송될 뿐만 아니라 cron 사용자에게 이메일도 전송된다는 점을 명심하세요.

답변2

프로세스는 일반적으로 cron 세션 또는 터미널 연결 세션을 통해 실행되는지 알지 못하므로 질문은 "출력을 여러 파일에 저장"이어야 합니다. 이는 실제로 더 간단한 측면입니다. teestdout을 Fork로 분할하거나 더 많은 파일이 있으면 남은 출력은 sendmail기본적으로 로 이동한다는 점을 잊지 마세요 . 관리되지 않는 사서함이 커지는 것을 원하지 않으면 파이프 사용을 고려하십시오. 이는 게으른 옵션이며 |& logger선호하는 구문에 따라 설정한 다음 사라지는 것보다 낫습니다.&>/dev/nullSHELL=/bin/bash

이로 인해 귀하가 저지른 실수가 다시 발생합니다. cron 실행 프로세스만 누락되었으며 stdin(예: 존재하지만 유효하지 않음 /dev/null) $DISPLAY암호화된 프록시 세션을 포함하여 사용자 인터페이스에 참여하는 것으로 직관적으로 이해하는 기타 데스크톱 관련 리소스입니다. 활성 사용자가 필요한 작업만 예약해 보세요.

진지하게 cronjob의 경우 남은 모든 출력이 터미널 대신 메일로 라우팅되므로 메일 라우팅을 구성하는 것이 좋습니다. 그게 다야.

관련 정보