其實大部分系統管理工作都是通過定期自動執行某個腳本來完成的,那么如何定期執行某個腳本呢?這就要借助Linux的cron功能了。這部分內容很重要,請大家牢記!
14.5.1命令crontab
Linux任務計劃功能的操作都是通過crontab命令來完成的,其常用的選項有以下幾個。
-u:表示指定某個用戶,不加-u選項則為當前用戶。
-e:表示制定計劃任務。
-l:表示列出計劃任務。
-r:表示刪除計劃任務。
下面請跟著阿銘來創建第一個任務計劃,如下所示:
# crontab -e no crontab for root - using an empty one這里使用crontab -e來編寫任務計劃,這實際上是使用vim工具打開了crontab的配置文件,我們寫下如下內容:
01 10 05 06 3 echo "ok" > /root/cron.log這里每個字段的數字分別表示什么呢?從左到右依次為:分、時、日、月、周和命令行。上例表示在6月5日(這一天必須是星期三)的10點01分執行命令:
echo "ok" > /root/cron.log。命令crontab -e實際上是打開了/var/spool/cron/username文件(如果用戶是root,則打開的是/var/spool/cron/root)。
打開這個文件使用了vim編輯器,所以保存時在命令行模式下輸入:wq即可。但是請千萬不要直接去編輯那個文件,否則會出錯,所以一定要使用命令crontab -e來編輯。
查看已經設定的任務計劃使用crontab -l命令,如下所示:
# crontab -l 01 10 05 06 3 echo "ok" > /root/cron.log刪除任務計劃要使用crontab -r命令,這個刪除選項最好還是少用,因為它會一下子把全部計劃都刪除掉。如果你想只刪除一條計劃,可以使用-e選項進入crontab進行編輯。-r選項用法如下所示:
# crontab -r # crontab -l no crontab for root14.5.2cron練習題
Cron的內容不算太難,但需要你牢固掌握。下面阿銘給出一些練習題,幫助你熟悉cron的應用。
每天凌晨1點20分清除/var/log/slow.log這個文件。
每周日3點執行/bin/sh /usr/local/sbin/backup.sh。
每月14日4點10分執行/bin/sh /usr/local/sbin/backup_month.sh。
每隔8小時執行ntpdate time.windows.com。
每天的1點、12點和18點執行/bin/sh /usr/local/sbin/test.sh。
每天的9點到18點執行/bin/sh /usr/local/sbin/test2.sh。
下面是以上習題的答案,僅作參考。
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練習完上面的題目,你可能會有一些小疑問。這里要簡單說明一下,每隔8小時就是用全部小時(0~23)去除以8,結果算出來應該是0、8和16這3個數。
當遇到多個數(分鐘、小時、月、周)時,則需要用逗號隔開,比如第5題中的1,12,18。時間段是可以用n-m的方式表示的,比如第6題中的9-18。
設置好了所有的任務計劃后,我們需要查看一下crond服務是否已經啟動,如下所示:
# 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那行,如果是啟動狀態顯示為active(running),未啟動則顯示為inactive (dead)。
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
594瀏覽量
27420
發布評論請先 登錄
相關推薦
評論