2013-06-30 69 views
0

嗨,我真的是新的Linux:Dcrontab如何在控制檯中打印消息?

我做了一個crontab應用程序,應該在控制檯每3分鐘打印當前時間。

我所做的是以下。

  1. 我做了一個crontab。在終端中,命令 「crontab -e」並添加一個短語「*/3 * * * * /home/user/a.out

  2. a.out的是「gcc WowCron.c」結果文件。

代碼如下。

int main (int argc, char* argv[]){ 
    time_t now; 
    time(&now); 
    printf("this is what we call cron does: %s\n", ctime(&now)); 
    return 0; 
} 

並且它在單獨運行時運行非常好。

  1. 然後我在終端運行了一個「service cron restart」命令。 現在當我命令「crontab -l」時,我可以看到我在crontab中寫的消息。

  2. 問題是,我認爲它的工作原理,但從來沒有打印時間消息。

問:如何每3分鐘打印一次這個打印時間?

+0

我的寫作出了什麼問題?我的C代碼完全崩潰了!無論如何,代碼是沒有什麼特別的,但打印當前時間。 –

+0

沒有必要重新啓動'cron'。它會在每次運行時讀取所有crontabs,以便任何用戶可以隨時更新它們並立即查看結果。 – tripleee

+0

@tripleee那麼service cron restart命令的意義是什麼?這只是一個無用的行動?無論如何,謝謝你一貫的回答。 –

回答

1

cron作業的標準輸出不會在控制檯上結束。嘗試使用syslog設施。

或者,如果您不需要將其集成到您自己的較大的C程序中,請使用logger命令。

*/3 * * * * logger Still here ... 

(系統日誌已經包括時間戳。)

任何標準輸出和標準誤差從計劃作業結束通過電子郵件被髮送到作業所有者。也許你應該檢查你的郵箱,或者你的電子郵件工作不正常?

1

Cron觸發一個新的進程在後臺啓動。您可以通過終端(這是一個進程)對其進行配置,但與終端無關。每個進程都有它自己的STDOUT,STDIN,STDERR,因此cron任務處於一個新進程中,它不會打印到您的終端進程中。STDOUT

由於tripleee說如果您希望它打印syslog是一件好事要去的地方,或者你可以把它添加到你選擇的文件。

如果你只是想在一個終端的時間間隔運行該程序,然後shell腳本可能是一個更好的選擇:

while : 
do 
    date 
    sleep 180 
done 

或者你可以替換」 ./a的「日期」功能.out「並從同一目錄運行它