實現(xiàn)Linux定時任務(wù)有:cron,、anacron,、at等,這里主要介紹cron服務(wù),。 cron是服務(wù)名稱,,crond是后臺進程,crontab則是定制好的計劃任務(wù)表,。 件包安裝: 要使用cron服務(wù),,先要安裝vixie-cron軟件包和crontabs軟件包,兩個軟件包作用如下: vixie-cron軟件包是cron的主程序,。 查看是否安裝了cron軟件包: rpm -qa|grep vixie-cron 查看是否安裝了crontabs軟件包:rpm -qa|grep crontabs 如果沒有安裝,,則執(zhí)行如下命令安裝軟件包(軟件包必須存在) 如果本地沒有安裝包,,在能夠連網(wǎng)的情況下可以在線安裝 yum install vixie-cron 查看crond服務(wù)是否運行: pgrep crond 或 /sbin/service crond status 或 ps -elf|grep crond|grep -v "grep" crond服務(wù)操作命令: /sbin/service crond start //啟動服務(wù) 配置定時任務(wù): cron有兩個配置文件,一個是一個全局配置文件(/etc/crontab),,是針對系統(tǒng)任務(wù)的,;一組是crontab命令生成的配置文件(/var/spool/cron下的文件),是針對某個用戶的.定時任務(wù)配置到任意一個中都可以,。 查看全局配置文件配置情況: cat /etc/crontab 看用戶下的定時任務(wù):crontab -l或cat /var/spool/cron/用戶名 crontab任務(wù)配置基本格式: 第1列表示分鐘1~59 每分鐘用*或者 */1表示 在以上任何值中,,星號(*)可以用來代表所有有效的值。譬如,,月份值中的星號意味著在滿足其它制約條件后每月都執(zhí)行該命令,。 例子: 0 1 * * * /home/testuser/test.sh */10 * * * * /home/testuser/test.sh 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 配置用戶定時任務(wù)的語法: crontab [-u user]file 假設(shè)當前用戶是root,要建立root用戶的定時任務(wù) crontab -e 選擇編輯器,,編輯定時任務(wù)(這里假設(shè)是編輯器是vi) 按i進入編輯模式 0 1 * * * /root/test.sh 按esc退出編輯模式進入普通模式,,輸入:x或:wq保存退出 查看剛剛輸入的定時任務(wù) crontab -l 或 cat /var/spool/cron/root 根用戶以外的用戶可以使用 crontab 工具來配置 cron 任務(wù),。所有用戶定義的 crontab 都被保存在 /var/spool/cron 目錄中,并使用創(chuàng)建它們的用戶身份來執(zhí)行,。要以某用戶身份創(chuàng)建一個 crontab 項目,,登錄為該用戶,然后鍵入 crontab -e 命令,,使用由 VISUAL 或 EDITOR 環(huán)境變量指定的編輯器來編輯該用戶的 crontab,。該文件使用的格式和 /etc/crontab 相同。當對 crontab 所做的改變被保存后,,該 crontab 文件就會根據(jù)該用戶名被保存,,并寫入文件 /var/spool/cron/username 中。 重啟crond: /sbin/service crond restart 查看cron服務(wù)是否起作用: 如果我們要查看定時任務(wù)是否準時調(diào)用了可以/var/log/cron中的運行信息 cat /var/log/cron 或 grep .*\.sh /var/log/cron 搜索.sh類型文件信息 sed -n '/back.*\.sh/p' /var/log/cron 我們在日志中查看在約定的時間是否有相應(yīng)的調(diào)用信息,調(diào)用信息類似: Sep 19 1:00:01 localhost crond[25437]: (root) CMD (/root/test.sh) 查看shell腳本是否報錯: 如果/var/log/cron中準時調(diào)用了shell腳本,,而又沒有達到預(yù)期結(jié)果,,我們就要懷疑shell腳本是否出錯 cat /var/spool/mail/用戶名 例子: cat /var/spool/mail/root
test.sh ------------------------- #!/bin/sh echo "$(date '+%Y-%m-%d %H:%M:%S') hello world!" >> /root/test.log ------------------------- 要追蹤shell調(diào)用的全過程: bash -xv test.sh 2>test.log test.sh的調(diào)用過程都會寫到test.log中 或 改寫test.sh
------------------------- #!/bin/sh set -xv echo "$(date '+%Y-%m-%d %H:%M:%S') hello world!" >> /root/test.log ------------------------- sh ./test.sh 2>tt.log |
|
來自: 小馬哥技術(shù)屋 > 《定時任務(wù)》