linux定時(shí)任務(wù)進(jìn)程是否存在,并添加定時(shí)任務(wù)
linux定時(shí)任務(wù)進(jìn)程是否存在,并添加定時(shí)任務(wù)
轉(zhuǎn)載自:https://www.cnblogs.com/wanghuaijun/p/7954822.html
一、定時(shí)任務(wù)簡(jiǎn)介
在LINUX中,周期執(zhí)行的任務(wù)一般由cron這個(gè)守護(hù)進(jìn)程來(lái)處理[ps -ef|grep cron]。cron讀取一個(gè)或多個(gè)配置文件,這些配置文件中包含了命令行及其調(diào)用時(shí)間。
cron的配置文件稱為“crontab”,是“cron table”的簡(jiǎn)寫(xiě)。
下面簡(jiǎn)單說(shuō)一下crontab的相關(guān)內(nèi)容。
Linux下的任務(wù)調(diào)度分為兩類:系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫(xiě)緩存數(shù)據(jù)到硬盤(pán)、日志清理等。在/etc目錄下有一個(gè)crontab文件,這個(gè)就是系統(tǒng)任務(wù)調(diào)度的配置文件。
/etc/crontab文件包括下面幾行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
-----------------------------------------------------------------------------------------------------
前四行是用來(lái)配置crond任務(wù)運(yùn)行的環(huán)境變量,第一行SHELL變量指定了系統(tǒng)要使用哪個(gè)shell,這里是bash,第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑,第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過(guò)電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶,第四行的HOME變量指定了在執(zhí)行命令或者腳本時(shí)使用的主目錄。
用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時(shí)郵件提醒等。用戶可以使用 crontab 工具來(lái)定制自己的計(jì)劃任務(wù)。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者權(quán)限文件如下:
/etc/cron.deny 該文件中所列用戶不允許使用crontab命令
/etc/cron.allow 該文件中所列用戶允許使用crontab命令
/var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名
二、創(chuàng)建任務(wù)
crontab -e,然后就會(huì)有個(gè)vi編輯界面,再輸入一定格式的內(nèi)容到里面 :wq 保存退出,即創(chuàng)建一個(gè)定時(shí)任務(wù)。
該一定格式的內(nèi)容包括六個(gè)域,其中前五個(gè)域是指定命令被執(zhí)行的時(shí)間,最后一個(gè)域是要被執(zhí)行的命令。
每個(gè)域之間使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
對(duì)應(yīng)的合法值 00-59, 00-23 ,01-31, 01-12 ,0-6 (0 is sunday), commands(代表要執(zhí)行的腳本)
除了數(shù)字還有幾個(gè)特殊的符號(hào)就是星號(hào)"*"、斜杠"/"、中劃線"-"、逗號(hào)","。
*代表所有的取值范圍內(nèi)的數(shù)字,
/代表每的意思,/5表示每5個(gè)單位,
-代表從某個(gè)數(shù)字到某個(gè)數(shù)字,
,分開(kāi)幾個(gè)離散的數(shù)字。
比如:0 0 * * * sh /home/sh/monitor.sh,每天凌晨0點(diǎn)0分執(zhí)行monitor.sh這個(gè)腳本。
三、crond服務(wù)相關(guān)命令
/sbin/service crond start //啟動(dòng)服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
/sbin/service crond status //查看服務(wù)狀態(tài)
查看crontab服務(wù)是否已設(shè)置為開(kāi)機(jī)啟動(dòng),執(zhí)行命令:ntsysv,此命令需要是root用戶。
加入開(kāi)機(jī)自動(dòng)啟動(dòng):chkconfig --level 5 crond on
之后查看:chkconfig --list|grep crond
四、監(jiān)聽(tīng)服務(wù)是否存在
上邊說(shuō)了定時(shí)任務(wù),每天固定時(shí)間執(zhí)行shell腳本,那么這個(gè)腳本我們可以寫(xiě)上監(jiān)聽(tīng)該服務(wù)進(jìn)程的內(nèi)容。
monitor.sh
這里以Taskctl相關(guān)服務(wù)為例:
#!/bin/sh
NOWTIME=$(date +%Y%m%d_%H%M%S)
ps -fe|grep emnls|grep -v grep
if [ $? -ne 0 ]
then
echo $NOWTIME" stopped.....">>/home/mars/checkprolog.txt
eminit
ctlinit
ctlstart
else
echo $NOWTIME " running....." >>/home/mars/checkprolog.txt
fi
shell的if else 語(yǔ)法以及大于,小于等邏輯表達(dá)式:
if ....
then
....
elif ....
then
....
else
....
fi
------------------------------------------------------------------------
大多數(shù)情況下,可以使用測(cè)試命令來(lái)對(duì)條件進(jìn)行測(cè)試。比如可以比較字符串、判斷文件是否存在及是否可讀等等… 通常用” [ ] “來(lái)表示條件測(cè)試。注意這里的空格很重要,要確保方括號(hào)的空格。
[ -f "somefile" ]:判斷是否是一個(gè)文件
[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執(zhí)行權(quán)限
[ -n "$var" ]:判斷$var變量是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等
對(duì)一個(gè)文件的判斷:
-r file 用戶可讀為真
-w file 用戶可寫(xiě)為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真 -c file 文件為字符特殊文件為真 -b file 文件為塊特殊文件為真 -s file 文件大小非0時(shí)為真 -t file 當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時(shí)為真
對(duì)于不含變量的任務(wù)簡(jiǎn)單shell腳本一般能勝任。但在執(zhí)行一些決策任務(wù)時(shí),就需要包含if/then的條件判斷了。shell腳本編程支持此類運(yùn)算,包括比較運(yùn)算、判斷文件是否存在等?;镜膇f條件命令選項(xiàng)有: - eq —比較兩個(gè)參數(shù)是否相等(例如,if [ 2 –eq 5 ])
-ne —比較兩個(gè)參數(shù)是否不相等
-lt —參數(shù)1是否小于參數(shù)2
-le —參數(shù)1是否小于等于參數(shù)2 -gt —參數(shù)1是否大于參數(shù)2 -ge —參數(shù)1是否大于等于參數(shù)2 -f — 檢查某文件是否存在(例如,if [ -f "filename" ]) -d — 檢查目錄是否存在
幾乎所有的判斷都可以用這些比較運(yùn)算符實(shí)現(xiàn)。腳本中常用-f命令選項(xiàng)在執(zhí)行某一文件之前檢查它是否存在。
Linux Unix 任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。