新聞中心

專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)普安免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
在 linux 系統(tǒng)中,查看 at 軟件包是否已安裝,可以使用 rpm -q 命令,如下所示:
[root@localhost ~]# rpm -q at
at-3.1.13-20.el7x86_64
可以看到,當(dāng)前系統(tǒng)已經(jīng)安裝 at 軟件包,若讀者所用系統(tǒng)未安裝,可使用如下命令進(jìn)行安裝:
[root@localhost ~]# yum -y install at
#省略輸出信息,最終出現(xiàn) Complete!,證明安裝成功。
除此之外,at 命令要想正確執(zhí)行,還需要 atd 服務(wù)的支持。atd 服務(wù)是獨(dú)立的服務(wù),啟動(dòng)的命令如下:
[root@localhost ~]# service atd start
正在啟動(dòng) atd: [確定]
如果想讓 atd 服務(wù)開機(jī)時(shí)自啟動(dòng),則可以使用如下命令:
[root@localhost ~]# chkconfig atd on
當(dāng)然,獨(dú)立服務(wù)的自啟動(dòng)也可以修改 /etc/rc.local 配置文件,具體怎么做看個(gè)人習(xí)慣。
安裝好 at 軟件包并開啟 atd 服務(wù)之后,at 命令才可以正常使用,不過在此之前,我們還要學(xué)習(xí)一下 at 命令的訪問控制。
訪問控制指的是允許哪些用戶使用 at 命令設(shè)定定時(shí)任務(wù),或者不允許哪些用戶使用 at 命令。大家可以將其想象成設(shè)定黑名單或白名單,這樣更容易理解。
at 命令的訪問控制是依靠 /etc/at.allow(白名單)和 /etc/at.deny(黑名單)這兩個(gè)文件來實(shí)現(xiàn)的,具體規(guī)則如下:
- 如果系統(tǒng)中有 /etc/at.allow 文件,那么只有寫入 /etc/at.allow 文件(白名單)中的用戶可以使用 at 命令,其他用戶不能使用 at 命令(注意,/etc/at.allow 文件的優(yōu)先級(jí)更高,也就是說,如果同一個(gè)用戶既寫入 /etc/at.allow 文件,又寫入 /etc/at.deny 文件,那么這個(gè)用戶是可以使用 at 命令的)。
- 如果系統(tǒng)中沒有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么寫入 /etc/at.deny 文件(黑名單)中的用戶不能使用 at 命令,其他用戶可以使用 at 命令。不過這個(gè)文件對(duì) root 用戶不生效。
- 如果系統(tǒng)中這兩個(gè)文件都不存在,那么只有 root 用戶可以使用 at 命令。
系統(tǒng)中默認(rèn)只有 /etc/at.deny 文件,而且這個(gè)文件是空的,因此,系統(tǒng)中所有的用戶都可以使用 at 命令。不過,如果我們打算控制用戶的 at 命令權(quán)限,那么只需把用戶寫入 /etc/at.deny 文件即可。
對(duì)于 /etc/at.allow 和 /etc/at.deny 文件的優(yōu)先級(jí),我們做一個(gè)實(shí)驗(yàn)來驗(yàn)證一下,命令如下:
[root@localhost ~]# ls -l /etc/at*
-rw-r--r--.1 root root 1 1月 30 2012 /etc/at.deny
#系統(tǒng)中默認(rèn)只有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.
#沒有權(quán)限使用at命令,切換成user1用戶,這個(gè)用戶已經(jīng)不能執(zhí)行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用戶可以執(zhí)行at命令。這時(shí)user1用戶既在/etc/at.deny文件中,又在/etc/at.allow文件中,但是/etc/at.allow文件的優(yōu)先級(jí)更高
[user1@localhost ~]$ exit
logout
#返回root身份
[root@localhost ~]# at 02:00
at>
#root用戶雖然不在/etc/at.allow文件中,但是也能執(zhí)行at命令,
#root用戶雖然不在/etc/at.allow文件中,但是也能執(zhí)行at命令,
#說明root用戶不受這兩個(gè)文件的控制
這個(gè)實(shí)驗(yàn)說明了 /etc/at.allow 文件的優(yōu)先級(jí)更高,如果 /etc/at.allow 文件存在,則 /etc/at.deny 文件失效。/etc/at.allow 文件的管理更加嚴(yán)格,因?yàn)橹挥袑懭脒@個(gè)文件的用戶才能使用 at 命令,如果需要禁用 at 命令的用戶較多,則可以把少數(shù)用戶寫入這個(gè)文件。/etc/at.deny 文件的管理較為松散,如果允許使用 at 命令的用戶較多,則可以把禁用的用戶寫入這個(gè)文件。不過這兩個(gè)文件都不能對(duì) root 用戶生效。
接下來正式介紹 at 命令。
at 命令的格式非常簡(jiǎn)單,基本格式如下:
[root@localhost ~] # at [選項(xiàng)] [時(shí)間]
有關(guān)此命令常用的幾個(gè)選項(xiàng)及各自含義如表 1 所示。
| 選項(xiàng) | 含義 |
|---|---|
| -m | 當(dāng) at 工作完成后,無論命令是否輸出,都用 E-mail 通知執(zhí)行 at 命令的用戶。 |
| -c 工作標(biāo)識(shí)號(hào) | 顯示該 at 工作的實(shí)際內(nèi)容。 |
| -t 時(shí)間 | 在指定時(shí)間提交工作并執(zhí)行,時(shí)間格式為 [[CC]YY]MMDDhhmm。 |
| -d | 刪除某個(gè)工作,需要提供相應(yīng)的工作標(biāo)識(shí)號(hào)(ID),同 atrm 命令的作用相同。 |
| -l | 列出當(dāng)前所有等待運(yùn)行的工作,和 atq 命令具有相同的額作用。 |
| -f 腳本文件 | 指定所要提交的腳本文件。 |
另外,表 2 羅列了此命令中關(guān)于時(shí)間參數(shù)可用的以下格式。
| 格式 | 用法 |
|---|---|
| HH:MM | 比如 04:00 AM。如果時(shí)間已過,則它會(huì)在第二天的同一時(shí)間執(zhí)行。 |
| Midnight(midnight) | 代表 12:00 AM(也就是 00:00)。 |
| Noon(noon) | 代表 12:00 PM(相當(dāng)于 12:00)。 |
| Teatime(teatime) | 代表 4:00 PM(相當(dāng)于 16:00)。 |
| 英文月名 日期 年份 | 比如 January 15 2018 表示 2018 年 1 月 15 號(hào),年份可有可無。 |
| MMDDYY、MM/DD/YY、MM.DD.YY | 比如 011518 表示 2018 年 1 月 15 號(hào)。 |
| now+時(shí)間 | 以 minutes、hours、days 或 weeks 為單位,例如 now+5 days 表示命令在 5 天之后的此時(shí)此刻執(zhí)行。 |
at 命令只要指定正確的時(shí)間,就可以輸入需要在指定時(shí)間執(zhí)行的命令。這個(gè)命令可以是系統(tǒng)命令,也可以是 Shell 腳本。舉幾個(gè)例子。
【例 1】
[coot@localhost ~]# cat /root/hello.sh
#!/bin/bash
echo "hello world!!"
#該腳本會(huì)打印"hello world!!"
[root@localhost ~]# at now +2 minutes
at> /root/hello.sh >> /root/hello.log
#執(zhí)行hello.sh腳本,并把輸出寫入/root/hello.log文件
at>
#使用Ctrl+D快捷鍵保存at任務(wù)
job 8 at 2013-07-25 20:54 #這是第8個(gè)at任務(wù),會(huì)在2013年7月25日20:54執(zhí)行
[root@localhost ~]# at -c 8
#查詢第8個(gè)at任務(wù)的內(nèi)容
...省略部分內(nèi)容...
#主要定義系統(tǒng)的環(huán)境變量
/root/hello.sh >> /root/hello.log
#可以看到at執(zhí)行的任務(wù)
【例 2】
[root@localhost ~J# at 02:00 2013-07-26
at> /bin/sync
at> /sbin/shutdown -h now
at>
job 9 at 2013-07-26 02:00
#在指定的時(shí)間關(guān)機(jī)。在一個(gè)at任務(wù)中是可以執(zhí)行多個(gè)系統(tǒng)命令的
在使用系統(tǒng)定時(shí)任務(wù)時(shí),不論執(zhí)行的是系統(tǒng)命令還是 Shell 腳本,最好使用絕對(duì)路徑來寫命令,這樣不容易報(bào)錯(cuò)。at 任務(wù)一旦使用
Ctrl+D 快捷鍵保存,實(shí)際上寫入了 /var/spool/at/ 這個(gè)目錄,這個(gè)目錄內(nèi)的文件可以直接被 atd 服務(wù)調(diào)用和執(zhí)行。
表 1 中提到了
atq 命令和
atrm 命令。atq 命令用于查看當(dāng)前等待運(yùn)行的工作,atrm 命令后者用于刪除指定的工作,它們的使用方法也很簡(jiǎn)單,這里給大家舉幾個(gè)簡(jiǎn)單的例子。
【例 3】atq 命令的用法。
[root@localhost ~]# atq
9 2013-07-26 02:00 a root
#說明root用戶有一個(gè)at任務(wù)在2013年7月26日02:00執(zhí)行,工作號(hào)是9
[root@localhost ~]# atrm [工作號(hào)]
#刪除指定的at任務(wù)
【例 4】atrm 命令的用法。
[root@localhost ~]# atrm 9
[root@localhost ~]# atq
#刪除9號(hào)at任務(wù),再查詢就沒有at任務(wù)存在了
網(wǎng)頁(yè)標(biāo)題:Linuxat命令詳解:定時(shí)執(zhí)行任務(wù)
當(dāng)前路徑:http://www.dlmjj.cn/article/ccdioeh.html


咨詢
建站咨詢
