1. 程式人生 > >linux命令詳解之(at)

linux命令詳解之(at)

關閉 服務啟動 安全問題 分隔 sta 設定 tmp 指示 命令的使用

在Linux下,有兩個命令可以用來作為計劃任務而執行,
at:一次性定時任務計劃執行
crontab :每天定時任務計劃執行


以下僅說一下一次性任務計劃執行(at)
要使用一次性任務計劃,linux必須要有負責這個計劃任務的五福,那就是atd服務
但是並非所有的linux distribution都默認會打開,我們需要手動激活愛聽的任務
#:/etc/init.d/atd start
#:/etc/init.d/atd stop
atd服務啟動支持用法:/etc/init.d/atd {start|stop|restart|crondrestart|status}

出現如下服務,證明系統未安裝愛聽的服務,如圖:
技術分享圖片

我們需要手動安裝
#:yum install - y at
#:apt-get install at
技術分享圖片



啟動服務:

#:/etc/init.d/atd start
技術分享圖片

如果擔心啟動是否執行OK的話,可使用命令查看:
#;ps aux |grep atd
技術分享圖片

at 命令參數
at [參數] [時間]
-m:當指定的任務被完成之後,將給用戶發送郵件,即使沒有標準輸出
-I:atq的別名
-d:atrm的別名
-v:顯示任務將被執行的時間
-c:打印任務的內容到標準輸出
-V:顯示版本信息
-q:使用指定隊列
-f:從指定文件讀入任務,而不是從標準輸入讀入
-t:一時間參數的形式提交要運行的任務

at時間格式:
HH:AM
ex>04:00 #在今日的HH:MM是可執行,弱勢該是可以超過,在在明天的此時可執行
HH:MM YYYY-MM-DD
ex>04:00 2016-03-17
強制規定在某年某月的某一天的特殊時刻進行該任務
HH:MM[am|pm] [Month] [date]
ex>04pm March 17
強制在某年某月的的某時刻進行該任務
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex>now + 5 minutes
ex<04pm + 3days
某個時間點再加幾個事件後才執行該任務

使用實例:

1.三天後的下午5點執行/bin/ls
#:at 5pm+3 days
at>/bin/ls
at>按ctrl+D
技術分享圖片

2.明天17點鐘,輸出時間到指定文件內
#:at 17:00 tomorrow
at>date>/tmp/2016.log
at>按ctrl+D
技術分享圖片

3.使用atq查看系統沒有執行的工作任務
#:atq
技術分享圖片

4.刪除已經設定的任務
#:atq
#atrm 任務號
#atq
技術分享圖片

5.顯示已經設定的任務內容
#:at -c 任務號
技術分享圖片
中間省略N多
技術分享圖片

atd設置開機啟動:
#:chkconfig atd on #當前用戶
#chkconfig --level 2345 atd on #修改服務器的默認啟動等級

at命令的安全問題:

如何達到at命令的使用可控,這是一個問題,不過我哦們可以使用
/etc/at.allow 與 /etc/at.deny
來對at的使用進行限制,其工作原理如下:
先尋找/etc/at.allow,寫入這個文件的使用者能用,沒有在此文件中的則不能使用(即使沒有寫在/etc/at.deny中)
如果沒有/etc/at.allow不存在,尋找/etc/at.deny文件,寫在此文件中的使用者不能使用,而沒有在此文件中的使用者,就可以使用
如果兩個文件讀不存在,那麽只有root可以使用at命令。

一般情況下。allow的管理較為嚴格,deny則較為松散
一般情況下,按章完成後系統通常會保留一個空的/etc/at/deny文件,儀式是允許所有人使用,如果不希望某人使用的話,直接把使用者的賬戶跳入/etc/at.deny裏面即可。註意:一個賬號一行

AT命令是Windows XP中內置的命令,它也可以媲美Windows中的“計劃任務”,而且在計劃的安排、任務的管理、工作事務的處理方面,AT命令具有更強大更神通的功能。AT命令可在指定時間和日期、在指定計算機上運行命令和程序。

