自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux中cron命令的16個基礎(chǔ)用法及示例

運(yùn)維 系統(tǒng)運(yùn)維
Linux/Unix中,我們可以使用cron命令自動運(yùn)行和計(jì)劃任務(wù),你可以一次或定期執(zhí)行任務(wù)?!癈ron”廣泛用于定期執(zhí)行重復(fù)性工作(使用名為“crontab”的命令運(yùn)行),“at”程序用于在特定時(shí)間段內(nèi)執(zhí)行一次任務(wù)。Crontab為所有用戶維護(hù)單獨(dú)的crontab文件。

Linux/Unix中,我們可以使用cron命令自動運(yùn)行和計(jì)劃任務(wù),你可以一次或定期執(zhí)行任務(wù)。“Cron”廣泛用于定期執(zhí)行重復(fù)性工作(使用名為“crontab”的命令運(yùn)行),“at”程序用于在特定時(shí)間段內(nèi)執(zhí)行一次任務(wù)。Crontab為所有用戶維護(hù)單獨(dú)的crontab文件。這些自動化的工作對許多使用Linux服務(wù)器的管理員來說是非常有用的。

一般來說,“crontab”文件用于備份、更新系統(tǒng)、同步服務(wù)器等任務(wù)。cron的一個重要優(yōu)點(diǎn)是,你不需要詳細(xì)了解它,只需要知道如何使用它作為設(shè)置cron作業(yè)的一部分。

本教程將指導(dǎo)你使用crontab的各種選項(xiàng)。下文中所有crontab的例子都在RHEL/CENTOS 7.6上測試過。

首先,讓我們看看crontab的基本語法和表達(dá)式: 

  1. Minute hour Day-of-Month Month-of-Year Day-of-Week Command  
  2. 0-59 0-23 1-31 1-12 0-6 command / script 

Crontab總共有6個字段。第1-5個字段是日期和時(shí)間,第6個字段可用于任何可執(zhí)行的Linux命令或腳本。

注意:時(shí)間字段采用24小時(shí)格式。

1. 如何在每天的特定時(shí)間執(zhí)行cronjob?

要把任務(wù)添加到crontab中,我們應(yīng)該使用'-e'選項(xiàng)。一旦添加了任務(wù),vi編輯器將打開crontab配置文件,然后使用’:wq!'保存并關(guān)閉該文件。 

  1. # crontab -e  
  2. 30 01 * * * /usr/scripts/rsync_svnvmback.sh >/dev/null 2>&1 

注意:在這里,我們有一個名為“rsync_svnbackup.sh”的bash腳本,每天(周一到周日)凌晨1點(diǎn)30分執(zhí)行。一旦任務(wù)被執(zhí)行,Cron就會向特定的用戶發(fā)送一封關(guān)于任務(wù)狀態(tài)的通知郵件,無論是成功還是失敗。如果不需要通知,那么我們可以在腳本的最后使用>/dev/null 2>&1命令來禁用它,它將使所有的通知無效。

2. 如何列出crontab任務(wù)?

使用下面的命令列出我們添加到crontab配置文件中的任務(wù)。這里,我們使用的是root賬戶。 

  1. # crontab -l  
  2. 30 01 * * * /usr/scripts/rsync_svnvmback.sh >/dev/null 2>&1 

注意:'-l'是列出當(dāng)前登錄的用戶的crontab列表的選項(xiàng)。

3. 如何以其他用戶身份修改cronjob?

比方說,我想以另一個名為“linuxteck”的用戶修改crontab任務(wù)。 

  1. # crontab -u linuxteck -e  
  2. 30 01 * * * /usr/scripts/rsync_svnvmback.sh 

注意:上述命令只能由高權(quán)限用戶執(zhí)行,比如“root用戶或超級用戶”,或者被賦予了特權(quán)的普通用戶。這里‘-u’代表用戶名,‘-e’選項(xiàng)代表編輯。

4. 如何列出其他用戶的crontab任務(wù)?

下面的命令將顯示其他用戶(linuxteck)的任務(wù)列表。 

  1. # crontab -u linuxteck -l  
  2. 30 01 * * * /usr/scripts/rsync_svnvmback.sh 

注意:記住,只有root/超級用戶可以執(zhí)行上述命令,或者具有相同權(quán)限的普通用戶。

5. 如何配置每分鐘運(yùn)行的cronjob?

這個要求在實(shí)際中很少使用,但也有一些用例。舉個例子:如果你使用rsync腳本/命令從線上服務(wù)器同步備份,這樣以來,備份服務(wù)器將每分鐘從線上服務(wù)器獲得更新。 

  1. # crontab -e  
  2. * * * * * /usr/scripts/rsync_svnvmback.sh 

