国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

在Linux中怎么使用cron計劃任務

系統 Linux 系統運維
沒有時間運行命令?使用 cron 的計劃任務意味著你不用熬夜程序也可以運行。在這篇文章中,我將介紹 cron 服務和怎么去使用它。

[[210911]]

沒有時間運行命令?使用 cron 的計劃任務意味著你不用熬夜程序也可以運行。

系統管理員(在許多好處中)的挑戰之一是在你該睡覺的時候去運行一些任務。例如,一些任務(包括定期循環運行的任務)需要在沒有人使用計算機資源的時候去運行,如午夜或周末。在下班后,我沒有時間去運行命令或腳本。而且,我也不想在晚上去啟動備份或重大更新。

取而代之的是,我使用兩個服務功能在我預定的時間去運行命令、程序和任務。cron 和 at 服務允許系統管理員去安排任務運行在未來的某個特定時間。at 服務指定在某個時間去運行一次任務。cron 服務可以安排任務在一個周期上重復,比如天、周、或月。

在這篇文章中,我將介紹 cron 服務和怎么去使用它。

常見(和非常見)的 cron 用途

我使用 cron 服務去安排一些常見的事情,比如,每天凌晨 2:00 發生的定期備份,我也使用它去做一些不常見的事情。

  • 許多電腦上的系統時鐘(比如,操作系統時間)都設置為使用網絡時間協議(NTP)。 NTP 設置系統時間后,它不會去設置硬件時鐘,它可能會“漂移”。我使用 cron 基于系統時間去設置硬件時鐘。
  • 我還有一個 Bash 程序,我在每天早晨運行它,去在每臺電腦上創建一個新的 “每日信息” (MOTD)。它包含的信息有當前的磁盤使用情況等有用的信息。
  •  許多系統進程和服務,像 Logwatch、logrotate、和 Rootkit Hunter,使用 cron 服務去安排任務和每天運行程序。

crond 守護進程是一個完成 cron 功能的后臺服務。

cron 服務檢查在 /var/spool/cron 和 /etc/cron.d 目錄中的文件,以及 /etc/anacrontab 文件。這些文件的內容定義了以不同的時間間隔運行的 cron 作業。個體用戶的 cron 文件是位于 /var/spool/cron,而系統服務和應用生成的 cron 作業文件放在 /etc/cron.d 目錄中。/etc/anacrontab 是一個特殊的情況,它將在本文中稍后部分介紹。

使用 crontab

cron 實用程序運行基于一個 cron 表(crontab)中指定的命令。每個用戶,包括 root,都有一個 cron 文件。這些文件缺省是不存在的。但可以使用 crontab -e 命令創建在 /var/spool/cron 目錄中,也可以使用該命令去編輯一個 cron 文件(看下面的腳本)。我強烈建議你,不要使用標準的編輯器(比如,Vi、Vim、Emacs、Nano、或者任何其它可用的編輯器)。使用 crontab 命令不僅允許你去編輯命令,也可以在你保存并退出編輯器時,重啟動 crond 守護進程。crontab 命令使用 Vi 作為它的底層編輯器,因為 Vi 是預裝的(至少在大多數的基本安裝中是預裝的)。

現在,cron 文件是空的,所以必須從頭添加命令。 我增加下面示例中定義的作業到我的 cron 文件中,這是一個快速指南,以便我知道命令中的各個部分的意思是什么,你可以自由拷貝它,供你自己使用。

  1. # crontab -e 
  2. SHELL=/bin/bash 
  3. MAILTO=root@example.com 
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 
  5. For details see man 4 crontabs 
  6. # Example of job definition: 
  7. # .---------------- minute (0 - 59) 
  8. # |  .------------- hour (0 - 23) 
  9. # |  |  .---------- day of month (1 - 31) 
  10. # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
  11. # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
  12. # |  |  |  |  | 
  13. # *  *  *  *  * user-name  command to be executed 
  14. # backup using the rsbu program to the internal 4TB HDD and then 4TB external 
  15. 01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2 
  16. Set the hardware clock to keep it in sync with the more accurate system clock 
  17. 03 05 * * * /sbin/hwclock --systohc 
  18. # Perform monthly updates on the first of the month 
  19. # 25 04 1 * * /usr/bin/dnf -y update 

crontab 命令用于查看或編輯 cron 文件。

上面代碼中的前三行設置了一個缺省環境。對于給定用戶,環境變量必須是設置的,因為,cron 不提供任何方式的環境。SHELL 變量指定命令運行使用的 shell。這個示例中,指定為 Bash shell。MAILTO 變量設置發送 cron 作業結果的電子郵件地址。這些電子郵件提供了 cron 作業(備份、更新、等等)的狀態,和你從命令行中手動運行程序時看到的結果是一樣的。第三行為環境設置了 PATH 變量。但即使在這里設置了路徑,我總是使用每個程序的完全限定路徑。

在上面的示例中有幾個注釋行,它詳細說明了定義一個 cron 作業所要求的語法。我將在下面分別講解這些命令,然后,增加更多的 crontab 文件的高級特性。

  1. 01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2 

在我的 /etc/crontab 中的這一行運行一個腳本,用于為我的系統執行備份。

這一行運行我自己編寫的 Bash shell 腳本 rsbu,它對我的系統做完全備份。這個作業每天的凌晨 1:01 (01 01) 運行。在這三、四、五位置上的星號(*),像文件通配符一樣代表一個特定的時間,它們代表 “一個月中的每天”、“每個月” 和 “一周中的每天”,這一行會運行我的備份兩次,一次備份內部專用的硬盤驅動器,另外一次運行是備份外部的 USB 驅動器,使用它這樣我可以很保險。

接下來的行我設置了一個硬件時鐘,它使用當前系統時鐘作為源去設置硬件時鐘。這一行設置為每天凌晨 5:03 分運行。

 

  1. 03 05 * * * /sbin/hwclock --systohc 

這一行使用系統時間作為源來設置硬件時鐘。

我使用的第三個也是***一個的 cron 作業是去執行一個 dnf 或 yum 更新,它在每個月的***天的凌晨 04:25 運行,但是,我注釋掉了它,以后不再運行。

  1. # 25 04 1 * * /usr/bin/dnf -y update 

這一行用于執行一個每月更新,但是,我也把它注釋掉了。

其它的定時任務技巧

現在,讓我們去做一些比基本知識更有趣的事情。假設你希望在每周四下午 3:00 去運行一個特別的作業:

  1. 00 15 * * Thu /usr/local/bin/mycronjob.sh 

這一行會在每周四下午 3:00 運行 mycronjob.sh 這個腳本。

或者,或許你需要在每個季度末去運行一個季度報告。cron 服務沒有為 “每個月的***一天” 設置選項,因此,替代方式是使用下一個月的***天,像如下所示(這里假設當作業準備運行時,報告所需要的數據已經準備好了)。

  1. 02 03 1 1,4,7,10 * /usr/local/bin/reports.sh 

在季度末的下一個月的***天運行這個 cron 作業。

下面展示的這個作業,在每天的上午 9:01 到下午 5:01 之間,每小時運行一次。

  1. 01 09-17 * * * /usr/local/bin/hourlyreminder.sh 

有時,你希望作業在業務期間定時運行。

我遇到一個情況,需要作業在每二、三或四小時去運行。它需要用期望的間隔去劃分小時,比如, */3 為每三個小時,或者 6-18/3 為上午 6 點到下午 6 點每三個小時運行一次。其它的時間間隔的劃分也是類似的。例如,在分鐘位置的表達式 */15 意思是 “每 15 分鐘運行一次作業”。

  1. */5 08-18/2 * * * /usr/local/bin/mycronjob.sh 

這個 cron 作業在上午 8:00 到下午 18:59 之間,每五分鐘運行一次作業。

