其實(shí)大部分系統(tǒng)管理工作都是通過(guò)定期自動(dòng)執(zhí)行某個(gè)腳本來(lái)完成的,那么如何定期執(zhí)行某個(gè)腳本呢?這就要借助Linux的cron功能了。這部分內(nèi)容很重要,請(qǐng)大家牢記!
14.5.1命令crontab
Linux任務(wù)計(jì)劃功能的操作都是通過(guò)crontab命令來(lái)完成的,其常用的選項(xiàng)有以下幾個(gè)。
-u:表示指定某個(gè)用戶,不加-u選項(xiàng)則為當(dāng)前用戶。
-e:表示制定計(jì)劃任務(wù)。
-l:表示列出計(jì)劃任務(wù)。
-r:表示刪除計(jì)劃任務(wù)。
下面請(qǐng)跟著阿銘來(lái)創(chuàng)建第一個(gè)任務(wù)計(jì)劃,如下所示:
# crontab -e no crontab for root - using an empty one這里使用crontab -e來(lái)編寫(xiě)任務(wù)計(jì)劃,這實(shí)際上是使用vim工具打開(kāi)了crontab的配置文件,我們寫(xiě)下如下內(nèi)容:
01 10 05 06 3 echo "ok" > /root/cron.log這里每個(gè)字段的數(shù)字分別表示什么呢?從左到右依次為:分、時(shí)、日、月、周和命令行。上例表示在6月5日(這一天必須是星期三)的10點(diǎn)01分執(zhí)行命令:
echo "ok" > /root/cron.log。命令crontab -e實(shí)際上是打開(kāi)了/var/spool/cron/username文件(如果用戶是root,則打開(kāi)的是/var/spool/cron/root)。
打開(kāi)這個(gè)文件使用了vim編輯器,所以保存時(shí)在命令行模式下輸入:wq即可。但是請(qǐng)千萬(wàn)不要直接去編輯那個(gè)文件,否則會(huì)出錯(cuò),所以一定要使用命令crontab -e來(lái)編輯。
查看已經(jīng)設(shè)定的任務(wù)計(jì)劃使用crontab -l命令,如下所示:
# crontab -l 01 10 05 06 3 echo "ok" > /root/cron.log刪除任務(wù)計(jì)劃要使用crontab -r命令,這個(gè)刪除選項(xiàng)最好還是少用,因?yàn)樗鼤?huì)一下子把全部計(jì)劃都刪除掉。如果你想只刪除一條計(jì)劃,可以使用-e選項(xiàng)進(jìn)入crontab進(jìn)行編輯。-r選項(xiàng)用法如下所示:
# crontab -r # crontab -l no crontab for root14.5.2cron練習(xí)題
Cron的內(nèi)容不算太難,但需要你牢固掌握。下面阿銘給出一些練習(xí)題,幫助你熟悉cron的應(yīng)用。
每天凌晨1點(diǎn)20分清除/var/log/slow.log這個(gè)文件。
每周日3點(diǎn)執(zhí)行/bin/sh /usr/local/sbin/backup.sh。
每月14日4點(diǎn)10分執(zhí)行/bin/sh /usr/local/sbin/backup_month.sh。
每隔8小時(shí)執(zhí)行ntpdate time.windows.com。
每天的1點(diǎn)、12點(diǎn)和18點(diǎn)執(zhí)行/bin/sh /usr/local/sbin/test.sh。
每天的9點(diǎn)到18點(diǎn)執(zhí)行/bin/sh /usr/local/sbin/test2.sh。
下面是以上習(xí)題的答案,僅作參考。
201***echo"">/var/log/slow.log 03**0/bin/sh/usr/local/sbin/backup.sh 10414**/bin/sh/usr/local/sbin/backup_month.sh 0*/8***ntpdatetime.windows.com 01,12,18***/bin/sh/usr/local/sbin/test.sh 09-18***/bin/sh/usr/local/sbin/test2.sh練習(xí)完上面的題目,你可能會(huì)有一些小疑問(wèn)。這里要簡(jiǎn)單說(shuō)明一下,每隔8小時(shí)就是用全部小時(shí)(0~23)去除以8,結(jié)果算出來(lái)應(yīng)該是0、8和16這3個(gè)數(shù)。
當(dāng)遇到多個(gè)數(shù)(分鐘、小時(shí)、月、周)時(shí),則需要用逗號(hào)隔開(kāi),比如第5題中的1,12,18。時(shí)間段是可以用n-m的方式表示的,比如第6題中的9-18。
設(shè)置好了所有的任務(wù)計(jì)劃后,我們需要查看一下crond服務(wù)是否已經(jīng)啟動(dòng),如下所示:
# systemctl status crond ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-26 1517 CST; 1h 22min ago Main PID: 820 (crond) Tasks: 1 (limit: 11353) Memory: 1.9M CGroup: /system.slice/crond.service └─820 /usr/sbin/crond -n 6月 26 1517 aminglinux-123 systemd[1]: Started Command Scheduler. 6月 26 1517 aminglinux-123 crond[820]: (CRON) STARTUP (1.5.2) 6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (Syslog will be used instead of sendmail.) 6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.) 6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (running with inotify support) 6月 26 1601 aminglinux-123 CROND[2042]: (root) CMD (run-parts /etc/cron.hourly) 6月 26 1701 aminglinux-123 CROND[4032]: (root) CMD (run-parts /etc/cron.hourly)看Active那行,如果是啟動(dòng)狀態(tài)顯示為active(running),未啟動(dòng)則顯示為inactive (dead)。
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
605瀏覽量
28625
發(fā)布評(píng)論請(qǐng)先 登錄
Linux中執(zhí)行shell腳本的兩種方式

shell腳本編寫(xiě)之本地腳本的編寫(xiě)和執(zhí)行
Android開(kāi)機(jī)執(zhí)行shell腳本
如何在 IIS 中執(zhí)行 Python 腳本
如何創(chuàng)建和執(zhí)行一個(gè)簡(jiǎn)單的Linux shell腳本
如何使用redis實(shí)現(xiàn)分布式鎖的lua腳本出現(xiàn)和資料說(shuō)明
虛擬機(jī):Bash Shell腳本打印出執(zhí)行的命令
如何使用符號(hào)執(zhí)行的python實(shí)現(xiàn)攻擊腳本分析平臺(tái)

為什么shell腳本中執(zhí)行命令要加exec?這個(gè)exec有什么作用呢?

評(píng)論