
crontab에는 예약된 스크립트가 있습니다.
0 2 * * * /usr/local/bin/backup.sh >> /root/output_all.txt
출력을 동시에 여러 파일(output_all.txt 및 output_date.txt)에 저장하고 싶습니다.
tee
출력을 여러 파일에 저장하는 명령이 있다는 것을 알고 있습니다 .
그런데 tee
tty가 존재할 때만 사용할 수 있나요?
다른 해결책이 있나요?
답변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 세션 또는 터미널 연결 세션을 통해 실행되는지 알지 못하므로 질문은 "출력을 여러 파일에 저장"이어야 합니다. 이는 실제로 더 간단한 측면입니다. tee
stdout을 Fork로 분할하거나 더 많은 파일이 있으면 남은 출력은 sendmail
기본적으로 로 이동한다는 점을 잊지 마세요 . 관리되지 않는 사서함이 커지는 것을 원하지 않으면 파이프 사용을 고려하십시오. 이는 게으른 옵션이며 |& logger
선호하는 구문에 따라 설정한 다음 사라지는 것보다 낫습니다.&>/dev/null
SHELL=/bin/bash
이로 인해 귀하가 저지른 실수가 다시 발생합니다. cron 실행 프로세스만 누락되었으며 stdin
(예: 존재하지만 유효하지 않음 /dev/null
) $DISPLAY
암호화된 프록시 세션을 포함하여 사용자 인터페이스에 참여하는 것으로 직관적으로 이해하는 기타 데스크톱 관련 리소스입니다. 활성 사용자가 필요한 작업만 예약해 보세요.
진지하게 cronjob의 경우 남은 모든 출력이 터미널 대신 메일로 라우팅되므로 메일 라우팅을 구성하는 것이 좋습니다. 그게 다야.