需要注意的一件事情是:除法表達式的結果必須是余數為 0(即整除)。換句話說,在這個例子中,這個作業被設置為在上午 8 點到下午 6 點之間的偶數小時每 5 分鐘運行一次(08:00、08:05、 08:10、 08:15……18:55 等等),而不運行在奇數小時。另外,這個作業不能運行在下午 7:00 到上午 7:59 之間。(LCTT 譯注:此處本文表述有誤,根據正確情況修改)

我相信,你可以根據這些例子想到許多其它的可能性。

限制訪問 cron

普通用戶使用 cron 訪問可能會犯錯誤,例如,可能導致系統資源(比如內存和 CPU 時間)被耗盡。為避免這種可能的問題, 系統管理員可以通過創建一個 /etc/cron.allow 文件去限制用戶訪問,它包含了一個允許去創建 cron 作業的用戶列表。(不管是否列在這個列表中,)不能阻止 root 用戶使用 cron。

通過阻止非 root 用戶創建他們自己的 cron 作業,那也許需要將非 root 用戶的 cron 作業添加到 root 的 crontab 中, “但是,等等!” 你說,“不是以 root 去運行這些作業?” 不一定。在這篇文章中的***個示例中,出現在注釋中的用戶名字段可以用于去指定一個運行作業的用戶 ID。這可以防止特定的非 root 用戶的作業以 root 身份去運行。下面的示例展示了一個作業定義,它以 “student” 用戶去運行這個作業:

  1. 04 07 * * * student /usr/local/bin/mycronjob.sh 

如果沒有指定用戶,這個作業將以 contab 文件的所有者用戶去運行,在這個情況中是 root。

cron.d

目錄 /etc/cron.d 中是一些應用程序,比如 SpamAssassin 和 sysstat 安裝的 cron 文件。因為,這里沒有 spamassassin 或者 sysstat 用戶,這些程序需要一個位置去放置 cron 文件,因此,它們被放在 /etc/cron.d 中。

下面的 /etc/cron.d/sysstat 文件包含系統活動報告(SAR)相關的 cron 作業。這些 cron 文件和用戶 cron 文件格式相同。

  1. # Run system activity accounting tool every 10 minutes 
  2.  
  3. */10 * * * * root /usr/lib64/sa/sa1 1 1 
  4.  
  5. # Generate a daily summary of process accounting at 23:53 
  6.  
  7. 53 23 * * * root /usr/lib64/sa/sa2 -A 

sysstat 包安裝了 /etc/cron.d/sysstat cron 文件來運行程序生成 SAR。

該 sysstat cron 文件有兩行執行任務。***行每十分鐘去運行 sa1 程序去收集數據,存儲在 /var/log/sa 目錄中的一個指定的二進制文件中。然后,在每天晚上的 23:53, sa2 程序運行來創建一個每日匯總。

計劃小貼士

我在 crontab 文件中設置的有些時間看上起似乎是隨機的,在某種程度上說,確實是這樣的。嘗試去安排 cron 作業可能是件很具有挑戰性的事, 尤其是作業的數量越來越多時。我通常在我的每個電腦上僅有一些任務,它比起我工作用的那些生產和實驗環境中的電腦簡單多了。

我管理的一個系統有 12 個每天晚上都運行 cron 作業,另外 3、4 個在周末或月初運行。那真是個挑戰,因為,如果有太多作業在同一時間運行,尤其是備份和編譯系統,會耗盡內存并且幾乎填滿交換文件空間,這會導致系統性能下降甚至是超負荷,最終什么事情都完不成。我增加了一些內存并改進了如何計劃任務。我還刪除了一些寫的很糟糕、使用大量內存的任務。

crond 服務假設主機計算機 24 小時運行。那意味著如果在一個計劃運行的期間關閉計算機,這些計劃的任務將不再運行,直到它們計劃的下一次運行時間。如果這里有關鍵的 cron 作業,這可能導致出現問題。 幸運的是,在定期運行的作業上,還有一個其它的選擇: anacron。

anacron

