Linux之定時任務(wù)Crond詳解
定時任務(wù)Crond介紹
Crond是linux系統(tǒng)中用來定期執(zhí)行命令/腳本或指定程序任務(wù)的一種服務(wù)或軟件,一般情況下,我們安裝完Centos5/6 linux操作系統(tǒng)之后,默認便會啟動Crond任務(wù)調(diào)度服務(wù)。
Crond服務(wù)會定期(默認每分鐘檢查一次)檢查系統(tǒng)中是否有要執(zhí)行的任務(wù)工作,如果有,便會根據(jù)其預(yù)先設(shè)定的定時任務(wù)規(guī)則自動執(zhí)行該定時任務(wù)工作,這個crond定時任務(wù)服務(wù)就相當于我們平時早起使用的鬧鐘一樣。
必須保留的啟動服務(wù):
- crond:定時任務(wù)服務(wù)
- network:網(wǎng)絡(luò)服務(wù)
- rsyslog:日志服務(wù)
- sshd:遠程鏈接服務(wù)
- sysstat:系統(tǒng)監(jiān)控服務(wù)(涉及一系列監(jiān)控工具)
為什么要使用定時任務(wù)呢?
我們舉個例子說明:例如,我們的數(shù)據(jù)庫或者代碼程序需要每天晚上0點做一次全備份,這樣每天夜里都需要執(zhí)行的周期性工作,如果要讓人操作的話,就得每天半夜爬起來,然后登錄系統(tǒng)執(zhí)行任務(wù),執(zhí)行完接著睡覺。另外,執(zhí)行任務(wù)的過程也可能持續(xù)幾個小時,這樣一來,一個晚上我們就都不用睡覺了,這樣顯然是不行的。那么有什么辦法來解決這個周期性的執(zhí)行任務(wù)需求呢?
這就是linux系統(tǒng)的定時任務(wù)Crond,這相當于我們平時生活中的鬧鐘功能,每天晚上提前設(shè)置定時,早晨按時叫醒你。
ls -l /var/log/messages* #系統(tǒng)的日志 ls -l /var/log/secure* #用戶登錄日志
用戶執(zhí)行的任務(wù)工作:某個用戶或系統(tǒng)管理員定期要做的任務(wù)工作,例如每隔5分鐘和互聯(lián)網(wǎng)上時間服務(wù)器進行時間同步(這是安裝系統(tǒng)基礎(chǔ)優(yōu)化部分的內(nèi)容),每天晚上0點備份網(wǎng)站站點數(shù)據(jù)及數(shù)據(jù)庫數(shù)據(jù),一般這些工作需要由每個運維自行設(shè)置才行。
服務(wù)器時間同步
echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root
可通過上面的命令設(shè)置每5分鐘執(zhí)行一次。每次將互聯(lián)網(wǎng)時間同步到本地Linux系統(tǒng)。
crontab -l 查看當前用戶的定時任務(wù)配置。*號 下面會詳講~~
time.nist.gov是NTP服務(wù)器地址 time.windows.com,微軟自家的時間服務(wù)器?!「嗾垍⒖?==> 國內(nèi)常用NTP服務(wù)器地址及IP

crontab(命令):正如前面所說的這個命令可以周期性的執(zhí)行任務(wù)工作,例如:每五分鐘做一次服務(wù)器時間同步。要執(zhí)行crontab這個命令,也需要啟動一個服務(wù)crond才行。這個crontab命令是生產(chǎn)工作中最常用到的命令,請大家務(wù)必掌握。
1、開機自啟動crond服務(wù)

2、此時此刻服務(wù)的狀態(tài)(查看,開啟,關(guān)閉)

3、如何查看進程
ps -ef | grep crond

