2009-08-19 4 views
0

실행되는 동안 콘솔에 수백만 줄의 프로세스를 덤프하는 프로세스가 있습니다. 나는 이것을 cronjob에서 실행하고 싶지만 multi-MB 메일을 보내지 않으려면 성공 (exit == 0)의 경우 출력을 0 줄로 제한하고 오류 (exit ! = 0)을 마지막 20 줄까지 추가합니다.크론 작업 : 마지막 20 행 유지

작은 노력으로 어떤 아이디어를 얻을 수 있습니까? 어쩌면 몇 줄의 펄이나 표준 툴을 똑똑하게 사용할 수 있을까요?

+1

어쨌든 tail -n 20은 어떨까요? –

+0

CRON에서는 스크립트를 호출하게됩니다. 스크립트에서는 프로세스의 EXIT 상태를보기 위해 논리를 개발해야 할 수도 있습니다. 오류 일 경우 꼬리 -20 * 로그 만 메일로 보냅니다. – Guru

답변

2

crontab에서 직접 또는 래퍼 스크립트에서 꼬리까지 파이프를 출력합니다. 예 :

10 * * * * myprogram 2>&1 | tail -20 

항상 마지막 20 줄, 성공 여부를 출력합니다. 성공해도 출력하지 않고 오류가 발생하면 cron에서 호출하는 래퍼 스크립트를 만들 수 있습니다. 예 :

#!/bin/sh 
myprogram 2>&1 | tail -20 >/tmp/myprogram.log 
if [ $? != 0 ] ; then 
    echo "Failed!" 
    cat /tmp/myprogram.log 
fi 
rm /tmp/myprogram.log 
+0

너무 덥다. 나는 더 이상 생각할 수 없다. 물론, 간단한 꼬리가 있습니다 :) –

2

tail command은 당신이하려는 일에 잘 맞습니까? 어쩌면 콘솔 출력을 파일로도 사용할 수 있다면 (아마도 tee을 사용했을 것입니다)?