ubuntu下創建定時任務的兩種方式及常見問題解決方案


創建定時任務的目的就是擺脫人為對程序重復性地運行。

0. 首先用下面的指令檢查你是否安裝crontab,

crontab -l
如果本身就有的話,那么出現如下指令
LC_CTYPE="zh_CN.utf-8" # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

如果沒有的話按下面的方式進行安裝

apt-get install cron
方式有下面兩種:

1.crontab -e指令

直接在終端輸入crontab -e,進入nano編輯器的編輯界面,它相對vi,vim編輯器來說更友好,簡單。
# For more information see the manual pages of crontab(5) and cron(8) #  # m h dom mon dow command
  7 15 * * * /usr/bin/python2.7 /home/mabo/Desktop/camera.py
需要注意一行的前面如果希望它執行的話,是不可以有#號的
m h dom mon dow command 分別是(minute; hour; day of month; month; day of week)的縮寫

minute: 表示分鍾,可以是從0到59之間的任何整數。

hour:表示小時,可以是從0到23之間的任何整數。

day:表示日期,可以是從1到31之間的任何整數。

month:表示月份,可以是從1到12之間的任何整數。

week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。

command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件

[Note]:需要注意的是在編寫command指令之前要在終端進行測試是否能夠執行。后面會具體說

 

星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。

逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”。

中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”。

正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鍾執行一次。

 

2.用編輯器打開 /etc/crontab

二選一即可
sudo nano /etc/crontab
sudo vi /etc/crontab
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
17 16   * * *   mabo    /usr/bin/python2.7 /home/mabo/Desktop/camera.py

打開之后如上圖所示,最下面的一行是我自己寫的定時任務。這里與第一種方法有個不同的是這個用戶(user)級別的問題。

 

常見問題:

Q:定時任務不執行?

A:  遇到這種情況首先應該檢查程序是否有問題,你可能會想,在pycharm中運行的都沒有問題,但是現在你用的是IDE,所以你需要將上述的command指令全部復制到終端上,看是否運行成功,不是的話根據提示來解決問題,直到運行沒有問題。

上面的方法已經能夠解決很大一部分問題了,在排除了程序中的錯誤之后,如果你使用的是第二種方法,那么你可以將root修改為你的普通用戶,重新執行。

 

Q:定時任務常用相關指令?

A:

crontab -l              //查看設置的所有定時任務
service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務

 

Q:怎么查看我的定時任務執行情況?

A:

下面二選一即可
sudo nano /var/log/cron.log
sudo vi /var/log/cron.log

在日志里,你可以看到你所設置的定時任務的運行情況。經過多次實踐發現,正常的運行時,在日志里面只會出現和你command指令相同的指令,有其它多余的指令都會導致定時任務失敗。根據這多余的指令來排除錯誤
















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM