国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了Linux systemd 定時(shí)任務(wù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

哈嘍大家好,我是咸魚。

說到 Linux 定時(shí)任務(wù),大家用得最多的就是 crond 服務(wù),但其實(shí) systemd 也有類似的功能。我們不但可以通過 systemd 來管理服務(wù),還能設(shè)置定時(shí)任務(wù),那就是 systemd timer。

與 crond 相比,systemd 定時(shí)任務(wù)具有以下優(yōu)點(diǎn):

  • 更高的精度:systemd 定時(shí)任務(wù)可以精確到秒,而 crond 只能精確到分鐘。
  • 可以限制資源使用:使用 systemd 定時(shí)任務(wù)可以設(shè)置內(nèi)存和 CPU 的使用限制,比如最多使用 50% 的 CPU。
  • 更靈活的配置:systemd 定時(shí)任務(wù)可以通過條件、依賴關(guān)系等進(jìn)行配置,以控制任務(wù)的執(zhí)行。相比之下,crond 的配置相對(duì)簡(jiǎn)單,靈活性較低。

舉個(gè)例子,假設(shè)我們要通過 crond 配置多個(gè)大文件的遠(yuǎn)程備份(使用 scp、rsync 或 ftp 的方式),但由于大文件的網(wǎng)絡(luò)傳輸時(shí)間不確定,因此下一個(gè)文件的備份任務(wù)開始時(shí)間幾乎都是按照經(jīng)驗(yàn)估計(jì)的。

這可能導(dǎo)致上一個(gè)任務(wù)的網(wǎng)絡(luò)傳輸尚未完成,下一個(gè)任務(wù)已經(jīng)開始,同時(shí)占用網(wǎng)絡(luò)帶寬,然后又啟動(dòng)了下一個(gè)任務(wù),形成惡性循環(huán)。

而使用 systemd timer 可以建立任務(wù)之間的依賴關(guān)系,例如在第一個(gè)備份任務(wù)完成后再啟動(dòng)第二個(gè)備份任務(wù),以此類推。

systemd timer 原理

systemd 定時(shí)任務(wù)基于 systemd 的單元管理器。它使用兩種類型的單元來管理定時(shí)任務(wù):.timer 單元和 .service 單元。

  • .timer 單元:
    • .timer 單元定義了定時(shí)規(guī)則,包括啟動(dòng)時(shí)間、間隔時(shí)間等。
    • 每個(gè) .timer 單元都對(duì)應(yīng)一個(gè)或多個(gè)關(guān)聯(lián)的 .service 單元。
  • .service 單元:
    • .service 單元定義了要在計(jì)時(shí)器觸發(fā)時(shí)運(yùn)行的服務(wù)或命令。
    • 當(dāng) .timer 觸發(fā)時(shí),相關(guān)聯(lián)的 .service 單元將被啟動(dòng)。

systemd 定時(shí)任務(wù)原理是:systemd 定期檢查每個(gè) .timer 單元中定義的定時(shí)規(guī)則,以確定是否觸發(fā)相應(yīng)的定時(shí)器。一旦定時(shí)器觸發(fā),systemd 將啟動(dòng)與該定時(shí)器關(guān)聯(lián)的 .service 單元,從而執(zhí)行預(yù)定的任務(wù)。

在正式介紹 systemd 定時(shí)任務(wù)之前,我們先要了解什么是單元(unit)。

systemd 單元

簡(jiǎn)單來講,單元就是 systemd 的最小管理單位,是單個(gè)進(jìn)程的描述。一個(gè)個(gè)單元相互調(diào)用和依賴,組成一個(gè)龐大的任務(wù)管理系統(tǒng)。

systemd 中的 unit 有很多類型,下面是一些常見的 unit 類型:

  • .service:service 單元,也就是我們常說的系統(tǒng)服務(wù)
  • .target:target 單元,其實(shí)就是一堆 unit 的集合,比如常見的 multi-user.target
  • .timer:timer 單元,負(fù)責(zé)定時(shí)任務(wù)。
  • .slice:slice 單元,負(fù)責(zé)資源的分配。

每個(gè) unit 都有一個(gè)描述文件(unit 負(fù)責(zé)干什么、怎么干...),它們分散在三個(gè)目錄:

  • /lib/systemd/system:系統(tǒng)默認(rèn)的 unit 文件
  • /etc/systemd/system:包含用戶自定義的 unit 文件,如果設(shè)置了開機(jī)自啟動(dòng),則該目錄下的 unit 描述文件會(huì)創(chuàng)建一個(gè)符號(hào)鏈接。
  • /usr/lib/systemd/system:用戶自己定義的 unit 文件,也會(huì)包含一些系統(tǒng)默認(rèn)的 unit 文件

大多數(shù) linux 發(fā)行版中 /lib/usr/lib的軟鏈接,所以 1 和 3 其實(shí)是同一目錄,作用自然應(yīng)該是相同的。

其實(shí)可以簡(jiǎn)單分成兩類:

  • /etc/systemd/system:用戶自定義的 unit 文件
  • /usr/lib/systemd/system:系統(tǒng)默認(rèn)的 unit 文件和用戶安裝軟件的 unit 文件
# 查看所有 unit
$ systemctl list-unit-files

# 查看所有 Service unit
$ systemctl list-unit-files --type service

# 查看所有 Timer unit
$ systemctl list-unit-files --type timer

關(guān)于 systemd unit 相關(guān)的內(nèi)容這里就不細(xì)講了,大家可以看我之前的文章:《systemctl 命令設(shè)置開機(jī)自啟動(dòng)失敗 》

設(shè)置 systemd 定時(shí)任務(wù)

有一個(gè)檢查 https 證書是否過期的腳本 check_https.sh,我們現(xiàn)在需要系統(tǒng)定期執(zhí)行這個(gè)腳本,除此之外,系統(tǒng)在開機(jī)之后也會(huì)執(zhí)行這個(gè)腳本。

首先創(chuàng)建一個(gè) service unit

[root@localhost ~]# cat /usr/lib/systemd/system/check-https.service
[Unit]
Description=check https certificates

[Service]
Type=oneshot
ExecStart=check_https.sh

[Install]
WantedBy=multi-user.target

Type=oneshot 表示 service 以一次性(Oneshot)方式運(yùn)行。這意味著當(dāng)啟動(dòng) service 時(shí),它將執(zhí)行一次,并在完成后退出。

然后我們創(chuàng)建一個(gè) timer unit

Service unit 只是定義了如何執(zhí)行任務(wù),要定時(shí)執(zhí)行這個(gè) Service,還必須定義 Timer unit

[root@localhost ~]# cat /usr/lib/systemd/system/check-https.timer
[Unit]
Description=Runs check https every day

[Timer]
OnUnitActiveSec=24h
Unit=check-https.service

[Install]
WantedBy=multi-user.target

我們著重來看下 [Timer] 部分:

  • OnActiveSec:定時(shí)任務(wù)生效后,多少時(shí)間開始執(zhí)行任務(wù)
  • OnBootSec:系統(tǒng)啟動(dòng)后,多少時(shí)間開始執(zhí)行任務(wù)
  • OnStartupSec:Systemd 進(jìn)程啟動(dòng)后,多少時(shí)間開始執(zhí)行任務(wù)
  • OnUnitActiveSec:該 unit 上次執(zhí)行后,等多少時(shí)間再次執(zhí)行
  • OnUnitInactiveSec: 定時(shí)任務(wù)上次關(guān)閉后多少時(shí)間,再次執(zhí)行
  • OnCalendar:基于絕對(duì)時(shí)間,而不是相對(duì)時(shí)間執(zhí)行
  • AccuracySec:如果因?yàn)楦鞣N原因,任務(wù)必須推遲執(zhí)行,推遲的最大秒數(shù),默認(rèn)是60秒
  • Unit:真正要執(zhí)行的任務(wù),默認(rèn)是同名的帶有.service 后綴的 unit
  • Persistent:如果設(shè)置了該字段,即使定時(shí)任務(wù)到時(shí)沒有啟動(dòng),也會(huì)自動(dòng)執(zhí)行相應(yīng)的 unit
  • WakeSystem:如果系統(tǒng)休眠,是否自動(dòng)喚醒系統(tǒng)

