你們好,我是互聯網老辛,本文是Linux運維-按部就班學運維-基礎篇的第52篇文章。bash
今天咱們一塊兒聊聊關於計劃任務當中的一個命令:at運維
你們都比較熟悉crontab計劃任務,對at命令可能稍微有些模式。 crontab通常指的是週期性的計劃任務。 可是咱們在生活中也有一些任務是單次執行的,好比20分鐘以後要重啓,2分鐘以後執行一個腳本ide
at適合用在應對臨時性和突發性的任務上。ui
計劃任務的安排方式分兩種:
一種是定時性的,也就是例行。就是每隔必定的週期就要重複來作這個事情
一種是突發性的,就是此次作完了這個事,就沒有下一次了,臨時決定,只執行一次的任務隊列
用命令來描述就是at和crontab這兩個命令:
at:它是一個能夠處理僅執行一次就結束的指令
crontab:它是會把你指定的工做或任務,好比:腳本等,按照你設定的週期一直循環執行下去crontab
at + 時間ci
at的服務是atdit
[root@xinsz08-15 ~]# chkconfig --list |grep atdatd 0:關閉 1:關閉 2:關閉 3:啓用 4:啓用 5:啓用 6:關閉
能夠查看到正在運行io
[root@xinsz08-15 ~]# service atd statusatd (pid 2635) 正在運行...[root@xinsz08-15 ~]#
選項 | 做用 |
---|---|
f | 指定包含具體指令的任務文件 |
q | 指定新任務的隊列名稱 |
l | 顯示待執行任務的列表 |
d | 刪除指定的待執行任務 |
m | 執行完畢後向用戶發送郵件 |
[root@zmgaosh ~]# at 21:50at> mkdir /root/2150 at> <EOT> (這裏按的是ctrl +D ) job 2 at Mon Jun 29 21:50:00 2020
查看計劃任務的兩種方式:table
方法一: at -l
[root@zmgaosh ~]# at -l 2 Mon Jun 29 21:50:00 2020 a root[root@zmgaosh ~]#
方法二: atq
[root@zmgaosh ~]# atq2 Mon Jun 29 21:50:00 2020 a root[root@zmgaosh ~]#
[root@zmgaosh ~]# at 5pm+3 daysat> /bin/touch /root/b.txt at> <EOT>job 3 at Thu Jul 2 17:00:00 2020
[root@zmgaosh ~]# at 17:00 tomorrowat> date >/root/17.txt at> <EOT>job 4 at Tue Jun 30 17:00:00 2020
方法一:
[root@zmgaosh ~]# at -l 查看現有的任務2 Mon Jun 29 21:50:00 2020 a root 4 Tue Jun 30 17:00:00 2020 a root 3 Thu Jul 2 17:00:00 2020 a root[root@zmgaosh ~]# at -c 4 #查看第四個任務的具體內容#!/bin/sh# atrun uid=0 gid=0# mail root 0umask 22 XDG_SESSION_ID=307; export XDG_SESSION_ID HOSTNAME=zmgaosh; export HOSTNAME SHELL=/bin/bash; export SHELL HISTSIZE=10000; export HISTSIZE SSH_CLIENT=120.244.154.174\ 3724\ 22; export SSH_CLIENT SSH_TTY=/dev/pts/0; export SSH_TTY USER=root; export (.....省略一大堆內容)cd /root || { echo 'Execution directory inaccessible' >&2 exit 1}${SHELL:-/bin/sh} << 'marcinDELIMITER3f0ead97' date >/root/17.txt marcinDELIMITER3f0ead97
能夠看到,最後執行的是 data > root/17.txt
方法二:
[root@zmgaosh ~]# ls /var/spool/ata0000201953b7e a0000301954b3c a0000401953ffc spool[root@zmgaosh ~]# tail -5 /var/spool/at/a0000401953ffc }${SHELL:-/bin/sh} << 'marcinDELIMITER3f0ead97' date >/root/17.txt marcinDELIMITER3f0ead97[root@zmgaosh ~]#
也能夠看到 date >/root/17.txt
以上兩個方法均可以
使用命令atrm
方法: atrm + 任務編號
[root@zmgaosh ~]# at -l2 Mon Jun 29 21:50:00 2020 a root 4 Tue Jun 30 17:00:00 2020 a root 3 Thu Jul 2 17:00:00 2020 a root[root@zmgaosh ~]# atrm 4[root@zmgaosh ~]# at -l2 Mon Jun 29 21:50:00 2020 a root 3 Thu Jul 2 17:00:00 2020 a root[root@zmgaosh ~]#
還記得 a) 裏面咱們設置的21:50建立文件嗎,寫到如今正好21:50,咱們來查看結果:
[root@zmgaosh ~]# ll總用量 12 drwxr-xr-x 2 root root 4096 6月 29 21:50 2150
咱們再來看看這個計劃任務執行完以後,現存的計劃任務還有幾個:
[root@zmgaosh ~]# atq3 Thu Jul 2 17:00:00 2020 a root[root@zmgaosh ~]# at -l3 Thu Jul 2 17:00:00 2020 a root[root@zmgaosh ~]#
能夠看到還剩一個,由於有一個咱們使用atrm +編號給刪除了。
咱們來總結下今天的內容:
做用 | 命令 |
---|---|
定製計劃任務: | at + 時間 |
查看計劃任務: | atq && at -l |
查看具體某一個的計劃任務: | at -c +編號 |
刪除計劃任務 | atrm +編號 |
是否是很簡單,趕忙操練起來吧,我是互聯網老辛,一個在教培行業不忘初心的人,歡迎點贊收藏,若是有問題也能夠留言與我一塊兒交流。咱們下期再見!