Linux VPS/服務器上用Crontab來定時執行實現VPS自動化
VPS或者服務器上經常會需要VPS或者服務器上經常會需要定時備份數據、定時執行重啟某個服務或定時執行某個程序等等,一般在Linux使用Crontab,Windows下面是用計劃任務(Win的都是圖形界面設置比較簡單),下面主要介紹Linux VPS/服務器上Crontab的安裝及使用。
Crontab是一個Unix/Linux系統下的常用的定時執行工具,可以在無需人工干預的情況下運行指定作業。
一、Crontab的安裝
1、CentOS下面安裝Crontab
yum install vixie-cron crontabs????? //安裝Crontab
chkconfig crond on??????????????? //設為開機自啟動
service crond start???????????????? //啟動
說明:vixie-cron軟件包是cron的主程序;crontabs軟件包是用來安裝、卸裝、 或列舉用來驅動 cron 守護進程的表格的程序。
2、Debian下面安裝Crontab
apt-get install cron???????????? //大部分情況下Debian都已安裝。
/etc/init.d/cron restart??? //重啟Crontab
二、Crontab使用方法
1、查看crontab定時執行任務列表
2、添加crontab定時執行任務
輸入crontab任務命令時可能會因為crontab默認編輯器的不同。
如上圖所示為nano編輯器,使用比較簡單,直接在文件末尾按crontab命令格式輸入即可,Ctrl+x退出,再輸y 回車保存。
另外一種是vi編輯器,首先按i鍵,在文件末尾按crontab命令格式輸入,再按ESC鍵,再輸入:wq 回車即可。
3、crontab 任務命令書寫格式
| 格式: | minute | hour | dayofmonth | month | dayofweek | command |
| 解釋: | 分鐘 | 小時 | 日期 | 月付 | 周 | 命令 |
| 范圍: | 0-59 | 0~23 | 1~31 | 1~12 | 0~7,0和7都代表周日 |
在crontab中我們會經常用到* , ? - ?/n 這4個符號,好吧還是再畫個表格,更清楚些:
| 符號 | 解釋 |
| *(星號) | 代表所有有效的值。 如:0 23 * * * backup 不論幾月幾日周幾的23點整都執行backup命令。 |
| ,(逗號) | 代表分割開多個值。如:30 9 1,16,20 * * command 每月的1、16、20號9點30分執行command命令。 |
| -(減號) | 代表一段時間范圍。如0 9-17 * * * checkmail 每天9點到17點的整點執行checkmail命令 |
| /n | 代表每隔n長時間。如*/5 * * * * check 每隔5分鐘執行一次check命令,與0-59/5一樣。 |
下面舉一些例子來加深理解:
每天凌晨3:00執行備份程序:0 3 * * * /root/backup.sh
每周日8點30分執行日志清理程序:30 8 * * 7 /root/clear.sh
每周1周5 0點整執行test程序:0 0 * * 1,5 test
每年的5月12日14點執行wenchuan程序:0 14 12 5 * /root/wenchuan
每晚18點到23點每15分鐘重啟一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm
注意:
因為crontab并不讀取系統或當前用戶的環境變量,有時候因為某些腳本編寫的問題腳本中并沒有環境變量的相關信息,可能會發生在終端下正常運行,而在crontab下沒有運行的情況,這時候就需要在shell腳本中 source /etc/profile 引入環境變量,或在crontab的命令前面加上 source /etc/profile; 以確保可以正常使用環境變量,如果是指定用戶的變量自行替換/etc/profile為指定的環境變量文件。
如有問題歡迎在本文下方留言或到VPS論壇交流反饋。
原創文章,謝絕轉載!
>>轉載請注明出處:VPS偵探 本文鏈接地址:http://www.0794baidu.com/manage/crontab.html











@祈禱, 是
這個shell文件
是不是創建一個shell.sh文件,然后把上面2個命令存在這里面嗎?
如果不是,請問下,該如何創建,謝謝
@祈禱, 你這個的意思是每天的每個小時的第10分鐘運行一次。不是每十分鐘。
*/10 是每十分鐘
有時候直接寫可能會不行,可以寫一個shell文件,直接在crontab里寫上運行腳本文件
crontab -e 添加了下面這2個
10 * * * * lynx --dump http://www.yourdomain.com/scripts/admin/cronjobs.php > /dev/null
10 * * * * lynx --dump http://www.yourdomain.com/scripts/cron.php > /dev/null
然后保存,這樣是不是在運行著?
上面保存后,等了很久都沒有運行,最后
crontab /var/spool/cron 輸了這個命令后,運行了,但是卻只運行一次,等了斷時間就失效了
不會10分鐘運行一次
明白了,原來編輯里面刪除就是了 ?? ??
初次使用,請問添加了過多的任務該如何刪除?
@sexiaoxiang, 你手動執行命令試試看能正常運行不。
是啊,像這樣設置每小時執行run.php文件一次,我下面這四種設置都不起作用, ?? ?? 請教下!
* */1 * * * /home/wwwroot/yourdomain.com/ebay/run.php
* */1 * * * php /home/wwwroot/yourdomain.com/ebay/run.php
* */1 * * * php -q /home/wwwroot/yourdomain.com/ebay/run.php
* */1 * * * /usr/local/php/bin/php -q /home/wwwroot/yourdomain.com/ebay/run.php
@sexiaoxiang, 把后面的命令換成php的目錄 php文件
請問定時執行一個php文件怎么寫啊?能說詳細點嗎?
總算搞明白了, 結果一下,
只要 Crontab 設為開機自啟動。就自動加載任務。
原來 crontab -e 可以進去添加、編輯、刪除 任務。
哎原來就怕搞多了任務,就不敢再添加了。
謝謝!
@字體, 看來教程是白寫了。。
使用方法第一條就是查看
怎么添加的再怎么刪除。
那我如何查看,我運行了 幾個 crontab任務 ??
我如何,去終止 這些任務??
@字體, 只要系統正常啟動了就會運行。
8) 8)
一直不明白。也一直沒有找到答案。。 所有的教程里都沒有提示過。
就是,我執行 crontab任務 后, 我重啟VPS后,這個任務還是在運行的嗎?
還是,還需要我再運行一次 crontab任務 ??
這個不錯,測試一下