【LINUX學習】例行命令的建立

楊奇龍發表於2010-11-26
例行命令就是那些需要定期執行的命令或者某個指令碼。在linux中一般使用at 和contable服務來實現。
下面就簡要的介紹一下兩個的大概使用方法
at :此服務僅僅執行一次,之後就從linux中取消
先檢視一下at服務的狀態
[root@localhost test]# service atd status
atd (pid 2222) 正在執行...
停止服務
[root@localhost test]# service atd stop
停止 atd:[確定] 
啟動服務
[root@localhost test]# service atd start
啟動 atd:[確定]
設定開機時自動啟動
[root@localhost test]# chkconfig --level 35 atd on
取消開機時自動啟動
[root@localhost test]# chkconfig --level 35 atd off
[root@localhost test]# ls
yang.txt
設定2分鐘後 刪除test目錄裡面的yang,txt 檔案
[root@localhost test]# at now + 2 minutes
at> rm -f yang.txt
at>
job 5 at 2010-11-26 20:10
查詢當前主機上有多少的at 服務
[root@localhost test]# atq
5       2010-11-26 20:10 a root --5 代表編號,之前我做了測試。
上面說 在2010-11-26 20:10 有一個定時工作 設定該工作的是root ,編號為5
[root@localhost test]# ls

[root@localhost test]# atq 

過了兩分鐘以後 檢視test 目錄和 at服務  ,可以看見yang.txt 檔案被刪除了,而且at服務也沒有了。當然如果設定at 服務錯誤或者想要撤銷,可以執行如下語句:
[root@localhost test]# at now + 4 minutes
at> cp yant^H                    -我設定了一個錯誤的例子。
at>
job 6 at 2010-11-26 20:17
[root@localhost test]# atq
6       2010-11-26 20:17 a root  --這次編號變為6
[root@localhost test]# atrm 6  --atrm 後面跟 jobnumber  意為刪除該工作。
[root@localhost test]# atq  --再次查詢 編號為6的 at 服務被刪除了。
[root@localhost test]# 
---至此 at 服務的使用方法結束。更多的at ,atq ,atrm 使用方法請參考man。
cron: 此服務將迴圈進行。
相對於at 一次性執行服務,多次迴圈工作的工作就由cron這個系統服務來完成的。
linux提供了crontab 命令 來實現 例行工作。
使用者要想使用crontab 的使用者是由一下檔案決定 的;
/etc/cron.allow: 
將可以使用cron服務的帳號寫入該檔案,若不在該檔案的使用者則不能使用cron服務 
/etc/cron.deny
將禁止使用cron服務的帳號寫入該檔案,若不在該檔案的使用者則能使用cron服務
當然 如果不存在以上兩個檔案的話 就只有root使用者可以使用cron服務。cron.allow 比cron.deny 優先,一般這兩個檔案只使用一個就可以了。一般來說系統保留cron.deny 。
下面介紹一下crontab的使用方法:
啟動與關閉服務與at 一樣,只是服務名稱不同罷了。因此,偶將此省略了。
[root@localhost test]# crontab -l  --
no crontab for root
[root@localhost test]# crontab [-u name] [-l|-e|-r]
-bash: -e: command not found
-bash: -r]: command not found
[-u: 沒有那個檔案或目錄
[root@localhost test]# crontab -e
no crontab for root - using an empty one

10 20 26 11 * cp /root/yang.txt /root/test/yang1.txt  --11月26號20點10分 將yang.txt 檔案複製到 test資料夾中並改為yang1.txt
~
"crontab.XXXX9gx37D" 1L, 53C written
crontab: installing new crontab
[root@localhost test]# crontab -l  --檢視使用者當前的crontab 工作。
10 20 26 11 * cp /root/yang.txt /root/test/yang1.txt
系統設定的 /etc/crontab
[root@localhost test]# cat /etc/crontab
SHELL=/bin/bash  
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root 說明當crontab發生錯誤時或者有stderr stdout資訊時,會將錯誤的資訊傳遞給誰。系統設定為傳送mail給root。管理員可以設定為自己的郵箱
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly --額每小時
02 4 * * * root run-parts /etc/cron.daily --每天
22 4 * * 0 root run-parts /etc/cron.weekly --每星期
42 4 1 * * root run-parts /etc/cron.monthly --每個月
現在看看剛才設定的crontab服務;
[root@localhost test]# ls
yang1.txt     -成功執行了!
當我們要刪除已經設定的服務時;
[root@localhost test]# crontab -l
10 20 26 11 * cp /root/yang.txt /root/test/yang1.txt
[root@localhost test]# crontab -r
[root@localhost test]# crontab -l
no crontab for root
注意:當僅僅只是刪除一個任務時 請使用crontab -e 來編輯 crontab -r 是刪除所有的任務。

-----------------------------------------EOF------------------------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-680417/,如需轉載,請註明出處,否則將追究法律責任。

相關文章