午夜网站国产欧美_加勒比视频亚洲无码_91亚洲人人在字幕国产_18禁止美女爆乳免费网站_被消防员c哭高h野外糙汉动漫_午夜精品视频在线无码_gogowww人体大胆裸体午液_2021自拍偷区亚洲综合第一页_国产欧美一区二区精品性色超碰_99國產精品無碼

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

Linux 設(shè)置定時任務(wù)常用的三種方法

發(fā)布時間:2024-01-31 13:49:10

1、使用 cron 設(shè)置定時任務(wù)

cron 是 Linux 中最常用的定時任務(wù)調(diào)度器。它允許用戶在指定的日期和時間運(yùn)行腳本和命令。使用 cron 設(shè)置定時任務(wù)的三種方法如下,

1)編輯用戶的 crontab 文件

用于單個用戶設(shè)置定時任務(wù),打開用戶的 crontab 文件,命令如下,

crontab -e

在 crontab 文件中,添加一行來定義定時任務(wù),格式如下,

分 時 日 月 周 命令

例如,

每天凌晨3點運(yùn)行腳本,如下,

0 1 * * * /path/to/script.sh

添加完成后,保存文件退出。

2)使用預(yù)定義的 cron 目錄

Linux 系統(tǒng)通常包含一些預(yù)定義的目錄,用于存放定期執(zhí)行的腳本,目錄如下,

/etc/cron.daily
/etc/cron.hourly
/etc/cron.weekly
/etc/cron.monthly

系統(tǒng)將按照目錄名稱指定的頻率執(zhí)行這些腳本。另外還需要將腳本添加執(zhí)行權(quán)限。例如,

chmod +x /path/to/script.sh

3)在 /etc/crontab 文件中添加任務(wù)

對于系統(tǒng)級的任務(wù),可以直接在 /etc/crontab 文件中添加,添加方法和用戶的crontab 文件中添加方法差不多,但多了一個用戶的字段,格式如下,

分 時 日 月 周 用戶 命令

例如,

以 root 每天凌晨3點運(yùn)行腳本,如下,

0 3 * * * root /path/to/script.sh

2、使用 at 設(shè)置定時任務(wù)

用于設(shè)置一次性任務(wù),它會在指定的時間運(yùn)行一次任務(wù)。它允許指定將在未來某個時間點執(zhí)行的命令。

1)安裝 at

在某些 Linux 發(fā)行版中,at 服務(wù)可能默認(rèn)沒有安裝。您可以使用包管理器進(jìn)行安裝:

對于基于 Debian/Ubuntu 的系統(tǒng):

sudo apt-get install at

對于基于 RedHat/CentOS 的系統(tǒng):

sudo yum install at

2)啟動 at 服務(wù)

啟動并設(shè)置開機(jī)自動啟動:

sudo systemctl start atd
sudo systemctl enable atd

3)使用 at 設(shè)置定時任務(wù)

使用 at 后跟執(zhí)行任務(wù)的時間來設(shè)置定時任務(wù)。at 接受多種時間格式,例如,

在今天下午 10:30 執(zhí)行腳本:

echo "/path/to/script.sh" | at 22:30

在當(dāng)前時間之后的 30 分鐘執(zhí)行腳本:

echo "/path/to/script.sh" | at now + 30 minutes

4)管理 at 任務(wù)

列出待執(zhí)行的 at 任務(wù),使用命令如下,

atq

刪除 at 任務(wù),使用命令如下,

atrm <job number>

可以查看任務(wù)腳本中指定的日志文件或輸出文件,來檢查任務(wù)執(zhí)行狀態(tài)。

3、使用 systemd 定時器設(shè)置定時任務(wù)

systemd 定時器是一種替代傳統(tǒng) cron 的方法,用于安排定時任務(wù)。systemd 定時器由兩部分組成:一個 .service 文件和一個 .timer 文件。.service 文件定義了要執(zhí)行的任務(wù),而 .timer 文件設(shè)定了何時執(zhí)行這個任務(wù)。

1)創(chuàng)建服務(wù)文件

創(chuàng)建一個 .service 文件來定義要執(zhí)行的任務(wù)。例如,

創(chuàng)建 /etc/systemd/system/mytask.service 文件,內(nèi)容如下,

[Unit]
Description=checkIP

[Service]
Type=simple
ExecStart=/root/chechIP.sh

腳本添加執(zhí)行權(quán)限:

chmod +x /root/chechIP.sh

2)創(chuàng)建 .timer 文件

.service文件創(chuàng)建完成后,還需要創(chuàng)建一個定時器文件(.timer),例如,

創(chuàng)建 /etc/systemd/system/mytask.timer 文件,內(nèi)容如下,

[Unit]
Description=checkIP every 30s

[Timer]

OnActiveSec=60

OnUnitActiveSec=30
Unit=mytask.service 

[Install]
WantedBy=multi-user.target

systemd 定時器可用選項:


選項

描述

OnActiveSec

定時器生效后,多少時間開始執(zhí)行任務(wù)。

如,

OnUnitActiveSec=1h表示一小時執(zhí)行一次任務(wù),

OnUnitActiveSec=*-*-* 02:00:00表示每天凌晨兩點執(zhí)行,

OnUnitActiveSec=Mon *-*-* 02:00:00表示每周一凌晨兩點執(zhí)行。

OnBootSec

系統(tǒng)啟動后,多少時間開始執(zhí)行任務(wù)。

OnStartupSec

Systemd

進(jìn)程啟動后,多少時間開始執(zhí)行任務(wù)。

OnUnitActiveSec

該單元上次執(zhí)行后,等多少時間再次執(zhí)行。

OnUnitInactiveSec

定時器上次關(guān)閉后多少時間,再次執(zhí)行。

OnCalendar

基于絕對時間,而不是相對時間執(zhí)行。

如,

OnCalendar=*-*-* *:*:00 表示每分鐘觸發(fā)一次定時器執(zhí)行,

OnCalendar=*-10-15 00:00:00 表示每年的10月11號執(zhí)行,

OnCalendar=*-*-* 01:00:00 表示每天凌晨 1 點觸發(fā)執(zhí)行。

AccuracySec

如果任務(wù)必須推遲執(zhí)行,推遲的最大秒數(shù),默認(rèn)是 60 秒。

Unit

要執(zhí)行的實際任務(wù),

通常是同名的帶有 .service 后綴的單元。

Persistent

如果設(shè)置了該字段,

即使定時器到時沒有啟動,

也會自動執(zhí)行相應(yīng)的單元。

WakeSystem

如果系統(tǒng)休眠,是否自動喚醒系統(tǒng)。


3)定時器使用相關(guān)命令

操作

命令

重新加載 systemd 配置

sudo systemctl daemon-reload

啟動定時器

sudo systemctl start mytask.timer

設(shè)置定時器在啟動時自動啟動

sudo systemctl enable mytask.timer

查看定時器狀態(tài)

systemctl status mytask.timer

列出所有定時器

systemctl list-timers

查看日志(調(diào)試或檢查任務(wù)執(zhí)行情況)

journalctl -u mytask.service

上一篇:C++性能優(yōu)化大局觀
下一篇:2024 年的 Rust 與 Go,看完你悟了嗎?

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