簡體   English   中英

如何知道Crontab是否正常工作?

[英]How to know if Crontab is working?

我正在嘗試運行一個簡單的crontab(在Mac OSX Terminal上)

我的cronjob事情看起來像這樣:

* * * * * /Users/tanavya.dimri/Documents/cron.sh

cron.sh:

#!/bin/bash
cd /Users/tanavya.dimri/Documents
python hello.py > empty

hello.py就是

print "Hello"

當我剛運行sh cron.sh它可以工作。 空的,只是一個空的文本文件,確實更改為“ Hello”。 但是,我真的不知道它是否與crontab一起使用,因為在我刪除它后,文件不會更改。

刪除文件后嘗試。 如果crontab運行,則應創建它

有一種方法可以檢查您的crontab作業是否成功運行。 請注意,cron命令中的日志文件引用是使用完整路徑而不是相對路徑給出的。 您需要確保腳本使用完整路徑或cd到正確的工作目錄。

Crontab日志:如何記錄我的Cron腳本的輸出

假設您已經將backup.sh添加到crontab中,如下所示,以在每天午夜執行該文件。

$ crontab -e 59 23 * * * /home/john/bin/backup.sh

要驗證此作業是否成功執行,請檢查/ var / log / cron文件,該文件包含有關系統中所有執行的cron作業的信息。 從下面的輸出中可以看到,john的cron作業已成功執行。

$ tail /var/log/cron
Oct  8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &)
Oct  8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &)
Oct  8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)

Cron日志包含以下信息:

時間戳記–執行cron作業的日期和時間

主機名–服務器的主機名(例如dev-db)

cron守護進程名稱和PID。 例如crond [20399]

用戶名–執行此cron作業的用戶名。 例如,約翰。

CMD –此后的所有操作都是當時已執行的實際命令。

如果backup.sh中有任何回顯語句,則可能需要將其記錄到文件中。 通常,如果backup.sh cron腳本拋出任何輸出(包括錯誤),則可能需要將其記錄到日志文件中。 為此,請修改crontab條目並添加輸出和錯誤重定向,如下所示。

$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1

在上面:

/home/john/logs/backup.log指示backup.sh腳本的標准輸出將重定向到backup.log文件。

2>&1表示標准錯誤(2>)重定向到標准輸出(&1)指向的同一文件描述符。

因此,標准輸出和錯誤都將重定向到/home/john/logs/backup.log

首先檢查您是否對cron.sh文件具有足夠的權限。

chmod 755 cron.sh

然后修改您的crontab以使其定期運行(即1分鍾):

 */1 * * * * /Users/tanavya.dimri/Documents/cron.sh

默認情況下,cronjobs登錄到/var/log/syslog

因此,您可以簡單地grep記錄CRON並檢查作業執行情況:

grep CRON /var/log/syslog

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM