[Mac] 開啟 cron job 的記錄檔

[Mac] 開啟 cron job 的記錄檔

今天在 Mac 上的 cron job 上,加了下面一行,

想說讓它自動打開 urmoney 的網頁來記帳:

open "http://www.urmoney.tw/ztw/members/finance_02_idx.php?page=1&txtRange=$(date "+%Y-%m")&pProperty=&"

 

不過奇怪的是,設定了之後,網頁一直沒有被開起來,

可是直接在 terminal 裡面執行又可以…

原本在後面加上 2>&1 > /tmp/urmoney.log 想說看看有沒有錯誤訊息,

可是這個檔案也一直沒有被建立出來…

 

在下面這篇找到了解法~

Ask Different: Where is the cron log file in MacOSX Lion?

可以先打開 cron job 的 log,這樣問題就比較好查了~

 

1. 編輯 /etc/syslog.conf

在這個檔案裡加上下面一行 (記得要 sudo 後才能編輯): 

cron.* /var/log/cron.log

 

2. 重新啟動 syslogd

執行下面的兩行指令,重新指動 syslod:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

 

3. 檢查 /var/log/cron.log

等 cron job 的時間到了之後,應該就能看到 /var/log/cron.log 了,

檢查一下內容:

Sep  5 11:04:00 localhost /usr/sbin/cron[15073]: (testuser) CMD (open "http://www.urmoney.tw/ztw/members/finance_02_idx.php?page=1&txtRange=$(date '+)

 

嗯… 真奇怪, 記錄檔裡記錄的指令,

只到 date ‘+ 而已,後面的 %Y-%m… 都沒出現,

可是在 shell 裡面這個命令卻是可以執行的~

猜測是 % 這個符號造成的問題,不過我懶得的去看 cron job 應該要如何跳脫特殊字元了,

直接把 open 的指令寫在另一個 shell script 裡面,

cron job 呼叫這個 shell script 就好了~

 

改好的 crontab 內容如下:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
#MIN HOUR DAY MONTH DAYOFWEEK   COMMAND
00 23 * * * ~/open_urmoney.sh

 

而被呼叫的 open_urmoney.sh 的內容就是剛剛 open 的那一行:

#!/bin/sh
open "http://www.urmoney.tw/ztw/members/finance_02_idx.php?page=1&txtRange=$(date "+%Y-%m")&pProperty=&"

 

設定好之後,cron job 時間到時,urmoney 的網頁正確的被開啟了,

看一下 /var/log/cron.log 的內容,

可以看到剛剛編輯 cron job 的這個動作 (crontab -e) 有被記錄下來,

因此出現了 REPLACE, END EDIT, RELOAD 這三行,

而最後被執行到時,也出現了 CMD 那一行,

這樣就能確認 open_urmoney.sh 有被執行到了:

Sep  5 11:09:36 localhost crontab[15323]: (testuser) REPLACE (testuser)
Sep  5 11:09:36 localhost crontab[15323]: (testuser) END EDIT (testuser)
Sep  5 11:10:00 localhost /usr/sbin/cron[214]: (testuser) RELOAD (tabs/testuser)
Sep  5 11:10:00 localhost /usr/sbin/cron[15381]: (testuser) CMD (~/open_urmoney.sh)

 

這個開啟 cron job 的 log 的功能真的是相當有用喔~^^

 

(本頁面已被瀏覽過 690 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料