다른 결과로 Crontab을 통해 스크립트를 실행하시겠습니까?

다른 결과로 Crontab을 통해 스크립트를 실행하시겠습니까?

다음 스크립트가 있습니다.

#!/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스크립트에서 설정하면 이 문제를 해결할 수 있습니다.

관련 정보