註意:必須正在開啟Task scheduler服務才能使用 at 命令。可以在命令窗口中輸入net start schedule啟動它,
停止則使用net stop schedule


1. 具體功能

  Windows NT Server 的服務程序管理器只能設置某項服務的啟動方式(自動、手動、失效),而在日常管理工作中,常常要求某項服務能定時開啟、關閉。 Windows NT Server 提供的 AT 命令能夠實現這一點。利用它可實現 RAS服務定時開關, 其具體步驟如下:

  a. 在 “ 設置 ”---“ 控制面板 ”---“ 管理工具 ”---“ 服務 ”中啟動 Schedule 服務,並將其啟動方式屬性設置為自動。

  b. 在命令窗口中使用 AT 命令設置服務程序的定時啟動關閉。


2. 語法詳解

  AT [\\computername] time [/interactive] [/every:date[, ]|next:date[, ]] ″command″


3. 參數說明 :

  無參數: 顯示所有已設置的計劃命令情況。

  \\computername : 指示執行該命令的計算機名,如省略則在本機執行。

   time : 命令執行時間 , 將時間以 24 小時標記( 00:00 [ 午夜 ]到 23:59 )的方式表示為小時:分鐘

  /interactive : 當程序執行時是否與正在登錄的用戶進行交互。

  /every:date[, ] : 指定程序執行的日期 ,將 date 指定為星期的一天或多天 (M,T,W,Th,F,S,Su) ,或月的一天或多天(使用 1 到 31 的數字)。用逗號分隔多個日期項。如果省略了 date ,將假定為該月的當前日期。

  next:date[, ] : 指定程序下一次執行的日期。

  ″command″ : 定時執行的 命令、程序( .exe 或 .com )或批處理程序( .bat 或 .cmd )。當命令需要路徑作為參數時,請使用絕對路徑,也就是從驅動器號開始的整個路徑。如果命令在遠程計算機上,請指定服務器和共享名的 UNC 符號,而不是遠程驅動器號。 如果命令不是可執行 (.exe) 文件,必須在命令前加上 cmd /c ,例如: cmd /c dir > c:\test.out

  AT [\\computername] [[id][/delete][/yes]]

  參數含義:

  id : 分配給計劃命令的識別號碼,可由不帶參數的 AT 命令查到。

  /delete : 取消指定的計劃命令,如果 id 省略的話,取消所有的計劃命令。

  /yes : 強制對所有的取消詢問回答 yes 。


4. 例舉說明

例子 1 :查看 at 所有參數


例子 2 :每日 19 : 00 啟動,次日 7 : 30 關閉 RAS 服務的命令


例子 3 :先停止計劃任務、然後再啟動計劃任務


例子 4 :到了 12:42 ,電腦會出現 “ 系統關機 ” 對話框,並默認 30 秒延時自動關機

  at 12:42 ShutDown –S –T30

例子 5:向192.168.1.6定時提醒“與朋友約會的時間到了,快點準備出發吧!”

  at 12:00 Net Send 192.168.1.6與朋友約會的時間到了,快點準備出發吧!

例子 6:在每,周六早上一點,電腦定時啟動My_BackUp.bat批處理文件

  at 1:00AM /Every:Saturday My_BackUp.bat

例子 7:刪除標識編號為5的計劃任務

  at 5 /Delete


下面說明shutdown.exe的參數使用

Shutdown.exe的參數,每個都具有特定的用途,執行每一個都會產生不同的效果,比如“-s”就表示關閉本地計算機,“-a”表示取消關機操作,下面列出了更多參數,大家可以在Shutdown.exe中按需使用。

  -f:強行關閉應用程序

  -m \\計算機名:控制遠程計算機

  -i:顯示圖形用戶界面,但必須是Shutdown的第一個選項

  -l:註銷當前用戶

  -r:關機並重啟

  -t時間:設置關機倒計時

  -c "消息內容":輸入關機對話框中的消息內容(不能超127個字符)