anacron 程序執行和 cron 一樣的功能,但是它增加了運行被跳過的作業的能力,比如,如果計算機已經關閉或者其它的原因導致無法在一個或多個周期中運行作業。它對筆記本電腦或其它被關閉或進行睡眠模式的電腦來說是非常有用的。

只要電腦一打開并引導成功,anacron 會檢查過去是否有計劃的作業被錯過。如果有,這些作業將立即運行,但是,僅運行一次(而不管它錯過了多少次循環運行)。例如,如果一個每周運行的作業在最近三周因為休假而系統關閉都沒有運行,它將在你的電腦一啟動就立即運行,但是,它僅運行一次,而不是三次。

anacron 程序提供了一些對周期性計劃任務很好用的選項。它是安裝在你的 /etc/cron.[hourly|daily|weekly|monthly] 目錄下的腳本。 根據它們需要的頻率去運行。

它是怎么工作的呢?接下來的這些要比前面的簡單一些。

1、 crond 服務運行在 /etc/cron.d/0hourly 中指定的 cron 作業。

  1. # Run the hourly jobs 
  2. SHELL=/bin/bash 
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin 
  4. MAILTO=root 
  5. 01 * * * * root run-parts /etc/cron.hourly 

/etc/cron.d/0hourly 中的內容使位于 /etc/cron.hourly 中的 shell 腳本運行。

2、 在 /etc/cron.d/0hourly 中指定的 cron 作業每小時運行一次 run-parts 程序。

3、 run-parts 程序運行所有的在 /etc/cron.hourly 目錄中的腳本。

4、 /etc/cron.hourly 目錄包含的 0anacron 腳本,它使用如下的 /etdc/anacrontab 配置文件去運行 anacron 程序。   

  1. # /etc/anacrontab: configuration file for anacron 
  2. # See anacron(8) and anacrontab(5) for details. 
  3. SHELL=/bin/sh 
  4. PATH=/sbin:/bin:/usr/sbin:/usr/bin 
  5. MAILTO=root 
  6. # the maximal random delay added to the base delay of the jobs 
  7. RANDOM_DELAY=45 
  8. # the jobs will be started during the following hours only 
  9. START_HOURS_RANGE=3-22 
  10. #period in days   delay in minutes   job-identifier   command 
  11. 1       5       cron.daily              nice run-parts /etc/cron.daily 
  12. 7       25      cron.weekly             nice run-parts /etc/cron.weekly 
  13. @monthly 45     cron.monthly            nice run-parts /etc/cron.monthly 

/etc/anacrontab 文件中的內容在合適的時間運行在 cron.[daily|weekly|monthly] 目錄中的可執行文件。

5、 anacron 程序每日運行一次位于 /etc/cron.daily 中的作業。它每周運行一次位于 /etc/cron.weekly 中的作業。以及每月運行一次 cron.monthly 中的作業。注意,在每一行指定的延遲時間,它可以幫助避免這些作業與其它 cron 作業重疊。

我在 /usr/local/bin 目錄中放置它們,而不是在 cron.X 目錄中放置完整的 Bash 程序,這會使我從命令行中運行它們更容易。然后,我在 cron 目錄中增加一個符號連接,比如,/etc/cron.daily。

anacron 程序不是設計用于在指定時間運行程序的。而是,用于在一個指定的時間開始,以一定的時間間隔去運行程序,比如,從每天的凌晨 3:00(看上面腳本中的 START_HOURS_RANGE 行)、從周日(每周***天)和這個月的***天。如果任何一個或多個循環錯過,anacron 將立即運行這個錯過的作業。

更多的關于設置限制

我在我的計算機上使用了很多運行計劃任務的方法。所有的這些任務都需要一個 root 權限去運行。在我的經驗中,很少有普通用戶去需要運行 cron 任務,一種情況是開發人員需要一個 cron 作業去啟動一個開發實驗室的每日編譯。

