1. linux中at的執行結果放在哪裡
之前說了使用crontab實現定時執行任務,假如我們只是想要讓特定任務運行一次,那麼,這備旅時候就要用到at監控程序了。
一、at服務
cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
service atd start //啟動服務
service atd stop //關閉服務
service atd restart //重啟服務
service atd reload //重新載入配置
service atd status //查看服務狀態
二、at在配置文件:
at類似打仿孝凳印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程序。
三、參數詳解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程序/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入 網路應用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定
at命令執行流程
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的時間表示方法
-----------------------------------------------------------------------
時 間 例子 說明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任務在5分鍾後運行
Hour at now + 1 hour 任務在1小時後運行
Days 慎清 at now + 3 days 任務在3天後運行
Weeks at now + 2 weeks 任務在兩周後運行
Fixed at midnight 任務在午夜運行
Fixed at 10:30pm 任務在晚上10點30分
Fixed at 23:59 12/31/2018 任務在2018年12月31號23點59分
2. linux at命令如何保存退出 請指點
輸入"at 指定的時間"之後回車,然後輸入要運行的命令,回車,按組合鍵Ctrl+D即可保存。
linux at 命令詳解:
使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
說明 : at 可以讓使用者指定在 TIME 這個特定時刻執行某個程序或指令,TIME 的格式是 HH:MM其中的 HH 為小時,MM 為分鍾,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點鍾)等口語詞。
如果想要指定超過一天內的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鍾,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks。
另外,使用者也可指定 today 或 tomorrow 來表示今天或明天。當指定了時間並按下 enter 之後,at 會進入交談模式並要求輸入指令或程序,當你輸入完後按下 ctrl+D 即可完成所有動作,至於執行的結果將會寄回你的帳號中。
參數 :
-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程序/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定
3. 怎麼用AT命令運行BAT文件
at 10:00 start "" C:\as\x.bat
上午十點運行「C:\as\x.bat」
at 10:00 /interactive start "" C:\as\x.bat
上午十點運行「C:\as\x.bat」,並與當時登錄的用戶桌面進行交互。
at 10:00 /every:M,T,W,Th,F,S,Su start "" C:\as\x.bat
每天上午十點運行「C:\as\x.bat」
更多方式,請運行 at /? 查看命令幫助。
若提示「服務尚未啟動」則需先運行以下命令開啟服務
sc config Schele start=AUTO
net start Schele
4. AT命令的WindowsAT命令
列出在指定的時間和日期在計算機上運行的已計劃命令或計劃命令和程序。必須正在運行「計劃」服務才能使用 at 命令。
at [\computername] [[id] [/delete] | /delete [/yes]]
at [\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command
參數
無
如果在沒有參數的情況下使用,則 at 列出已計劃的命令。
\computername
指定遠程計算機。如果省略該參數,命令將安排在本地計算機。
id
指定指派給已計劃命令的識別碼。
/delete
取消已計劃的命令。如果省略了 id,計算機中已計劃的命令將被全部取消。
/yes
當刪除已計劃的事件時,對系統的查詢強制進行肯定的回答。
time
指定運行命令的時間。將時間以 24 小時標記(00:00 [午夜] 到 23:59)的方式表示為小時:分鍾。
/interactive
允許作業與在作業運行時登錄用戶的桌面進行交互。
/every:date[,...]
在每個星期或月的指定日期(例如,每個星期四,或每月的第三天)運行命令。將 date 指定為星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的數字)。用逗號分隔多個日期項。如果省略了 date,將假定為該月的當前日期。
command
指定要運行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批處理程序(.bat 或 .cmd 文件)。當命令需要路徑作為參數時,請使用絕對路徑,也就是從驅動器號開始的整個路徑。如果命令在遠程計算機上,請指定伺服器和共享名的 UNC 符號,而不是遠程驅動器號。如果命令不是可執行 (.exe) 文件,必須在命令前加上 cmd /c,例如:
cmd /c dir > c: est.out at 10:00 /every:m,t,w,th,f,s,su shutdown -s -t 30
命令解釋:在周一、周二、周三、周四、周五、周六、周日 每天的10:00 關機(30s 提示時間)
PS: 若取消關機命令,可執行命令: shutdown -a
5. cmd 定時命令
CMD命令總結 AT命令2006-10-25 19:11at
這個命令的作用是安排在特定的日期或時間執行末個特定的命令和程序。
用法:AT TIME COMMAND \\COMPUTER
AT 命令安排在特定日期和時間運行命令和程序。
要使用 AT 命令,計劃服務必須已在運行中。
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername 指定遠程計算機。 如果省略這個參數,
會計劃在本地計算機上運行命令。
id 指定給已計劃命令的識別號。
/delete 刪除某個已計劃的命令。如果省略 id,
計算機上所有已計劃的命令都會被刪除。
/yes 不需要進一步確認時,跟刪除所有作業
的命令一起使用。
time 指定運行命令的時間。
/interactive 允許作業在運行時,與當時登錄的用戶
桌面進行交互。
/every:date[,...] 每個月或每個星期在指定的日期運行命
令。如果省略日期,則默認為在每月的
本日運行。
/next:date[,...] 指定在下一個指定日期(如,下周四)運
行命令。如果省略日期,則默認為在每
月的本日運行。
"command" 准備運行的 Windows NT 命令或批處理
程序。
AT命令是Windows XP中內置的命令,它也可以媲美Windows中的「計劃任務」,而且在計劃的安排、任務的管理、工作事務的處理方面,AT命令具有更強大更神通的功能。AT命令可在指定時間和日期、在指定計算機上運行命令和程序。
我們可以在「開始→運行」中輸入AT命令,下面就來看看AT命令的一些實例分析。
1、定時關機
命令:at 21:00 ShutDown –S –T30
該命令運行後,到了21:00點,電腦會出現「系統關機」對話框,並默認30秒延時自動關機。
2、定時提醒
命令:at 12:00 Net Send 10.10.36
.122與朋友約會的時間到了,快點准備出發吧!
其中Net Send是Windows內部程序,可以發送消息到網路上的其他用戶、計算機。10.10.36.122是本機電腦的IP地址。這個功能在Windows中也稱作「信使服務」。
3、自動運行批處理文件
如果公司的數據佷重要,要求在指定的日期/時間進行備份,那麼運行:
命令:at 1:00AM /Every:Saturday My_BackUp.bat
這樣,在每個Saturday(周六)的早上1:00點,電腦定時啟動My_BackUp.bat批處理文件。My_BackUp.bat是一個你自行編制的批處理文件,它包含能對系統進行數據完全備份的多條命令。
4、取消已經安排的計劃
命令:at 5 /Delete
有時候,你已經安排好的計劃可能臨時變動,這樣你可以及時地用上述命令刪除該計劃(5為指派給已計劃命令的標識編號),當然,刪除該計劃後,可以重新安排。
6. 怎麼實現linux整點和半點執行任務
linux整點和半點執行任務實現方式如下:
(1)at命令
假如我們只是想要讓特定任務運行一次,那麼,這時候就要用到at監控程序了。
設置at命令很簡單,指示定運行的時間,那麼就會在哪個時候運行。at類似列印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程序。at now + time命令可以在指示任務。
假設處理一個資料庫,要在別人不用系統時去處理數據,比如凌晨3點10分。那麼我們就應該先建立/home/kyle/do_job腳本管理資料庫,計劃處理/home/kyle/do_job文件中的結果。正常方式是這樣啟動下列命令:
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的時間表示方法
-----------------------------------------------------------------------
時間例子說明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任務在5分鍾後運行
Hour at now + 1 hour 任務在1小時後運行
Days at now + 3 days 任務在3天後運行
Weeks at now + 2 weeks 任務在兩周後運行
Fixed at midnight 任務在午夜運行
Fixed at 10:30pm 任務在晚上10點30分
注意:一定要檢查一下atq的服務是否啟動,有些操作系統未必是默認啟動的, linux默認為不啟動,而ubuntu默認為啟動的。檢查是否啟動,用service atd檢查語法,用service atd status檢查atd的狀態,用service atd start啟動atd服務。
查看at執行的具體內容:一般位於/var/spool/at目錄下面,用vi打開,在最後一部分就是你的執行程序
(2)crontab
cron是一個Linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
/sbin/service crond status //查看服務狀態
(crond或cron看實際情況
service crond start #啟動服務
service crond stop #關閉服務
service crond restart #重啟服務
service crond reload #重新載入配置
)
你也可以將這個服務在系統啟動的時候自動啟動:棚備老
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了,Cron服務提供以下幾種介面供大家使用:
1、直接用crontab命令編輯
cron服務提供滾渣 crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除某個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
基本格式 :
*****command
分時日月周命令
第1列表示分鍾1~59 每分鍾用*或者 */1表示鏈升
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
#每晚的21:30重啟apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpdrestart
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
http://j3j5.com/post-41.html
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
crontab
cron.d
cron.daily
cron.hourly
cron.monthly
cron.weekly
執行方法一:
如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh
在指定的時間運行任務
也可以通過at命令來控制在指定的時間運行任務
如:
at -f test-cron.sh -v 10:25
其中-f 指定腳本文件,-v 指定運行時間
首先用 contab -l 導出contab的配置,然後編輯contabs.tmp文件。以一下格式添加一行:
分鍾小時天月星期命令
比如
10 3 * * 0,6 hello
就是每周六、周日的3點10分執行hello程序。
15 4 * * 4-6 hello
就是從周四到周六的4點15點執行hello程序。
然後用contab contabs.tmp 命令導入新的配置。
一般不建議直接修改/etc/下的相關配置文件。
啟動cron進程的方法:/etc/init.d/crond start
開機就啟動cron進程的設置命令:chkconfig --add crond
執行方法二:
把cron加入到啟動腳本中:
# rc-update add vixie-cron default
crontab -l #查看你的任務
crontab-e#編輯你的任務
crontab-r#刪除用戶的crontab的內容
實例講解二:
系統cron設定:/etc/crontab
通過 /etc/crontab 文件,可以設定系統定期執行的任務,當然,要想編輯這個文件,得有root許可權
0 7 * * * root mpg123 ~/wakeup.mp3
分時日月周
示例:
0 4 * * 0 rootemerge --sync && emerge -uDworld #每周日凌晨4點,更新系統
0 8 6 5 * root mail robin < /home/galeki/happy.txt #每年5月6日給robin發信祝他生日快樂
假如,我想每隔2分鍾就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 「 / 」 和 「 , 」 來設置:
*/2 * * * * root ............... #每兩分鍾就執行........
0 6,12,18 * * * root ............... #每天6點、12點、18點執行........
每兩個小時
0 */2 * * * echo"have a breaknow." >> /tmp/test.txt
晚上11點到早上8點之間每兩個小時,早上八點
0 23-7/2,8 * * * echo"have a good dream:)" >>/tmp/test.txt
每個月的4號與每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
1月1日早上4點
0 4 1 1 * command line
收獲:可以把經常要做的一些事放到其中,簡化工作量,如每周一檢查伺服器的運行狀態,查看報告,殺掉一些進程等等……