日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Linux計劃任務介紹

作者:Nana8874 更新時間: 2022-07-30 編程語言

Linux的計劃任務是系統管理方面的一個重要內容,是系統自動完成工作的一種實現方式,正因為有了計劃任務,我們才可以完全實現系統管理的腳本化和自動化。

關于計劃任務,Linux根據用戶需要提供了兩種服務,一種是atd服務,另一種是cron服務

1. atd服務

如果你的計劃任務只要執行一次,那么就請你使atd服務。在默認情況下,Linux系統是開啟了atd這個服務的。如果不確認你的Linux是否開啟了atd服務,請使用下面這個命令查看:

# /etc/init.d/atd status

  atd (pid  3016) 正在運行...

從上面可以看出atd服務是啟動的。如果你的atd服務沒有啟動可以使用

 # /etc/init.d/atd start

來啟動你的atd服務。

atd服務中我們經常要使用到的是at命令,與at命令相關的有/etc/at.deny 和/etc/at.allow兩個文件用來過濾哪些用戶可以使用at命令。Linux 預設情況下,只有/etc/at.deny 這個文件,且這個文件內容為空,由于內容沒有任何使用者,所以所有人都可以使用at命令。如果不想要某個使用者使用at時,那么將該使用者登錄用戶名寫到/etc/at.deny 這個文件中即可。

Linux系統中還可以自行創建/etc/at.allow文件,使得寫在這個文件中的使用者才能使用at,沒有在這個文件中的使用者則不能使用at ( 即使沒有寫在at.deny 當中)。如果這兩個文件都不存在,那么只有root可以使用at命令。

下面來看一下如何使用at命令:

at [-m]  TIME     //下達計劃任務,之后會出現編輯窗口,寫入要執行的命令

-m :執行 at 計劃任務時,將屏幕輸出結果mail給下達指令的使用者。
 
 TIME的格式具體請參照我下面的列子吧。
# at 04:00 2011-09-20  //在2011年9月20號上午四點執行命令。
# at 11pm                    //今天晚上11點執行,如果已經過了,等到明天晚上
# at 08am + 3 weeks  //三周后的上午八點執行

此外還有兩個常用命令:
atq           //查看計劃任務
atrm          //刪除計劃任務

2. crond服務

2.1 crond服務簡介

Linux任務調度的工作主要分為以下兩類:

  • 系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存
  • 個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可由每個用戶自行設置。

這個時候可以用cron來幫助系統進行任務調度。cron可以根據時間、日期、月份、星期的組合來調度對重復任務的執行的守護進程。

crond服務通過shell和Linux/Unix下的crontab(計劃任務控制)的方式實現。cron是計劃任務的稱呼,crond是后臺進程,而crontab則是定制好的計劃任務表。cron 這個名字來自 “chronos”,一個古希臘語“時間”的意思。crond進程每分種會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

要使用 crond服務,你必須安裝了vixie-cron RPM 軟件包,而且必須在運行crond服務。要判定該軟件包是否已安裝,使用rpm -q vixie-cron命令。要判定該服務是否在運行,使用== /sbin/service crond status==命令。

crond服務是linux的內置服務,但它不會開機自動啟動。可以用以下命令啟動和停止服務:

/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置

你也可以讓這個服務在系統啟動的時候自動啟動,只需要在/etc/rc.d/rc.local這個腳本的末尾加上:

/sbin/service crond start

2.2 crond服務的使用

crond服務提供crontab命令來設定crond服務,以下是這個命令的一些參數與說明:

  • crontab -u //設定某個用戶的cron服務,一般這個參數只允許root使用
  • crontab -l //列出某個用戶cron服務的詳細內容
  • crontab -r //刪除某個用戶的cron服務
    注意:如果有多條計劃任務crontab -r會刪除用戶所有的計劃,如果你只想刪除其中一條計劃任務,請使用crontab -e 命令或者直接編輯/var/spool/cron/root文件。
  • crontab -e //編輯某個用戶的cron服務
    crontab -e命令編輯的是/var/spool/cron下對應用戶的cron文件

現舉例說明:

# crontab -u root –l      //root查看自己的cron設置
# crontab -u fred –r     // root想刪除fred的cron設置
# crontab -u root –e     //編輯root的crontab文件

我們也可以直接修改/etc/crontab文件,crontab文件有自己的格式,具體如下:

Minute  Hour   Day    Month   Dayofweek   command
分鐘      小時     天       月           天每星期        命令

每個字段代表的含義如下:

Minute             每個小時的第幾分鐘執行該任務
Hour               每天的第幾個小時執行該任務
Day                每月的第幾天執行該任務
Month              每年的第幾個月執行該任務
DayOfWeek          每周的第幾天執行該任務
Command            指定要執行的程序

舉例如下:

5       *       *           *     *     ls    //指定每小時的第5分鐘執行一次ls命令
30      5       *           *     *     ls    //指定每天的 5:30 執行ls命令
30      7       8           *     *     ls    //指定每月8號的7:30分執行ls命令
30      5       8           6     *     ls    //指定每年的6月8日5:30執行ls命令
30      6       *           *     0     ls    //指定每星期日的6:30執行ls命令

注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等

30     3     10,20     *     *     ls     //每月10號及20號的3:30執行ls命令

注:“,”用來連接多個不連續的時段

25     8-11    *       *     *     ls     //每天8-11點的第25分鐘執行ls命令

注:“-”用來連接連續的時段

*/15   *       *       *     *     ls     //每15分鐘執行一次ls命令(即每個小時的第0 15 30 45 60分鐘執行ls命令)
30     6     */10      *     *     ls  //每個月中,每隔10天6:30執行一次ls命令(即每月的1、11、21、31日是的6:30執行一次ls命令)
50     7      *        *     *     root run-parts /etc/cron.daily   //每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行腳本

注:run-parts參數表示,執行后面目錄中的所有可執行文件,如果去掉這個參數的話,后面就可以寫要運行的某個腳本名,而不是文件夾名了

30     5      *        *     *     ls >/jp/test 2>&1   //每天5:30執行ls命令,并把結果輸出到/jp/test文件中

注:2>&1 表示執行結果及錯誤信息

記住幾個特殊符號的含義:

“*” 代表取值范圍內的數字,

“/” 代表"每",

“-” 代表從某個數字到某個數字,

“,” 分開幾個離散的數字

在這些字段里,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選字段,可視需要決定。對于不指定的字段,要用“*”來填補其位置。

原文鏈接:https://blog.csdn.net/Nana8874/article/details/126061324

欄目分類
最近更新