限制非 root 用戶去訪問 cron 功能是非常重要的。然而,在一些特殊情況下,用戶需要去設置一個任務在預先指定時間運行,而 cron 可以允許他們去那樣做。許多用戶不理解如何正確地配置 cron 去完成任務,并且他們會出錯。這些錯誤可能是無害的,但是,往往不是這樣的,它們可能導致問題。通過設置功能策略,使用戶與管理員互相配合,可以使個別的 cron 作業盡可能地不干擾其它的用戶和系統功能。

可以給為單個用戶或組分配的資源設置限制,但是,這是下一篇文章中的內容。

 

更多信息,在 cron、crontab、anacron、anacrontab、和 run-parts 的 man 頁面上,所有的這些信息都描述了 cron 系統是如何工作的。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2010-03-09 17:45:11

Linux計劃任務

2017-06-09 13:17:04

Linuxcronanacron

2019-11-14 10:00:18

Linuxcron任務自動化任務

2010-01-07 11:19:45

Linux計劃任務

2010-01-20 10:27:16

Linuxcrond命

2017-03-27 08:30:00

Windows 8Windows計劃任務

2022-11-11 14:55:14

Linuxcron

2025-01-16 08:07:05

cron可視化管理器開源

2010-01-07 11:10:00

cron配置計劃

2017-07-14 11:50:15

Windows 10Windows計劃任務

2010-11-15 09:10:43

CrontabLinux計劃任務

2019-05-29 08:00:00

Linux計劃任務cron

2018-10-08 14:00:28

LinuxCron定時任務

2024-11-06 10:59:00

2021-01-08 08:47:56

Saltstack架構管理服務器

2021-05-13 12:00:51

cron調度任務系統運維

2010-05-04 12:43:11

Oracle數據庫

2022-04-19 09:03:22

Linuxcron命令

2023-10-06 12:15:02

2011-04-01 09:17:01

備份cactiwindows
點贊
收藏

51CTO技術棧公眾號