上面的 timer 文件里,OnUnitActiveSec=24h 表示 24 小時(shí)執(zhí)行一次任務(wù)。

下面是其他的寫法:

1、在系統(tǒng)啟動(dòng) 15 分鐘后執(zhí)行,并在系統(tǒng)運(yùn)行時(shí),每周執(zhí)行一次

[Timer]
OnBootSec=15min
OnUnitActiveSec=1w
Unit=check-https.service

2、每周周一執(zhí)行,如果到時(shí)定時(shí)任務(wù)沒有啟動(dòng),會(huì)立即執(zhí)行

[Timer]
OnCalendar=weekly
Persistent=true
Unit=check-https.service

3、每周日凌晨三點(diǎn)執(zhí)行(時(shí)間格式:Year-Month-Day Hour:Minute:Second

[Timer]
OnCalendar=Sun *-*-* 03:00:00
Unit=check-https.service

官方文檔:https://www.freedesktop.org/software/systemd/man/latest/systemd.time.html

然后我們啟動(dòng)這個(gè)定時(shí)任務(wù),并設(shè)置開機(jī)自啟動(dòng)

# 重新加載配置
systemctl  daemon-reload

systemctl start check-https.timer

systemctl enable check-https.timer

其他一些定時(shí)任務(wù)命令:文章來源地址http://www.zghlxwxcb.cn/news/detail-852479.html

# 查看所有正在運(yùn)行的定時(shí)任務(wù)
systemctl list-timers

# 關(guān)閉定時(shí)任務(wù)
systemctl stop check-https.timer

# 查看定時(shí)任務(wù)狀態(tài)
systemctl status check-https.timer

到了這里,關(guān)于Linux systemd 定時(shí)任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

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

    crond任務(wù)調(diào)度 系統(tǒng)在某個(gè)時(shí)間執(zhí)行特定的命令或程序 (service crond start/restart) crontab -e 編輯crontab定時(shí)任務(wù) -l 查詢crontab任務(wù) -r 刪除當(dāng)前用戶所有的crontab任務(wù) ***** command 第一個(gè):第幾分鐘 0-59 第二個(gè):第幾小時(shí) 0-23 第三個(gè):第幾天 1-31 第四個(gè):第幾月 1-12 第五個(gè):星期幾 0-7(

    2024年02月09日
    瀏覽(39)
  • 【linux】定時(shí)任務(wù)講解

    比如從現(xiàn)在開始,設(shè)置30分鐘后自動(dòng)關(guān)機(jī),這時(shí)就可以使用at命令 第一行是定義從現(xiàn)在開始算,30分鐘后安排一個(gè)任務(wù); 第二行是到了時(shí)間后執(zhí)行關(guān)機(jī)操作; 第三行是 EOT,這不是使用鍵盤輸入的,而是使用了組合鍵Ctrl+D,表示輸入結(jié)束; 第四行是系統(tǒng)提示有一個(gè)任務(wù)將在2

    2024年02月10日
    瀏覽(18)
  • Linux定時(shí)任務(wù)

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

    注意:如果想要在Linux操作系統(tǒng)中執(zhí)行定時(shí)任務(wù)需要先保證 crond 服務(wù)是開啟的(默認(rèn)是開啟的) 1.通過制定、編輯和開啟定時(shí)任務(wù)。添加定時(shí)任何的格式是: 時(shí)間 需要執(zhí)行的任務(wù)

    2024年02月06日
    瀏覽(16)
  • Linux 設(shè)置定時(shí)任務(wù)

    ?? 作者: Linux猿 ?? 簡(jiǎn)介: CSDN博客專家??,華為云享專家??,Linux、C/C++、云計(jì)算、物聯(lián)網(wǎng)、面試、刷題、算法盡管咨詢我,關(guān)注我,有問題私聊! ?? 歡迎小伙伴們點(diǎn)贊??、收藏?、留言?? 本篇文章主要介紹在 Linux 環(huán)境下如何設(shè)置定時(shí)任務(wù)。? 本文使用 CentOS 7.9 進(jìn)行

    2024年02月15日
    瀏覽(25)
  • linux中設(shè)置定時(shí)任務(wù)

    可以使用 Linux 中的 crontab 工具來設(shè)置定時(shí)任務(wù),具體步驟如下: 打開終端,輸入 crontab -e 命令,打開 crontab 編輯器。 在編輯器中,輸入 30 9 * * 1-5 command ,其中 30 9 * * 1-5 表示每周一到周五的 9:30, command 表示需要執(zhí)行的命令。 編輯完成后,保存并退出編輯器即可。 例如,如

    2024年02月16日
    瀏覽(30)
  • linux- 定時(shí)任務(wù)清理日志

    linux- 定時(shí)任務(wù)清理日志

    ??linux是一個(gè)很能自動(dòng)產(chǎn)生文件的系統(tǒng),在實(shí)際部署運(yùn)行中,發(fā)現(xiàn)日志文件會(huì)占用大量?jī)?nèi)存,且很多日志文件過了時(shí)效是可以刪除的。本文介紹了CentOS自動(dòng)刪除n天前日志、郵件、備份等相關(guān)文件的過程。 查找命令: find 對(duì)應(yīng)目錄 -mtime +天數(shù) -name \\\"文件名匹配邏輯\\\" 具體參數(shù)

    2024年02月14日
    瀏覽(23)
  • Linux中定時(shí)任務(wù)

    自定義時(shí)間 自動(dòng)更新時(shí)間 是指系統(tǒng)某個(gè)時(shí)間執(zhí)行的特定命令或程序 任務(wù)調(diào)度分類: 系統(tǒng)工作:有些重要的工作必須周而復(fù)始的運(yùn)行 個(gè)別用戶工作 命令介紹 選項(xiàng) 含義 -e 編輯定時(shí)任務(wù) -l 查詢?nèi)蝿?wù) 快速入門 參數(shù)細(xì)節(jié)說明 序號(hào) 含義 范圍 第一個(gè) * 一小時(shí)中的第幾分鐘 0-59 第二

    2024年02月09日
    瀏覽(10)
  • 【Linux】crontab 定時(shí)任務(wù)

    【Linux】crontab 定時(shí)任務(wù)

    當(dāng)你需要在Linux系統(tǒng)中定期執(zhí)行某些任務(wù)時(shí),crontab(cron table)是一個(gè)非常有用的工具。它允許你根據(jù)預(yù)定的時(shí)間表創(chuàng)建和管理定時(shí)任務(wù)。 按照進(jìn)程的功能和運(yùn)行的程序分類,進(jìn)程可劃分為兩大類。 系統(tǒng)進(jìn)程 :可以執(zhí)行 內(nèi)存資源分配和進(jìn)程切換等 管理工作;而且,該進(jìn)程的

    2024年02月10日
    瀏覽(29)
  • Linux 實(shí)操篇--定時(shí)任務(wù)調(diào)度

    Linux 實(shí)操篇--定時(shí)任務(wù)調(diào)度

    crontab 進(jìn)行定時(shí)任務(wù)的設(shè)置 概述 任務(wù)調(diào)度:是指系統(tǒng)在某個(gè)時(shí)間執(zhí)行的特定的命令或程序。 任務(wù)調(diào)度分類:1.系統(tǒng)工作:有些重要的工作必須周而復(fù)始地執(zhí)行。如病毒掃描等 個(gè)別用戶工作:個(gè)別用戶可能希望執(zhí)行某些程序,比如對(duì)mysql 數(shù)據(jù)庫(kù)的備份。 示意圖 基本語(yǔ)法 cron

    2024年02月07日
    瀏覽(16)
  • linux-系統(tǒng)定時(shí)任務(wù)cron

    linux-系統(tǒng)定時(shí)任務(wù)cron

    cron是linux系統(tǒng)中以后臺(tái)進(jìn)程模式周期性地執(zhí)行命令或指定程序任務(wù)地服務(wù)軟件。默認(rèn)安裝完linux系統(tǒng)之后,cron服務(wù)軟件便會(huì)啟動(dòng),服務(wù)對(duì)應(yīng)的進(jìn)程名字為crond。corn服務(wù)會(huì)定期(默認(rèn)每分鐘檢查一次)檢查系統(tǒng)中是否有需要執(zhí)行的任務(wù)工作計(jì)劃。 cron工具對(duì)應(yīng)的crontab命令依賴于

    2024年04月12日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包