小結(jié)提示:
- 我們所說的crond服務(wù)是運行的程序,而crontab是用來管理用戶的定時任務(wù)(規(guī)則)的命令
- crond服務(wù)是企業(yè)生產(chǎn)工作中常用的重要服務(wù),at和anacron很少用,可以忽略
- 幾乎每個服務(wù)器都會用到crond服務(wù)
- 上千服務(wù)器可以開發(fā)分布式定時任務(wù)項目方案(批量管理ansible/saltstack)
定時任務(wù)Crond使用說明
[root@chengliang ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
[root@chengliang ~]#
- crontab -l 查看當前用戶的定時任務(wù)配置
- crontab -e 進入當前用戶的定時任務(wù)vim編輯模式
- crontab -u 用戶名 -l 查看指定用戶的定時任務(wù)設(shè)置

重點
通過crontab我們可以在固定的間隔時間執(zhí)行指定的系統(tǒng)指令或script腳本。時間間隔的單位可以是分鐘,小時,日,月,周及以上的任意組合(注意:日和周不要組合)。crond服務(wù)通過crontab命令可以很容易的實現(xiàn)周期性的日志分析或數(shù)據(jù)備份等企業(yè)運維場景工作

使用者權(quán)限及定時任務(wù)文件
| 文件 | 說明 |
|---|---|
| /etc/cron.deny(拒絕) | 該文件中所列用戶不允許使用crontab |
| /etc/cron.allow(允許) | 該文件優(yōu)先級高于cron.deny(默認不存在,一般不用) |
| /var/spool/cron/ | 所有用戶crontab配置文件默認都存在此目錄,文件名以用戶名命名 |
[root@chengliang ~]# cat /etc/cron.deny zcl [root@chengliang~]# su - zcl [chensiqi@chengliang~]$ crontab -l You (chensiqi) are not allowed to use this program (crontab) See crontab(1) for more information [zcl@chengliang~]$ crontab -e You (chensiqi) are not allowed to use this program (crontab) See crontab(1) for more information
crontab { -l | -e } 實際上就是在操作/var/spool/cron/當前用戶這樣的文件
默認情況下,當用戶建立定時任務(wù)規(guī)則后,該規(guī)則記錄對應(yīng)的配置文件會存在于/var/spool/cron中,其crontab配置文件對應(yīng)的文件名與登錄的用戶名一致,如:root用戶的定時任務(wù)配置文件為/var/spool/cron/root
[root@chengliang ~]# ls /var/spool/cron/ root #默認是沒有的,只有創(chuàng)建了定時任務(wù)才有 [root@chengliang ~]# cat /var/spool/cron/root */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
Crontab定時任務(wù)的書寫格式很簡單,用戶的定時任務(wù)規(guī)則一般分為6個段(每個段通過空格來分隔,系統(tǒng)的定時任務(wù)為/etc/crontab,分為7個段,空格來分隔),前五段為時間的設(shè)定段,第六段為所要執(zhí)行的命令或腳本任務(wù)段

用戶定時任務(wù)實例:
01 * * * * cmd #每小時的01分鐘執(zhí)行 02 04 * * * cmd #每天4點的02分鐘執(zhí)行 22 14 * * 00 cmd #每周日的14點22分執(zhí)行 42 04 01 * * cmd #每月1日的4點42分執(zhí)行
提示:
1、cmd為要執(zhí)行的命令或腳本,例如:/bin/sh /server/scripts/chensiqi.sh
2、每個列之間必須要有一個空格。多個空格可以么?自己實踐 ==> 經(jīng)我本人測試有多個空格也可以執(zhí)行!!
時間記憶口訣:分時日月周
crontab 語法格式中特殊符號含義如下表
| 特殊符號 | 含義 |
|---|---|
| * | *號,表示任意時間都,實際就是“每”的意思 |
| - | 減號表示分隔符,表示一個時間范圍,區(qū)間段,如17-19點,例如:每天的17,18,19點的00分執(zhí)行任務(wù)。00 17-19 * * * cmd |
| , | 逗號,表示分隔時段的意思例如每天的5點10點00分執(zhí)行任務(wù),00 5,10 * * * cmd |
| /n | n代表數(shù)字,即“每隔n單位時間”,例如:每10分鐘執(zhí)行一次任務(wù)可以寫成/*10 * * * * cmd,其中,/10,的范圍是0-59,因此也可以寫成0-59/10 |

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- linux如何利用crontab添加定時任務(wù)詳解
- Linux Crontab Shell腳本實現(xiàn)秒級定時任務(wù)的方法
- Linux定時任務(wù)Crontab命令使用詳解與總結(jié)
- linux定時任務(wù)crontab 實現(xiàn)每秒執(zhí)行一次的方法
- Linux中crontab定時任務(wù)不執(zhí)行的原因
- Linux定時任務(wù)Crontab的使用方法
- linux中定時任務(wù)crond命令使用方法
- Linux定時任務(wù)Crontab詳解(推薦)
- Linux crontab定時任務(wù)配置方法(詳解)
- linux服務(wù)器ubuntu定時任務(wù)cron設(shè)置每秒執(zhí)行
相關(guān)文章
Windows10使用Linux子系統(tǒng)實現(xiàn)輕松安裝多個linux
這篇文章主要為大家學(xué)習(xí)介紹了Windows10如何使用Linux子系統(tǒng)實現(xiàn)輕輕松松安裝多個linux,本文通過圖文為大家進行了詳細介紹,需要的可以收藏一下2023-08-08
Linux中無法遠程連接數(shù)據(jù)庫問題的解決方法
這篇文章主要給大家介紹了關(guān)于Linux中無法遠程連接數(shù)據(jù)庫問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
Ubuntu服務(wù)器下搭建php運行環(huán)境的方法
這篇文章主要介紹了Ubuntu服務(wù)器下搭建php運行環(huán)境的方法,簡單分析了Ubuntu操作系統(tǒng)環(huán)境下搭建Apache、php及mysql模塊相關(guān)步驟、命令與操作技巧,需要的朋友可以參考下2018-04-04
apache簡介_動力節(jié)點Java學(xué)院整理
本篇文章主要介紹apache簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
詳解Linux如何查看當前占用CPU或內(nèi)存最多的幾個進程
本篇文章主要介紹了詳解Linux如何查看當前占用CPU或內(nèi)存最多的幾個進程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