注意:上述crontab任務(wù)(rsync_svnvmback.sh)將在全年每小時(shí)中的每一分鐘運(yùn)行。

6. 如何配置一個每天運(yùn)行兩次的cronjob?

這意味著一條命令/腳本在一天內(nèi)將被執(zhí)行兩次。舉個例子:一些公司在早上和晚上進(jìn)行數(shù)據(jù)庫備份,比方說早上6點(diǎn)和晚上8點(diǎn)。

  1. 00 06,20 * * * /usr/scripts/mysqldump.sh >/dev/null 2>&1 

注意:在小時(shí)字段使用了逗號分隔值。這個腳本將在每天早上6點(diǎn)和晚上8點(diǎn)執(zhí)行。正如第一個例子中提到的,用'>/dev/null 2>&1'命令來禁用通知。

7. 如何配置每10分鐘運(yùn)行一次的cronjob?

下面的任務(wù)可以連續(xù)每10分鐘執(zhí)行一次命令/腳本。

  1. */10 * * * * /usr/scripts/rsync_svnvmback.sh 

注意:你可以根據(jù)你的要求調(diào)整為5分鐘或10分鐘等進(jìn)行測試。

8. 如何配置特定日期執(zhí)行的cronjob?

使用下面的配置,我們可以在特定的日子里執(zhí)行cronjob。例如:你可以只在周五和周日的晚上11點(diǎn)運(yùn)行備份腳本。

  1. > 0 23 * * fri,sun /usr/scripts/rsync_svnvmback.sh 

注意:在這里我使用了日期的簡稱并用逗號來分隔,而不是數(shù)字,這樣用戶就很容易讀懂。如果你使用數(shù)字,一些系統(tǒng)上是0-6,一些是1-7。因此,許多初學(xué)者在配置“星期天”時(shí)感到困惑,到底該使用0還是7。實(shí)際上,‘0和7’都代表星期天。

9. 如何配置在特定月份運(yùn)行的cronjob?

使用下面的配置,我們可以為在特定月份執(zhí)行cronjob,例如:該腳本應(yīng)該只在1月和7月的晚上11.00執(zhí)行。

  1. 0 23 * jan,jul * /usr/scripts/rsync_svnvmback.sh 

注意:crontab語法中第四字段是月份的名稱。如果不止一個月份執(zhí)行,則使用逗號來分隔。

10. 如何在一行中連續(xù)運(yùn)行多個cronjob?

正常情況下,我們?yōu)椴煌娜蝿?wù)、不同的時(shí)間一個一個地添加crontab任務(wù)。實(shí)際上,我們可以在一個特定的時(shí)間添加多個任務(wù),一個接一個地執(zhí)行。例如:我有多個命令/腳本要在我的服務(wù)器上執(zhí)行,即備份數(shù)據(jù)庫、備份應(yīng)用程序文件,然后壓縮數(shù)據(jù)庫和文件,并將這些tar文件推送到備份位置,然后從服務(wù)器上刪除這些tar/archive文件,然后清理tmp文件,等等。這種情況下,如果我們同時(shí)執(zhí)行所有的腳本,將極大地影響服務(wù)器的性能。例如,可能導(dǎo)致服務(wù)器的磁盤空間用完,內(nèi)存、CPU和帶寬的占用率會大幅升高,有時(shí)甚至使服務(wù)器失去響應(yīng)。

這種情況下,我們可以在crontab中使用下面的方式,讓腳本一個接一個地執(zhí)行,例如:如果我們有5組腳本要在早上1點(diǎn)運(yùn)行,那么第一個腳本將在1點(diǎn)開始運(yùn)行,一旦完成,第二個就立即開始,以此類推。

常規(guī)做法: 

  1. 00 01 * * * /usr/scripts/mysqldump.sh   
  2. 00 02 * * * /usr/scripts/application_backup.sh   
  3. 10 01 * * * /usr/scripts/tar_db_appfile.sh   
  4. 30 01 * * * /usr/scripts/cp_tar_remote_server.sh   
  5. 10 02 * * * /usr/scripts/tardelete.sh   
  6. 30 02 * * * /usr/scripts/clean_tmp.sh 

多個任務(wù)在一個crontab中執(zhí)行: 

  1. 00 01 * * * /usr/scripts/mysqldump.sh && /usr/scripts/application_backup.sh && /usr/scripts/tar_db_appfile.sh && /usr/scripts/cp_tar_remote_server.sh && /usr/scripts/tardelete.sh && /usr/scripts/clean_tmp.sh 
  2.  
  3. -OR
  4.  
  5. 00 01 * * * /usr/scripts/mysqldump.sh; /usr/scripts/application_backup.sh; /usr/scripts/tar_db_appfile.sh; /usr/scripts/cp_tar_remote_server.sh; /usr/scripts/tardelete.sh; /usr/scripts/clean_tmp.sh 

