linux下面,在某一個時間去執行程序或者任務linux
一、一次性的計劃任務shell
二、週期性的計劃任務vim
1、一次性的週期性任務
bash
1)、計劃任務(at服務)dom
一、首先查找at服務是否安裝
# rpm -q at
at-3.1.10-43.el6_2.1.x86_64編輯器
二、查看軟件列表
/etc/at.deny 用戶拒絕列表 at.allow 默認不存在,用戶容許列表,須要本身建立
/etc/pam.d/atd 認證文件
/etc/rc.d/init.d/atd 服務的啓動腳本
/usr/bin/at 制定計劃任務的命令
/usr/bin/atq 查看計劃任務列表 at -l
/usr/bin/atrm 刪除計劃任務 at -d
/usr/bin/batch 優先級
/usr/sbin/atd 二進制命令
/var/spool/at 計劃任務的存放目錄 ide
三、服務是否啓動,必須處於運行級別。
# /etc/rc.d/init.d/atd status
atd (pid 2179) is running... 服務啓動的狀態
四、service atd restart 啓新啓動服務工具
五、臨時命令執行url
at now 當前執行spa
#at now
at> echo 88 >> /tmp/test 把88追加劇定向到/tmp/test文件中
at> <EOT> ctrl+c 退出
job 5 at 2016-09-19 18:59 執行的時間
at now +1min 當前時間1分鐘以後執行
at 3:30pm 下午3:30執行
at 4pm +3days 三天以後的下午4點執行
at -t 09291430 9月29號14點30分執行
-d 刪除計劃任務
-l 列出計劃任務
-f 指定文件
-c 查看計劃任務的內容
dome1:比較複雜的
vim useradd.sh
#!/bin/bash
for i in 1 2 3
do
useradd stu$i
done
echo user is ok! > /tmp/log1
# chmod +x useradd.sh 給予的文件的執行權限
# at now +3min -f /tmp/useradd.sh 3分鐘執行useradd.sh文件
/etc/at.deny 黑名單 該文件裏的用戶不能使用at服務
/etc/at.allow 白名單 只容許在該文件裏的用戶使用at服務
若是at.deny和at.allow 文件衝突,at.allow優先
2、週期性的計劃任務
一、查看軟件按是否安裝
# rpm -q cronie
cronie-1.4.4-12.el6.x86_64
# rpm -q crontabs
crontabs-1.10-33.el6.noarch
週期計劃任務須要兩個軟件包支持
二、查看軟件的列表
# rpm -ql cronie
/etc/cron.d 該服務的主目錄
/etc/cron.d/0hourly 系統每小時的第1分鐘須要執行的計劃任務
/etc/cron.deny 用戶拒絕列表 cron.allow 用戶容許列表(默認不存在)
/etc/pam.d/crond 認證文件
/etc/rc.d/init.d/crond 啓動腳本
/usr/bin/crontab 定製計劃任務命令
/usr/sbin/crond 二進制命令
/var/spool/cron 存放用戶級別的週期下計劃任務目錄
# rpm -ql crontabs
/etc/cron.daily 系統天天須要執行的計劃任務
/etc/cron.hourly 系統每小時
/etc/cron.monthly 系統每個月
/etc/cron.weekly 系統每週
/etc/crontab 系統計劃任務的配置文件
/usr/bin/run-parts 工具,後面跟目錄
/usr/share/man/man4/crontabs.4.gz man文檔
三、確認服務是否安裝啓動
# service crond status
crond (pid 2697) is running..
四、系統級別計劃任務
/etc/crontab
SHELL=/bin/bash 指定默認shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin 命令環境變量
MAILTO=root 發送郵件給root;MAILTO=""表明不發送郵件
HOME=/ 命令和文件的根目錄
# Example of job definition:
# .---------------- minute (0 - 59) 分鐘
# | .------------- hour (0 - 23) 小時
# | | .---------- day of month (1 - 31) 日期
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 月
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR 周
sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
,號分割 * 1,4,5 * * * 天天的1點 4點 5點
- 號分割 * * 1-5 * * 每個月的1號到5號
/ 號分割 */5 * * * * 每隔5分鐘
demo1:
vim /etc/crontab
*/1 * * * * root echo $(date)>/tmp/log1 每分鐘執行的一次
*/1 * * * * stu1 id stu1 >>/tmp/log1 每分鐘執行的一次
demo2:
方法一:
#vim /etc/cron.d/test
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
30 04 * * * root run-parts /tmp/test
run-parts工具:後面跟的是一個目錄,執行該目錄下面的全部可執行的腳本文件
方法二:
cp /tmp/test/*.sh /etc/cron.daily
chmod +x /tmp/test/*.sh
anacron :是cron服務的一個擴充服務,做用:當系統意外宕機而錯過了任務的執行時間,它會等到系統開機後延遲一段時間再次補漏。
# cat /etc/anacrontab
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/ cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
3、用戶級別計劃任務 crontab 命令 root用戶:能夠給本身定製週期性的任務,同時還能夠給普通用戶制定計劃任務 -e 編輯 默認調用vi編輯器 export EDITOR=vim|gedit 自定義編輯器 -l 查看 -r 刪除 -u 指定用戶 -eu username -lu username -ru username demo1: #vim /root/time.sh #!/bin/bash ntpdata -u 192.168.1.2 echo "system data is ok " >>/tmp/test.log #chmod +x time.sh 說明:週期後面直接跟文件的絕對路徑,文件要有可執行權限 demo2 :每一個一分鐘stu2 給stu1 用戶發一封郵件 stu2 $ crontab -l * /1 * * * * mail -s "test" stu1 </etc/hosts # mail -s "test" stul < /etc/hosts # echo hahahaha |mail stu1 cron 服務的用戶訪問控制: /etc/cron.deny /etc/cron.allow