명령 줄 테스트와 crontab 사이의 PATH 설정이 동일하지 않습니다.
명령 줄에서 which ifconfig
및 which mail
을 입력하고 which grep
일 수도 있습니다. 그런 다음 crontab에서 정규화 된 경로를 사용하십시오. 즉
는 tripleee에서 알림 당 가 정말 서브 쉘 ((cmds)
노래를 만들 필요가 없습니다 수정. 가장 효율적인 솔루션 즉, 하위 쉘 문자를 제거하는
0 5 * * * /path/to/ifconfig | /path/to/grep GiB | /path/to/mail -s "Traffic Usage" -t [email protected] -aFrom:[email protected]
입니다 특별한 경우에는 하위 쉘을 호출하는 데 드는 추가 "비용"이 최소화되지만 실제로는 나쁜 습관을 설정하는 것입니다. 모든 스크립트 (예 : while 루프의 내부)로 옮겨 가면 당신의 처리 성능. 그래서 정말 필요할 때만 서브 쉘을 사용하는 것이 가장 좋습니다.
어떤 이유에서든 mail
명령에 출력을 보내는 하위 셸이 실제로 필요한 복잡한 문제의 자리 표시 자로이 질문을 사용하는 경우 원본 솔루션을 그대로 둡니다. (하지만 나는 crontab에서 실행되는 프로세스 체인에서 하위 셸이 필요한 이유를 생각할 수 없다.)
0 5 * * * (/path/to/ifconfig|/path/to/grep GiB) | /path/to/mail -s "Traffic Usage" -t [email protected] -aFrom:[email protected]
또는 당신은 PATH가 필요한 경로를 포함하고 crontab 항목을 변경할 필요가 없을 것입니다 귀하의 crontab 환경을 수정하는 방법을 보려면 여기를 검색 할 수 있습니다.
그러나 crontab
항목에 대한 경로를 추가하는 것은 OS마다 다를 수 있으므로 OS별로 검색해야합니다. Sun, AIX 및 Linux가 아닌 다른 공급 업체 시스템과 같은 대부분 구형 Unix를 생각하고 있습니다.
IHTH
감사합니다. – SnoopyGuo
그러나 투표 할만한 평판이 충분하지 않습니다. ( – SnoopyGuo
@SnoopyGuo :이 대답을 어떻게 받아 들일 수 있는지 편집하십시오. – shellter