1. 程式人生 > >Linux——定時服務與自啟動

Linux——定時服務與自啟動

crontab命令

crontab命令用於設定週期性被執行的指令
該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。
cron 系統排程程序
cron是系統主要的排程程序,可以在定時執行一些任務。
crontab命令允許使用者提交、編輯或刪除相應的任務。每一個使用者都可以有一個crontab檔案來儲存排程資訊。系統管理員可以通過cron.deny 和 cron.allow 這兩個檔案來禁止或允許使用者擁有自己的crontab檔案。

crontab服務啟動與關閉。


sudo /etc/init.d/crond start # 啟動服務
sudo /etc/init.d/crond stop # 關閉服務
sudo /etc/init.d/crond restart # 重啟服務
sudo /etc/init.d/crond reload # 重新載入配置

crontab常用命令

crontab -u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數
crontab -l //列出某個使用者cron服務的詳細內容
crontab -r //刪除沒個使用者的cron服務
crontab -e //編輯某個使用者的cron服務

全域性配置檔案:

crontab在/etc目錄下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五個目錄和crontab,cron.deny二個檔案。

  • cron.daily 每天執行一次的 job
    • cron.weekly 是星期執行一次的job
    • cron.monthly 是每月執行一次的job
    • cron.d 是系統自動定期需要做的任務
    • crontab 是設定定時任務執行檔案
    • cron.deny 檔案就是用於控制不讓哪些使用者使用 crontab的功能
使用者配置檔案:

每個使用者都有自己的cron配置檔案,通過crontab -e 就可以編輯,一般情況下我們編輯好使用者的cron配置檔案儲存退出後,系統會自動就存放於/var/spool/cron/目錄中,檔案以使用者名稱命名.linux的cron服務是每隔一分鐘去讀取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的內容.

crontab檔案格式:
* * * * * command
minute hour day month week command
命令

minute: 表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。

特殊字元:

星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”。
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”。
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。(直接 * 表示每秒執行一次)

如每分鐘向 test.txt 檔案寫入一個字串
crontab -e 進入編輯模式
# cron
* * * * * echo "你好" >> test.txt
# test.txt 為包含路徑的檔名,並具有相應的讀寫許可權

編寫好後,儲存退出。可以使用 crontab -l 來檢視任務

設定開機啟動任務

方法一:使用 corntab 設定(重要啟動任務不建議此方法)

將 時間引數 替換為 @reboot 就行

方法二:使用 rc.local

該檔案存在 /etc 目錄下,如果沒有就新建

#! /bin/bash -e
# rc.local
command # 這裡寫需要執行的命令或指令碼
exit 0

設定檔案許可權 sudo chmod +x rc.local