久久综合色一本| 亚洲一区二区三区视频| 亚洲成人av电影在线| 中文乱码免费一区二区三区下载| 男女视频在线| 97在线播放视频| 国产超碰91| 精品少妇v888av| 欧美日韩国产a| 久久久高清一区二区三区| 午夜国产精品视频| 国产精品国产亚洲精品| 电影在线一区| 午夜视频在线瓜伦| 欧美精品尤物在线| 午夜精品久久久久久久男人的天堂 | 国产福利在线看| 99精品在线免费视频| 国产自产女人91一区在线观看| 亚洲欧洲国产精品| 91久久精品一区二区三区| 成人免费的视频| 亚洲精品影视| 婷婷精品在线| 波多视频一区| 日本ー区在线视频| 久久久久久香蕉| 欧美性天天影院| 国产福利成人在线| 在线日韩精品视频| 欧美日本一区二区在线观看| 亚洲欧洲精品一区二区精品久久久| 麻豆91在线播放免费| 欧美涩涩网站| 亚洲伊人春色| 激情久久免费视频| 超碰在线视屏| 永久免费av片在线观看全网站| 久久午夜剧场| 奇米精品一区二区三区| 精品国产欧美一区二区五十路 | 久久婷婷蜜乳一本欲蜜臀| 天堂久久午夜av| 亚洲精品男人| 成年人视频在线免费| 在线免费观看成人网| 国产福利久久精品| 国产精品久久久久91| 这里只有精品在线播放| 日韩欧美一区电影| 色www精品视频在线观看| 1000精品久久久久久久久| 不卡视频免费播放| 麻豆免费精品视频| 在线亚洲观看| 一区二区三区午夜视频| 亚洲伊人春色| 97色成人综合网站| 国产69精品久久久久9999人| 182在线视频观看| 欧美jizz18hd性欧美| 视频在线不卡| 濑亚美莉一二区在线视频| 国产乱xxⅹxx国语对白| 日日碰狠狠躁久久躁婷婷| www.在线观看av| 26uuu成人| 四虎永久国产精品| 久久综合色一本| 国产美女在线精品免费观看| 91久久精品一区| 国产成人综合久久| 国产91在线视频| 97久久精品在线| 九九视频这里只有精品| 精品国偷自产在线视频99| 亚洲一级黄色片| 亚洲欧美日韩一区二区三区在线| 欧美mv日韩mv亚洲| 日韩午夜激情电影| 欧美顶级少妇做爰| 欧美久久久久久久久久| 欧洲一区在线观看| 色老头久久综合| 在线视频一区二区三区| 色88888久久久久久影院按摩| 亚洲成人在线网站| 五月天亚洲精品| 欧美日韩精品国产| 日本福利一区二区| 欧美日韩色综合| 91精品久久久久久久99蜜桃| 欧美一区二区日韩| 亚洲精品一区二区三区四区高清| 欧美成人vps| 日韩av一区二区在线| 国产午夜精品久久久| 国产亚洲xxx| 中文字幕亚洲色图| 九九精品在线观看| 777国产偷窥盗摄精品视频| 538国产精品一区二区免费视频| 91成人在线播放| 国产精品久久久久久久久久东京| 国产欧美一区二区三区视频 | 精品国精品国产尤物美女| 精品日韩成人av| 亚洲精品aⅴ中文字幕乱码| 精品一区二区三区四区| 亚洲人成在线一二| 啊v视频在线一区二区三区| 精品少妇v888av| 国产91精品黑色丝袜高跟鞋| 国产精品久久久久久久av电影| 国产精品综合久久久| 亚洲综合视频1区| 精品伦理一区二区三区| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 日韩不卡一二区| 亚洲自偷自拍熟女另类| 羞羞在线视频| 日本一卡二卡四卡精品| www久久日com| 国产精品极品美女在线观看| 999精品嫩草久久久久久99| 美女主播精品视频一二三四| 91视频精品| 亚洲欧美日韩专区| 国产乱人伦偷精品视频免下载| 不卡的看片网站| 丁香婷婷综合激情| 国产剧情在线观看一区| 成人淫片免费视频95视频| 国产精品亚洲视频在线观看| 国产区在线看| 国产精品xxx在线观看| 日韩一区二区三区高清免费看看| 最新国产の精品合集bt伙计| 亚洲第一成人在线| 欧美精品自拍偷拍| 在线观看精品自拍私拍| 91精品国产高清久久久久久91| 国产精品视频色| 九色91国产| 国产黄色激情视频| 99不卡视频| 麻豆电影在线播放| 欧美黄色a视频| 第一sis亚洲原创| 日本伊人午夜精品| 中文字幕av资源一区| 欧美三级电影网站| 久久久国产91| 97se视频在线观看| 久久艹国产精品| 一不卡在线视频| **在线精品| 先锋资源久久| 成人在线视频一区| 午夜成人免费电影| 亚洲人av在线影院| 国产精品国产三级国产aⅴ9色 | 中文字幕欧美日韩| 成人性生交xxxxx网站| 久久精品国产精品亚洲精品色| 超碰超碰在线观看| 在线视频91p| 日韩成人在线看| 激情欧美日韩一区| 久久久久久99久久久精品网站| 在线观看成人小视频| 欧美成人免费全部观看天天性色| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩中文字幕亚洲精品欧美| 伊人永久在线| 国产精品1区在线| 免费亚洲一区| 一区二区在线观看视频| 亚洲精品日韩久久久| 亚洲一区二区三区毛片| 免费黄色福利视频| 视色,视色影院,视色影库,视色网| 美女视频黄a视频全免费观看| 香蕉伊大人中文在线观看| 91亚洲人成网污www| 91在线观看污| 日韩视频一区二区三区| 国产精品丝袜视频| av网址在线观看免费| 日韩欧美一起| 91欧美在线| 久久九九国产精品| 精品国产91乱码一区二区三区| 国产精品18久久久久久首页狼| av 日韩 人妻 黑人 综合 无码| 国产片在线观看| 欧美人妖在线| 久久综合九色欧美综合狠狠| 亚洲激情国产精品| 国产自产精品|