[root@localhost ~]# rpm -q at
at-3.1.13-20.el7x86_64
[root@localhost ~]# yum -y install at
#省略輸出信息,最終出現 Complete!,證明安裝成功。
[root@localhost ~]# service atd start
正在啟動 atd: [確定]
[root@localhost ~]# chkconfig atd on
當然,獨立服務的自啟動也可以修改 /etc/rc.local 配置文件,具體怎么做看個人習慣。訪問控制指的是允許哪些用戶使用 at 命令設定定時任務,或者不允許哪些用戶使用 at 命令。大家可以將其想象成設定黑名單或白名單,這樣更容易理解。
at 命令的訪問控制是依靠 /etc/at.allow(白名單)和 /etc/at.deny(黑名單)這兩個文件來實現的,具體規則如下:[root@localhost ~]# ls -l /etc/at*
-rw-r--r--.1 root root 1 1月 30 2012 /etc/at.deny
#系統中默認只有at.deny文件
[root@localhost ~]# echo user1 >> /etc/at.deny
[root@localhost ~]# cat /etc/at.deny
user1
#把user1用戶寫入/etc/at.deny文件
[root@localhost ~]# su - user1
[user1@localhost ~]$ at 02:00
You do not have permission to use at.
#沒有權限使用at命令,切換成user1用戶,這個用戶已經不能執行at命令了
[user1@localhost ~]$ exit
logout
#返回root身份
[root@localhost ~]# echo user1 >> /etc/at.allow
[root@localhost ~]# cat /etc/at.allow
user1
#建立/etc/at.allow文件,并在文件中寫入user1用戶
[root@localhost ~]# su - user1
[user1@localhost ~]$ at 02:00
at>
#切換成user1用戶,user1用戶可以執行at命令。這時user1用戶既在/etc/at.deny文件中,又在/etc/at.allow文件中,但是/etc/at.allow文件的優先級更高
[user1@localhost ~]$ exit
logout
#返回root身份
[root@localhost ~]# at 02:00
at>
#root用戶雖然不在/etc/at.allow文件中,但是也能執行at命令,
#root用戶雖然不在/etc/at.allow文件中,但是也能執行at命令,
#說明root用戶不受這兩個文件的控制
[root@localhost ~] # at [選項] [時間]
有關此命令常用的幾個選項及各自含義如表 1 所示。| 選項 | 含義 |
|---|---|
| -m | 當 at 工作完成后,無論命令是否輸出,都用 E-mail 通知執行 at 命令的用戶。 |
| -c 工作標識號 | 顯示該 at 工作的實際內容。 |
| -t 時間 | 在指定時間提交工作并執行,時間格式為 [[CC]YY]MMDDhhmm。 |
| -d | 刪除某個工作,需要提供相應的工作標識號(ID),同 atrm 命令的作用相同。 |
| -l | 列出當前所有等待運行的工作,和 atq 命令具有相同的額作用。 |
| -f 腳本文件 | 指定所要提交的腳本文件。 |
| 格式 | 用法 |
|---|---|
| HH:MM | 比如 04:00 AM。如果時間已過,則它會在第二天的同一時間執行。 |
| Midnight(midnight) | 代表 12:00 AM(也就是 00:00)。 |
| Noon(noon) | 代表 12:00 PM(相當于 12:00)。 |
| Teatime(teatime) | 代表 4:00 PM(相當于 16:00)。 |
| 英文月名 日期 年份 | 比如 January 15 2018 表示 2018 年 1 月 15 號,年份可有可無。 |
| MMDDYY、MM/DD/YY、MM.DD.YY | 比如 011518 表示 2018 年 1 月 15 號。 |
| now+時間 | 以 minutes、hours、days 或 weeks 為單位,例如 now+5 days 表示命令在 5 天之后的此時此刻執行。 |
[coot@localhost ~]# cat /root/hello.sh
#!/bin/bash
echo "hello world!!"
#該腳本會打印"hello world!!"
[root@localhost ~]# at now +2 minutes
at> /root/hello.sh >> /root/hello.log
#執行hello.sh腳本,并把輸出寫入/root/hello.log文件
at> <EOT>
#使用Ctrl+D快捷鍵保存at任務
job 8 at 2013-07-25 20:54 #這是第8個at任務,會在2013年7月25日20:54執行
[root@localhost ~]# at -c 8
#查詢第8個at任務的內容
...省略部分內容...
#主要定義系統的環境變量
/root/hello.sh >> /root/hello.log
#可以看到at執行的任務
[root@localhost ~J# at 02:00 2013-07-26
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 9 at 2013-07-26 02:00
#在指定的時間關機。在一個at任務中是可以執行多個系統命令的
Ctrl+D 快捷鍵保存,實際上寫入了 /var/spool/at/ 這個目錄,這個目錄內的文件可以直接被 atd 服務調用和執行。[root@localhost ~]# atq
9 2013-07-26 02:00 a root
#說明root用戶有一個at任務在2013年7月26日02:00執行,工作號是9
[root@localhost ~]# atrm [工作號]
#刪除指定的at任務
[root@localhost ~]# atrm 9
[root@localhost ~]# atq
#刪除9號at任務,再查詢就沒有at任務存在了
新聞熱點
疑難解答