at:計劃任務,在特定的時間執行某項工作,在特定的時間執行一次。
格式:at+時間

1:date //查看系統當前時間

at 時間 //系統計劃啟動任務時間

at> date >/root/1.txt //date:系統計劃啟動任務時間執行date命令;/root/1.txt執行命令寫入位

置和文件
ctrl+d退出 //退出at命令

2:date //查看系統當前時間

at 時間 //系統計劃啟動任務時間

at> init 0 /root/2.txt //init 0:系統計劃啟動任務時間執行init 0(關機)命令;/root/2.txt執

行命令寫入位置和文件

3:在固定時間內添加一個用戶(這時建立的用戶沒有密碼)
#at 12:00(時間) //at命令設定12:00執行一項操作

at>useradd aaa //在at命令裏設定添加用戶
aaa
ctrl+d //退出at命令

tail -f /etc/passwd //查看/etc/passwd文件後十行是否增加了一個用戶aaa

計劃任務結束後,查看任務是否寫入文件中,可以用cat或vi命令查看。
格式:cat(vi)+(路徑)文件名

1:cat(vi) 1.txt
2月
6 09:21:28 CST 2005
計劃任務設定後,在沒有執行之前我們可以用atq命令來查看系統沒有執行工作任務。

格式:
atq
例:
atq
1 2005-02-06 09:23 a root

啟動計劃任務後,如果不想啟動設定好的計劃任務可以使用atrm命令刪除。
格式:atrm+任務號

:at rm 1 //刪除計劃任務
1
atq //查看計劃任務是否刪除

還可以進入到/var/spool/at目錄裏把計劃任務刪除,計劃任務的文件都保存在該目錄裏,可以用rm -f

文件名來刪除(以文件的形式刪除計劃任務,因為計劃任務是以文件形式保存在該目錄中)
:#cd /var/spool/at //進入到/var/spool/at目錄中

ls //顯示目錄中所有文件

rm -f a0000a0119b0df //刪除計劃任務

在通常情況下,超級用戶都可以使用這個命令。對於其他用戶來說,能否可以使用就取決於兩個文

:/etc/at.allow和/etc/at.deny。
“用戶名”寫入/etc/at.deny中,用戶不能執行at命令(管理員限制用戶使用at命令)。

例:useradd text //新建一個text用戶

ls /etc/at.deny //查看at.deny文件內容

vi /etc/at.deny //對at.deny文件進行編輯

text //對at.deny文件進行編輯,寫入text用戶名,進行at命令限制,然後wq(保存退出)

cat /etc/at.deny //顯示at.deny文件內容

su - text //切換到text用戶

at 12:00 //text用戶執行at命令,如果被限制則出現下面的提示。

You do not have permission to use at.你不允許使用at這個命令

at.allow比at.deny優先級高
at.allow文件中有的用戶可以執行at,沒有則不能。

linux操作系統在執行用戶是否可以執行at命令時,先看at.allow文件沒有才看at.deny文件。

註意:linux操作系統默認沒有/etc/at.allow文件。

:ls /etc/at.allow //查看是否已經建立at.allow文件

touch /etc/at.allow //建立/etc/at.allow文件

vi /etc/at.allow //對at.allow文件進行編輯

text //對at.allow文件進行編輯,寫入text用戶名,該用戶名可以執行at命令,然後wq(保存退出

)。
su - text //切換到text用戶

at 12:00 //text用戶執行at命令,若不出現上面所說的提示就可以進行at命令設定了。

at命令格式
at HH:MM YYYY-MM-DD //HH
(小時):MM(分鐘) YYYY(年)-MM(月份)-DD(日)
:at 4:00 2004-11-27
HH[am pm]+D(
) days //HH(小時)[am(上午)pm(下午)]+days(天)
:4pm + 3days :3天以後下午4:00執行at命令設定的計劃任務

linux命令詳解之(at)