다음 스크립트가 있습니다.
#!/bin/bash
/usr/bin/echo q | /usr/bin/htop -C | /usr/bin/aha --line-fix | /usr/bin/html2text -width 999 | /usr/bin/grep -v "F1Help\|xml version=" > htop.txt
htop
단지 출력을 캡처합니다 .
명령줄을 통해 스크립트를 실행하면 제대로 작동하지만 crontab
루트를 통해 실행하면 다음과 같습니다.
15 15 * * 1-5 /bin/bash /root/collect_system_stats.sh
htop.txt는 1바이트에 불과하며 hexdump
다음을 표시합니다.
0000000 000a
0000001
내가 뭘 잘못했나요?
답변1
--line-buffered
플래그와 함께 grep을 사용해야 합니다 . 그렇지 않으면 첫 번째 일치 후에 grep이 종료됩니다. 이에 대한 완전한 설명은 없지만 이것이 내 스크립트가 비슷한 상황에서 작동하는 이유입니다.
확립된이 답변grep에 대한 라인 버퍼입니다.
htop을 사용하여 cronjob을 루트로 설치하면 다음 오류 메시지가 나타날 수 있습니다.
/usr/bin/htop -C Error opening terminal: unknown
TERM=xterm
스크립트에서 설정하면 이 문제를 해결할 수 있습니다.