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

Linux 黑話解釋:什么是定時(shí)任務(wù)

系統(tǒng) Linux
在本期的《Linux 黑話解釋》系列文章中,你將了解到 Linux 中的定時(shí)任務(wù)功能。你將通過學(xué)習(xí)編輯 crontab 文件來創(chuàng)建定時(shí)任務(wù)。

[[440813]]

在本期的《Linux 黑話解釋》系列文章中,你將了解到 Linux 中的定時(shí)任務(wù)cron job功能。你將通過學(xué)習(xí)編輯 crontab 文件來創(chuàng)建定時(shí)任務(wù)。

何為定時(shí)任務(wù)

cron 是一個(gè)用于按計(jì)劃運(yùn)行短小且快速的命令的實(shí)用命令行工具。該工具是一個(gè)方便、經(jīng)典的系統(tǒng)管理工具,通過和其他工具結(jié)合使用可以自動(dòng)運(yùn)行各式各樣的任務(wù)。比如,有些人通過把 rsync 和 cron 結(jié)合使用,在特定的時(shí)間自動(dòng)創(chuàng)建每日備份和每周備份。也有些人使用 cron 來分析服務(wù)器日志,并且結(jié)合郵件系統(tǒng)功能,在日志檢測到錯(cuò)誤時(shí)自動(dòng)發(fā)送告警郵件。

cron 就如同“瑞士軍刀”一樣,可以多場景多樣化使用。盡可能發(fā)揮你的想象,去挖掘它的功能。

其實(shí) cron 的使用很容易上手,只需要幾秒鐘。不過在我們開始上手之前,先來討論下幾個(gè)經(jīng)常容易混淆的概念。

cron、定時(shí)任務(wù)、crontab

有三個(gè)術(shù)語比較容易混淆:cron、定時(shí)任務(wù)和 crontab,讓我們來看看它們的含義:

術(shù)語 含義
cron 這是安裝在系統(tǒng)上的實(shí)際執(zhí)行定時(shí)任務(wù)的 守護(hù)進(jìn)程。
定時(shí)任務(wù) “任務(wù)”是指一段啟動(dòng)并運(yùn)行的程序。cron 可以按照約定的時(shí)間計(jì)劃運(yùn)行各種任務(wù),這樣的任務(wù)通常叫做“定時(shí)任務(wù)”。
crontab 這是一個(gè)文件,用于定義定時(shí)任務(wù)。一個(gè) crontab 文件可以通過表格形式(每一行就是一個(gè)定時(shí)任務(wù))定義多個(gè)定時(shí)任務(wù)。

來看一個(gè)簡單例子:創(chuàng)建一個(gè)定時(shí)任務(wù),每小時(shí)向 crontabl_log.txt 文件打印 Linux is cool!。

  1. 0 * * * * echo "Linux is Cool!" >> ~/crontab_log.txt

是不是這么個(gè)簡單定時(shí)任務(wù)的例子都讓你感到驚恐,這是因?yàn)槟阈枰萌绾稳プx懂一個(gè)定時(shí)任務(wù)的屬性。

我將在后文中講述這個(gè)基礎(chǔ)理論知識。

上手 cron

我們通過另一個(gè)例子來看看 cron 如何工作。

為了創(chuàng)建定時(shí)任務(wù)(或者說 cron 將要執(zhí)行的命令任務(wù)),你只需要運(yùn)行:

  1. crontab -e

這將會(huì)打開一個(gè)文件,用于編輯定時(shí)任務(wù): 

Crontab default view

其中,所有以 # 開頭的行都是注釋,用于指導(dǎo)你如何使用 cron,如果覺得沒用可以刪除它們。

我們將創(chuàng)建如下任務(wù),作為我們的第一個(gè)定時(shí)任務(wù):

  1. * * * * * touch ~/crontab_test

讓我快速看看該任務(wù)將會(huì)做什么:

定時(shí)任務(wù)都是以 “分鐘 小時(shí) 天 月 周 命令” 形式呈現(xiàn):

  • 分鐘:指該任務(wù)在哪一分鐘會(huì)被執(zhí)行。所以,該值為 0 則代表在每個(gè)小時(shí)開始時(shí)運(yùn)行,5 則代表在每個(gè)小時(shí)的第 5 分鐘會(huì)運(yùn)行。
  • 小時(shí):指該任務(wù)在一天中的哪個(gè)小時(shí)會(huì)被執(zhí)行,取值范圍為 0-23。沒有 24 的原因是 23 時(shí)的末尾是半夜 11:59,然后就是每天的開始 0 時(shí)。分鐘的取值范圍定義邏輯與之類似。
  • 天:指一個(gè)月中的哪一天執(zhí)行該任務(wù),取值范圍是 1-31(不同于前面的分鐘和小時(shí)從 0 開始取值)。
  • 月:指該任務(wù)在哪個(gè)月被執(zhí)行,取值范圍是 1-12。
  • 周:指該任務(wù)在星期幾被執(zhí)行,從周日開始算起,取值范圍是 0-6(分別對應(yīng)周日、周一到周六)。
  • 命令:是你想要運(yùn)行的命令任務(wù)。 