注意:雙引號‘&&’和分號‘;’的區(qū)別是:‘&&’意味著作業(yè)將一個接一個地執(zhí)行,而‘;’則表示無論前面的作業(yè)是否成功,第二或第三作業(yè)都將運(yùn)行。

11. 如何在cron中使用特殊字符?

特殊字符是cron中用一個關(guān)鍵詞替換其他字段來執(zhí)行任務(wù)。我們可以在’@’后面接關(guān)鍵字,語法和含義如下。 

  1. 關(guān)鍵字       等價(jià)于          含義   
  2. @yearly     0 0 1 1 *     --> 每年執(zhí)行一次 
  3. @monthly    0 0 1 * *     --> 每月執(zhí)行一次 
  4. @daily      0 0 * * *     --> 每天執(zhí)行一次 
  5. @hourly     0 * * * *     --> 每小時(shí)執(zhí)行一次 
  6. @reboot     --            --> 重啟后執(zhí)行一次 

接下來我們用幾個例子來說明關(guān)鍵字的使用方法。

12. 如何使用@yearly的特殊字符配置cronjob?

@yearly相當(dāng)于‘0 0 1 1 *’。

  1. @yearly /usr/scripts/yearly_archival.sh 

注意:上面的crontab任務(wù)將執(zhí)行腳本,把所有前一年的數(shù)據(jù)移到存檔服務(wù)器中。它將在每年的第一個月(一月)的00:00執(zhí)行。

13. 如何使用@monthly特殊字符來配置cronjob?

@monthly相當(dāng)于‘0 0 1 * *’。

  1. @monthly /usr/scripts/monthly-backup.sh 

注意:上面的crontab任務(wù)將執(zhí)行每月備份的腳本,它將在每月1日的00:00執(zhí)行。

14. 如何使用@daily特殊字符串配置cronjob?

@daily相當(dāng)于‘0 0 * * *’。

  1. @daily /usr/scripts/daily-temp.sh 

注意:上述crontab任務(wù)將執(zhí)行daily-temp.sh的腳本,它將清除temp文件夾中所有的臨時(shí)文件。任務(wù)將在每天的00:00執(zhí)行。

15. 如何使用@hourly特殊字符配置cronjob?

@hourly相當(dāng)于‘0 * * *’。

  1. @hourly /usr/scripts/hourly_rsync_svnvmback.sh 

注意:上述crontab任務(wù)將執(zhí)行hourly_rsync_svnvmback.sh的腳本,它每小時(shí)將所有數(shù)據(jù)從線上服務(wù)器同步到備份服務(wù)器。

16. 如何使用@reboot特殊字符在每次重啟后執(zhí)行一個腳本/命令?

@reboot可以用來在每次重啟服務(wù)器后執(zhí)行一組命令/腳本。例如:在重啟后,我們可以執(zhí)行一個命令/腳本來檢查服務(wù)的狀態(tài),如DNS、Apache狀態(tài)等。

  1. @reboot /usr/scripts/bootup_service_status.sh 

注意:上述crontab腳本將在每次重啟后執(zhí)行。這里,我在腳本中加入了檢查“httpd, named,dhcpd”等狀態(tài)的命令,這樣它就會顯示所有服務(wù)的狀態(tài)列表。

我希望這篇文章能夠幫助你學(xué)習(xí)Linux中的crontab命令。歡迎把你的反饋/意見告訴我。

感謝閱讀!

 

責(zé)任編輯:未麗燕 來源: tlanyan.pp.ua
相關(guān)推薦

2009-08-03 11:54:34

linux at命令linux at命令詳cron

2022-05-09 08:55:58

Linuxdiff命令

2013-11-15 16:07:26

Linux dfLinux命令

2020-09-29 07:18:24

Linuxtee命令

2018-08-06 08:51:32

Linux命令cut

2015-03-25 10:36:57

lsLinux

2020-05-20 13:45:52

Linuxtouch命令

2022-08-29 08:33:22

SocatLinux命令

2023-11-28 13:15:00

Linuxsed工具

2023-11-30 12:03:06

linuxAwk

2021-04-19 12:00:15

Linux命令chmod

2023-11-27 13:57:00

Linux用法

2017-03-01 11:46:24

Linuxscreen命令示例

2020-04-16 14:20:16

Linuxtouch命令

2012-02-22 21:54:57

UnixLinuxCron

2013-10-08 16:24:34

Linux find命

2022-01-17 10:05:33

LinuxWatch命令

2013-05-23 15:10:34

Netcat

2013-10-08 15:51:03

Linux find命

2024-01-18 15:34:58

Windows操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號