iT邦幫忙

0

排程的應用

  • 分享至 

  • xImage

這是在Centos6想透過cronjob來做排程,而我的排程語法如下

而我測試使用/root/moodle-cron.sh 可以正常執行,推測不是/root/moodle-cron.sh的問題,但我看書上排程的方式,應該沒有錯,但不確定為什麼不會執行?煩請大家指點迷津
謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
weiclin
iT邦高手 4 級 ‧ 2015-02-04 23:19:07
最佳解答

改成這樣:

<pre class="c" name="code">*/1 * * * * root /root/moodle-cron.sh > /var/log/moodle-cron.log 2>&1

然後過一分鐘後去看 /var/log/moodle-cron.log 寫了啥

另外這是 /etc/crontab 或是 /etc/cron.d 裡面用的語法
也要確認你不是用 crontab -e 這個指令去編輯, 不然格式有點差別

看更多先前的回應...收起先前的回應...
ektrontek iT邦研究生 1 級 ‧ 2015-02-05 07:14:00 檢舉

我的確是用crontab -u apache -e 來編輯的,會有格式上的差異嗎?謝謝

weiclin iT邦高手 4 級 ‧ 2015-02-05 09:27:50 檢舉

格式的差別在於那個 "root", 用 crontab -e 編輯的話就不能加
crontab -e 編輯的是 user 層級的 cronjob, 所以它已經有綁定使用者了
所以你的 "root" 會被當成一個指令, 結果就是找不到這個指令

/etc/crontab 或是 /etc/cron.d 裡面放的是系統層級的 cronjob
這裡面的才需要加上使用者帳號

weiclin iT邦高手 4 級 ‧ 2015-02-05 09:28:09 檢舉
ektrontek iT邦研究生 1 級 ‧ 2015-02-05 20:48:21 檢舉

weiclin提到:
crontab -e

使用這個方式,加上*/1 * * * * /root/moodle-cron.sh > /var/log/moodle-cron.log

這裡有個問題想與大家討論,cronjob執行頻率太高,會影響到主機效能嗎?謝謝

weiclin iT邦高手 4 級 ‧ 2015-02-05 22:01:23 檢舉

你少了 2>&1, 這樣 log 會少了錯誤訊息喔
頻率太高也要看你跑了什麼東西, 不到一秒跑完是沒差
如果 script 有可能跑超過一分鐘的話, script 裡面還要加上避免 race condition 的功能

4
wiseguy
iT邦超人 1 級 ‧ 2015-02-04 23:30:42

你從 FreeBSD 抄來的嗎?CentOS 不需要加身份吧?請把前面那個 root 拿掉,並且確定 /root/moodle-cron.sh 的屬性是 0700。

<pre class="c" name="code">*/1 * * * * /root/moodle-cron.sh > /var/log/moodle-cron.log 2>&1

<pre class="c" name="code">*/1 * * * * /bin/bash /root/moodle-cron.sh > /var/log/moodle-cron.log 2>&1

我要發表回答

立即登入回答