如果想對 “分鐘 小時(shí) 天 月 周” 部分有更詳細(xì)的理解,可以參考 Crontab guru 網(wǎng)站,該網(wǎng)站可以幫助你理解正在執(zhí)行什么。

接著之前的例子 * * * * * touch ~/crontab_test,表示每分鐘創(chuàng)建一次 ~/crontab_test 文件。

讓我們將該任務(wù)編輯進(jìn) crontab 然后看看執(zhí)行結(jié)果: 

等到下一分鐘,你就會(huì)發(fā)現(xiàn)你的家目錄下多了文件 crontab_test:

 

這便是 cron 的基礎(chǔ)應(yīng)用示例。

一個(gè)實(shí)用的定時(shí)任務(wù)示例

假設(shè)你想創(chuàng)建一個(gè)腳本,用于拷貝多個(gè)目錄內(nèi)容到一個(gè)路徑并打包作為備份,該如何實(shí)現(xiàn)?

通過 cron 定時(shí)任務(wù)就可以很容易實(shí)現(xiàn)該功能。

請看如下腳本:

  1. #!/usr/bin/bash
  2. echo "Backing up..."
  3. mkdir -p ~/.local/tmp/
  4. tar -Pc ~/Documents/ -f ~/.local/tmp/backup.gz

該腳本做了如下事情:

  1. 確保備份路徑目錄 ~/.local/tmp/ 存在。
  2. 將目錄 ~/Documents/ 下的所有內(nèi)容打包至文件 ~/.local/tmp/backup.gz

我們先來手動(dòng)運(yùn)行該腳本,看看它到底如何工作。

首先,我們在家目錄(~)下創(chuàng)建該腳本,命令為 backup_script,如下圖所示: 

然后編輯 backup_script 腳本,寫入上面那個(gè)腳本代碼。

接著,賦予 backup_script 可執(zhí)行權(quán)限: 

最后運(yùn)行腳本 ~/backup_script,進(jìn)行功能驗(yàn)證:

你可以通過運(yùn)行命令 tar -xf ~/.local/tmp/backup.gz -C <output_dir> 來進(jìn)行備份恢復(fù),這里 <output_dir> 是指文件要恢復(fù)到的路徑目錄。

接下來,就可以用 cron 工具來進(jìn)行定時(shí)任務(wù)運(yùn)行該腳本了。

舉個(gè)例子,假設(shè)需要每天的凌晨 3 點(diǎn)運(yùn)行該備份腳本,你可以在 crontab 中輸入如下命令:

  1. * 3 * * * ~/backup_script

這樣你就可以每天自動(dòng)進(jìn)行備份操作了。

后記

本文簡單介紹了定時(shí)任務(wù)功能。盡管我不確定 Linux 桌面用戶使用該功能多不多,但我知道定時(shí)任務(wù)功能被許多系統(tǒng)管理員廣泛應(yīng)用。 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-09-04 06:26:22

Linux桌面環(huán)境操作系統(tǒng)

2020-09-16 06:07:17

LinuxUbuntu LTS長期支持

2020-09-13 09:19:58

Linux Linux 發(fā)行版操作系統(tǒng)

2022-01-26 11:04:06

Linux上游upstream下游downstre

2020-09-22 07:33:50

Linux

2020-09-22 07:32:56

Linuxstat 命令滾動(dòng)發(fā)行版

2020-10-31 17:00:33

Linux顯示管理器

2021-12-20 14:56:07

LinuxTTY

2020-10-24 17:44:57

LinuxFOSS自由和開源軟件

2020-09-07 19:45:37

Linux顯示服務(wù)器黑話解釋

2020-11-10 11:29:36

LinuxGUICLI

2021-09-23 16:43:48

Linux黑話解釋

2020-11-10 22:57:32

LinuxGUICLI

2022-04-03 13:17:21

Linux黑話解釋GRUB

2010-01-07 13:38:41

Linux定時(shí)任務(wù)

2023-11-22 10:51:25

LinuxSuper

2020-10-13 12:29:38

Linux包管理器

2023-08-06 06:47:29

2016-12-27 19:29:14

Linux命令定時(shí)任務(wù)

2021-03-17 10:45:03

Linux服務(wù)器命令
點(diǎn)贊
收藏

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