ubuntu使用crontab啟動定時任務
Ubuntu cron 定時執行任務
https://blog.csdn.net/qq_38228830/article/details/80545004
參考以上兩篇博客,經過實踐完成自己的定時任務
crontab命令
crontab 命令用於安裝、刪除或者列出用於驅動cron後臺進程的表格。也就是說,用戶把需要執行的命令序列放到crontab文件中以獲得執行,每個用戶都可以有自己的crontab文件。以下是這個命令的一些參數與說明:
1)crontab -u /*設定某個用戶的cron服務*/
2)crontab -l /*列出某個用戶cron服務的詳細內容*/
3)crontab -r /*刪除某個用戶的cron服務*/
4)crontab -e /*編輯某個用戶的cron服務*/
參數名稱 含義 示例
-l 顯示用戶的Crontab文件的內容 crontabl –l
-i 刪除用戶的Crontab文件前給提示 crontabl -ri
-r 從Crontab目錄中刪除用戶的Crontab文件 crontabl -r
-e 編輯用戶的Crontab文件 crontabl -e
/etc/crontab文件語法如下:
Minute Hour Day Month Dayofweek command
分鐘 小時 天 月 天每星期 命令
每個字段代表的含義及取值範圍如下:
Minute :分鐘(0-59),表示每個小時的第幾分鐘執行該任務
Hour : 小時(1-23),表示每天的第幾個小時執行該任務
Day : 日期(1-31),表示每月的第幾天執行該任務
Month : 月份(1-12),表示每年的第幾個月執行該任務
DayOfWeek : 星期(0-6,0代表星期天),表示每周的第幾天執行該任務
Command : 指定要執行的命令(如果要執行的命令太多,可以把這些命令寫到一個腳本裏面,然後在這裏直接調用這個腳本就可以了,調用的時候記得寫出命令的完整路徑)
在這些字段裏,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選字段,可視需要決定。對於不指定的字段,要用“*”來填補其位置。同時,cron支持類似正則表達式的書寫,支持如下幾個特殊符號定義:
“*” ,代表所有的取值範圍內的數字;
“/” , 代表”每”(“*/5”,表示每5個單位);
“-” , 代表從某個數字到某個數字(“1-4”,表示1-4個單位);
“,” ,分開幾個離散的數字;
舉例如下:
5 * * * * ls /*指定每小時的第5分鐘執行一次ls命令*/
30 5 * * * ls /*指定每天的 5:30 執行ls命令*/
30 7 8 * * ls /*指定每月8號的7:30分執行ls命令*/
50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件*/
新增 cron 任務
1.執行如下命令添加任務
# crontab -e
2. 重啟cron 服務# service cron restart
總結:
linux中將一個腳本文件作為一個計劃任務小結,以python腳本為例:
1 創建腳本文件test.py,在文件開頭需要加上下面一行
#!/usr/bin/python
上面這行的作用是說明使用那個解釋器來執行該文件,如果不知道python解釋器在哪,可以使用命令which python來查看
2 給該文件添加可執行的權限
chmod +x test.py
3 添加計劃任務
crontab -e
在文件中追加一行,*/2 * * * * /usr/bin/python /home/pc/work/ENV/project/test.py
保存退出,:wq
4 重啟cron服務
service cron restart
結束
執行報錯
ubuntu@ip-XXX:/var/log$ service cron restart ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to restart ‘cron.service‘. Authenticating as: Ubuntu (ubuntu) Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED === Failed to restart cron.service: Access denied See system logs and ‘systemctl status cron.service‘ for details.View Code
權限不足
sudo service cron restart
ubuntu使用crontab啟動定時任務