2014-09-25 1 views
0

VPS 트래픽 사용을 추적합니다. crontab을 사용하여 grep 결과가있는 이메일을 보내시겠습니까?

내가 터미널에 명령을 시도 :

(ifconfig|grep GiB) | mail -s "Traffic Usage" -t [email protected] -aFrom:[email protected]

그것은 성공적으로 RX & TX 정보를 보냈다. crontab에 추가 할 때

는하지만 : 그것은 그렙 결과를 보내지 못했습니다

0 5 * * * (ifconfig|grep GiB) | mail -s "Traffic Usage" -t [email protected] -aFrom:[email protected] 

, 대신, 빈 이메일을 보냈다.

답변

0

명령 줄 테스트와 crontab 사이의 PATH 설정이 동일하지 않습니다.

명령 줄에서 which ifconfigwhich 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

+0

감사합니다. – SnoopyGuo

+0

그러나 투표 할만한 평판이 충분하지 않습니다. ( – SnoopyGuo

+0

@SnoopyGuo :이 대답을 어떻게 받아 들일 수 있는지 편집하십시오. – shellter

관련 문제