crond是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務相似,當安裝完成操做系統後,默認會安裝此服務工具,而且會自動啓動crond進程,crond進程每分鐘會按期檢查是否有要執行的任務,若是有要執行的任務,則自動執行該任務html
usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] -e (執行文字編輯器來設定時程表,內定的文字編輯器是 vi) -l (列出user的時間表) -r (刪除user的時間表)
root用戶的任務調度操做能夠經過crontab –u root –e
來設置,也能夠將調度任務直接寫入/etc/crontab
文件python
cron表達式是一個字符串,包含五個到七個由空格分隔的字段,表示一組時間,一般做爲執行某個程序的時間表linux
minute hour day month week commandwindows
minute: 表示分鐘,能夠是從0到59之間的任何整數安全
hour:表示小時,能夠是從0到23之間的任何整數bash
day:表示日期,能夠是從1到31之間的任何整數ssh
month:表示月份,能夠是從1到12之間的任何整數編輯器
week:表示星期幾,能夠是從0到7之間的任何整數,這裏的0或7表明星期日工具
command:要執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件操作系統
* * * * * command - - - - - | | | | | | | | | +----- 星期中星期幾 (0 - 7) (星期天 爲0) | | | +---------- 月份 (1 - 12) | | +--------------- 一個月中的第幾天 (1 - 31) | +-------------------- 小時 (0 - 23) +------------------------- 分鐘 (0 - 59)
星號(*):表明全部可能的值,如month字段爲星號,則表示每個月都執行該命令操做
逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「*/2」表示每兩小時執行一次
* * * * * /bin/ls
/usr/bin/backup
0 6-12/3 * 12 * /usr/bin/backup
50 22 * * * /sbin/service sshd stop
/etc/crontab
中添加環境變量,在可執行命令以前添加命令 . /etc/profile;/bin/sh
,使得環境變量生效20 03 * * * . /etc/profile;/bin/sh test.sh
我有一個Python爬蟲腳本,在命令行時能夠正常工做,但在crontab下報錯
can't open file ... [Errno 1] Operation not permitted
cron表達式以下
30 7 * * * /usr/local/bin/python3 script.py >> script.log 2>&1
嘗試了許多不一樣的方法,包括嘗試過賦予文件權限,以root用戶身份建立cron做業,不一樣的Python路徑,都不能正常運行
最後在Stack Overflow找到解決方案
賦予cron
全磁盤訪問權限,方法以下
/ usr / sbin
cron
添加Trying to run a Python script with cron Operation not permitted