關(guān)于crontab定時任務(wù)命令解讀
一、crontab概述
crontab:
是一個用于管理、編輯和查詢用戶定時任務(wù)的命令行工具。通過 crontab 命令,用戶可以添加、修改、刪除和列出定時任務(wù),以實現(xiàn)自動化執(zhí)行特定任務(wù)。cron:
是一個在后臺運行的系統(tǒng)服務(wù),負(fù)責(zé)按照預(yù)設(shè)時間規(guī)則來執(zhí)行指定的定時任務(wù)。cron 守護進程會在任務(wù)所指定的時間到達時自動執(zhí)行相應(yīng)的命令或腳本文件,并將執(zhí)行結(jié)果記錄在日志文件中。
因此,crontab 主要用于管理和維護定時任務(wù)的配置信息,而 cron 則負(fù)責(zé)實際執(zhí)行這些定時任務(wù)。
需要注意的是,在某些 Linux 發(fā)行版中,cron 和 crontab 可能被打包成同一個軟件包,并且往往默認(rèn)安裝在系統(tǒng)中。
因此,在使用 crontab 命令之前,建議先確認(rèn)系統(tǒng)是否安裝了 cron 服務(wù)。
總之,cron 和 crontab 都是用于管理和維護定時任務(wù)的重要工具和服務(wù),它們的作用互補且不可替代。
二、crontab安裝
yum install cronie
三、crontab常用操作命令
1.啟動、關(guān)閉以及狀態(tài)查看
# 狀態(tài)查看 systemctl status crond # 啟動 systemctl start crond # 關(guān)閉 systemctl stop crond # 重啟 systemctl restart crond
2.列出當(dāng)前用戶的所有定時任務(wù)
crontab -l
3.編輯當(dāng)前用戶的定時任務(wù)
crontab -e
運行上述命令后,會打開一個文本編輯器,可以在其中輸入要執(zhí)行的命令和時間規(guī)則。
格式如下:
* * * * * command
其中,五個星號分別表示分鐘、小時、日、月、周幾,command 表示要執(zhí)行的命令或腳本文件路徑。
例如,以下是每天凌晨 3 點執(zhí)行 /backup.sh 腳本的定時任務(wù)配置:
0 3 * * * /backup.sh
4.刪除當(dāng)前用戶的所有定時任務(wù)
crontab -r
5.查看幫助信息
crontab -h
需要注意的是,crontab 命令只適用于當(dāng)前用戶。
如果需要編輯其他用戶的定時任務(wù),需要使用 root 權(quán)限。
可以使用以下命令來切換到 root 用戶,并編輯指定用戶的定時任務(wù):
su - crontab -u username -e
其中,username 表示要編輯定時任務(wù)的用戶名。
總之,在 CentOS 中,可以使用 crontab 命令來添加、修改和刪除定時任務(wù)。
可以使用 crontab -e 命令編輯當(dāng)前用戶的定時任務(wù),crontab -u username -e 命令編輯其他用戶的定時任務(wù),并且可以使用 crontab -l 和 crontab -r 命令查看當(dāng)前用戶的定時任務(wù)列表和刪除所有定時任務(wù)。
四、添加定時任務(wù)
在 Linux 系統(tǒng)中,可以使用兩種方法來新增調(diào)度任務(wù):
1. 使用 crontab -e 命令
可以使用 crontab 命令來添加、編輯和刪除當(dāng)前用戶的定時任務(wù)。具體步驟如下:
- 運行命令
crontab -e
,進入 crontab 編輯器; - 在編輯器中添加要執(zhí)行的任務(wù),例如:
* * * * * echo "hello world" >> /home/tmp.txt
; - 保存并退出編輯器,此時新增的定時任務(wù)就會生效。
需要注意的是,crontab 命令只能用于當(dāng)前登錄用戶的定時任務(wù)管理。
2. 直接編輯 /etc/crontab 文件
可以直接編輯 /etc/crontab 文件來新增系統(tǒng)級別的定時任務(wù)。具體步驟如下:
- 使用 root 權(quán)限運行命令
vi /etc/crontab
,打開 /etc/crontab 文件; - 在文件末尾添加要執(zhí)行的任務(wù),例如:
* * * * * root echo "hello world" >> /home/tmp.txt
;必須指定用戶,要不然不執(zhí)行 - 保存并關(guān)閉文件,此時新增的定時任務(wù)就會生效。
需要注意的是,直接編輯 /etc/crontab 文件新增的定時任務(wù)是針對系統(tǒng)級別的,可以被所有用戶共享。同時,如果需要修改或刪除該任務(wù),也需要使用 root 權(quán)限進行操作。
無論是使用 crontab 命令還是直接編輯 /etc/crontab 文件,都需要設(shè)置正確的時間規(guī)則和要執(zhí)行的命令。同時,還需要注意文件的格式和編碼方式,避免出現(xiàn)語法錯誤或者亂碼等問題。
以上兩種方式都無需重啟或加載,直接生效
注意:當(dāng)程序在你所指定的時間執(zhí)行后,系統(tǒng)會發(fā)一封郵件給當(dāng)前的用戶,顯示該程序執(zhí)行的內(nèi)容,若是你不希望收到這樣的郵件,請在每一行空一格之后加上 > /dev/null 2>&1
即可,如:
`* * * * * root echo "hello world" >> /home/tmp.txt > /dev/null 2>&1`
五、時間格式詳解
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
時間格式如下:
t1 t2 t3 t4 t5 program
其中 t1 是表示分鐘,t2 表示小時,t3 表示一個月份中的第幾日,t4 表示月份,t5 表示一個星期中的第幾天。program 表示要執(zhí)行的程序。
- 當(dāng) t1 為 * 時表示每分鐘都要執(zhí)行 program,t2 為 * 時表示每小時都要執(zhí)行程序,其余類推
- 當(dāng) t1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內(nèi)要執(zhí)行,t2 為 a-b 時表示從第 a 到第 b 小時都要執(zhí)行,其余類推
- 當(dāng) t1 為 */n 時表示每 n 分鐘個時間間隔執(zhí)行一次,t2 為 */n 表示每 n 小時個時間間隔執(zhí)行一次,其余類推
- 當(dāng) t1 為 a, b, c,… 時表示第 a, b, c,… 分鐘要執(zhí)行,t2 為 a, b, c,… 時表示第 a, b, c…個小時要執(zhí)行,其余類推
示例如下:
// 每月最后一天定時執(zhí)行一次 0 0 L * * // 每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執(zhí)行 echo "hello world": 20 0-23/2 * * * echo "hello world"
六、使用異常記錄
1./etc/crontab方式添加的定時任務(wù)不執(zhí)行
# 不執(zhí)行 * * * * * echo "hello world" >> /home/tmp.txt; # 執(zhí)行 必須指定用戶 * * * * * root echo "hello world" >> /home/tmp.txt;
2.如果我們使用 crontab 來定時執(zhí)行腳本,無法執(zhí)行,但是如果直接通過命令(如:./test.sh)又可以正常執(zhí)行,這主要是因為無法讀取環(huán)境變量的原因。
- 所有命令需要寫成絕對路徑形式,如: /usr/local/bin/docker。
- 在 shell 腳本開頭使用以下代碼:
#!/bin/sh . /etc/profile . ~/.bash_profile
- 在 /etc/crontab 中添加環(huán)境變量,在可執(zhí)行命令之前添加命令 . /etc/profile;/bin/sh,使得環(huán)境變量生效,例如:
20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Yum安裝中出現(xiàn)錯誤mirrorlist.txt的解決方法
前幾天在使用Yum install命令安裝軟件的時候一直提示一個mirrorlist.txt錯誤,通過查找相關(guān)的資料現(xiàn)在找到了解決的方法,所以這篇文章就整理出來和大家分享一下,有同樣遇到這個問題的朋友們可以參考借鑒下。2016-10-10Linux服務(wù)器tomact 8.0啟動慢的完美解決方法
這篇文章主要介紹了Linux服務(wù)器tomact 8.0啟動慢的完美解決方法,需要的朋友可以參考下2017-08-08Ubuntu 12.04 64位 對Python 源代碼編譯詳解
這篇文章主要介紹了Ubuntu 12.04 64位 對Python 源代碼編譯的相關(guān)資料,需要的朋友可以參考下2017-01-01Linux基礎(chǔ):如何找出你的系統(tǒng)所支持的最大內(nèi)存
這篇文章主要介紹了Linux基礎(chǔ):如何找出你的系統(tǒng)所支持的最大內(nèi)存,需要的朋友可以參考下2015-04-04xshell5使用ssh連接阿里云服務(wù)器的實現(xiàn)步驟
本文主要介紹了xshell5使用ssh連接阿里云服務(wù)器的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08