Linux一次性計劃任務at命令使用詳解

前言

計劃任務,就是有計劃的任務,就是我們想按照我們的計劃自動的執行任務。

關鍵點有 2 個:

第一個是計劃,第二個是自動。

1.一次性計劃任務的介紹

所謂一次性計劃任務,就是按照 計劃 隻 執行一次 的任務。

2.命令

Linux中的 at 命令就是用來創建一次性計劃任務的,at 命令有一個服務 atd 會以後臺模式運行,檢查當前的時間來決定是否運行“計劃”。

默認情況下,atd 服務每 60 秒檢查一次目錄,有“計劃”時,會檢查“計劃”運行時間,如果“計劃運行”的時間與當前時間匹配,則運行此“計劃”。

3.創建一次性計劃任務

首先,at 服務必須要開:

systemctl start atd

查看 atd 的狀態(是否為active):

systemctl status atd

查看是否開啟:

systemctl is-active atd

停掉atd服務(將不能再執行一次性計劃任務):

systemctl stop atd

[root@localhost ~]# vim /root/backup-yum-repo.sh
[root@localhost ~]# cat /root/backup-yum-repo.sh 
#!/bin/bash
mkdir /opt/yum-repo-backup-dir -p
cp -r /etc/yum.repos.d /opt/yum-repo-backup-dir/yum.repos.d-`date +"%Y-%m-%d-%H:%M:%S"`.bak
[root@localhost ~]# chmod +x backup-yum-repo.sh 

使用 at 命令來執行一次性備份 yum 倉庫文件,為瞭順利的查看 at 的執行結果,使用下面命令來關閉 ntp 同步,並設置當前時間

#timedatectl set-ntp 0 命令關閉瞭 ntp 同步
[root@localhost ~]# timedatectl set-ntp 0
#date -s "2021-12-1 16:58:30" 命令設置日期和時間
[root@localhost ~]# date -s "2021-12-1 16:58:30"

示例一:具體時間的一次性計劃任務

下午的5點執行,即17:00執行(如果此時的時間已經過瞭當天下午,那麼,順延到第二天)

# 下面命令中的 <EOT> 是提交 at 的計劃任務,使用ctrl+d即可出現
[root@localhost ~]# at 5:00PM
warning: commands will be executed using /bin/sh
at> /root/backup-yum-repo.sh
at> <EOT>
job 5 at Wed Dec  1 17:00:00 2021
# atq 查看一次性計劃任務
[root@localhost ~]# atq
5	Wed Dec  1 17:00:00 2021 a root
[root@localhost ~]# date;atq;ls /opt/yum-repo-backup-dir/
Wed Dec  1 16:59:50 CST 2021
5	Wed Dec  1 17:00:00 2021 a root
[root@localhost ~]# date;atq;ls /opt/yum-repo-backup-dir/
Wed Dec  1 17:00:02 CST 2021
yum.repos.d-2021-12-01-17:00:00.bak

示例二:具體日期的一次性計劃任務

2021年12月12號的此刻執行某腳本。

如果沒有指定time,那麼就是定制計劃任務的time作為執行天的time。(若指定的日期為當天日期,則會在下一分鐘執行計劃任務)

[root@localhost ~]# at 2021-12-12
warning: commands will be executed using /bin/sh
at> /root/backup-yum-repo.sh
at> <EOT>
job 6 at Sun Dec 12 17:07:00 2021
[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root

示例三:具體日期和時間的一次性計劃任務

在2021年12月13號的12點12分執行

[root@localhost ~]# at 12:12 2021-12-13
warning: commands will be executed using /bin/sh
at> /root/backup-yum-repo.sh
at> <EOT>
job 7 at Mon Dec 13 12:12:00 2021
[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root

示例四:在5天後的9點15分執行

[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
[root@localhost ~]# at 9:15 + 5 days
warning: commands will be executed using /bin/sh
at> /root/backup-yum-repo.sh
at> <EOT>
job 8 at Mon Dec  6 09:15:00 2021
[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
8	Mon Dec  6 09:15:00 2021 a root

示例五:在周一執行

[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
8	Mon Dec  6 09:15:00 2021 a root
[root@localhost ~]# at monday
warning: commands will be executed using /bin/sh
at> /root/backup-yum-repo.sh            
at> <EOT>
job 9 at Mon Dec  6 17:18:00 2021
[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
8	Mon Dec  6 09:15:00 2021 a root
9	Mon Dec  6 17:18:00 2021 a root

註:不能用過去的時間使用 at ,沒有後悔藥的

4.一次性計劃任務管理

4.1 查看一次性計劃任務

atq

[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
8	Mon Dec  6 09:15:00 2021 a root
9	Mon Dec  6 17:18:00 2021 a root

4.2 刪除一次性計劃任務

atrm

[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
8	Mon Dec  6 09:15:00 2021 a root
9	Mon Dec  6 17:18:00 2021 a root
[root@localhost ~]# atrm 8
[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
9	Mon Dec  6 17:18:00 2021 a root

4.3查看一次性計劃任務的詳細信息

at -c job_id

[root@localhost ~]# atq
6	Sun Dec 12 17:07:00 2021 a root
7	Mon Dec 13 12:12:00 2021 a root
9	Mon Dec  6 17:18:00 2021 a root
[root@localhost ~]# at -c 7

5.一次性計劃任務使用控制

at.allow (/etc/at.allow)

at.deny (/etc/at.deny)

用戶可以使用 at 命令設置一次性計劃任務,那麼 也可以控制哪些用戶可以使用計劃任務(在白名單中),哪些用戶不可以使用計劃任務

at 一次性計劃任務的白名單是 at.allow ,黑名單是 at.deny 。不建議既使用白名單,又使用黑名單。

建議使用白名單,at.allow 的優先級高於 at.deny。即:wang 既在白名單,又在黑名單,則 wang 可以執行at

默認在rhel8.0系統中沒有 at.allow 文件,可以自己創建。

# 將用戶 wang 添加到黑名單
[root@localhost ~]# cat /etc/at.deny 
wang
[root@localhost ~]# su - wang
[wang@localhost ~]$ at
You do not have permission to use at.
# 將用戶 wang 既添加到黑名單,又添加到白名單
[root@localhost ~]# cat /etc/at.allow
wang
[root@localhost ~]# cat /etc/at.deny 
wang
[root@localhost ~]# su - wang
[wang@localhost ~]$ at
Garbled time

到此這篇關於Linux一次性計劃任務at命令使用詳解的文章就介紹到這瞭,更多相關Linux一次性計劃任務內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: