深夜美女视频一区二区_91sao在线看片水片_亚洲日韩国语_精品中文字幕久久边人妻_高潮喷水香蕉视频色_白洁国产剧情Av手机在线_国产精品情侣呻吟_天空影院播放免费完整版视频_少妇高潮惨叫喷水在线观看_公交车大龟廷进我身体里

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

Linux 設置定時任務常用的三種方法

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

1、使用 cron 設置定時任務

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

1)編輯用戶的 crontab 文件

用于單個用戶設置定時任務,打開用戶的 crontab 文件,命令如下,

crontab -e

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

分 時 日 月 周 命令

例如,

每天凌晨3點運行腳本,如下,

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

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

2)使用預定義的 cron 目錄

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

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

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

chmod +x /path/to/script.sh

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

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

分 時 日 月 周 用戶 命令

例如,

以 root 每天凌晨3點運行腳本,如下,

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

2、使用 at 設置定時任務

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

1)安裝 at

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

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

sudo apt-get install at

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

sudo yum install at

2)啟動 at 服務

啟動并設置開機自動啟動:

sudo systemctl start atd
sudo systemctl enable atd

3)使用 at 設置定時任務

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

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

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

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

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

4)管理 at 任務

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

atq

刪除 at 任務,使用命令如下,

atrm <job number>

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

3、使用 systemd 定時器設置定時任務

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

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

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

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

[Unit]
Description=checkIP

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

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

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í)行任務。

如,

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

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

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

OnBootSec

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

OnStartupSec

Systemd

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

OnUnitActiveSec

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

OnUnitInactiveSec

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

OnCalendar

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

如,

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

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

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

AccuracySec

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

Unit

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

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

Persistent

如果設置了該字段,

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

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

WakeSystem

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


3)定時器使用相關命令

操作

命令

重新加載 systemd 配置

sudo systemctl daemon-reload

啟動定時器

sudo systemctl start mytask.timer

設置定時器在啟動時自動啟動

sudo systemctl enable mytask.timer

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

systemctl status mytask.timer

列出所有定時器

systemctl list-timers

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

journalctl -u mytask.service

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

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