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











Centos7:
chkconfig crond on
Note: Forwarding request to 'systemctl enable crond.service'.
@依劍聽雨, centos7下用chkconfig會(huì)自動(dòng)給轉(zhuǎn)成systemctl enable crond.service的
centos7 下 會(huì)提示用systemctl
chkconfig crond on //設(shè)為開機(jī)自啟動(dòng)
service crond start //啟動(dòng)
改成 systemctl enable crond 就好了么
這個(gè)有用
我想問一個(gè)關(guān)于定時(shí)執(zhí)行php的問題,
如果php文件中包含js跳轉(zhuǎn),且需要調(diào)用瀏覽器來執(zhí)行php,那么在linux下的vps能安裝可以執(zhí)行php js跳轉(zhuǎn)的瀏覽器嗎?
@祈禱, shell是shell,crontab是crontab,不能用crontab的格式去寫shell,你自己網(wǎng)上查查shell怎么寫。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
lynx --dump http://www.yourdomain.com/scripts/admin/cronjobs.php > /dev/null
lynx --dump http://www.yourdomain.com/scripts/cron.php > /dev/null
還得給shell文件加執(zhí)行權(quán)限
建了一個(gè)shell.sh文件
然后再文件寫上這個(gè)
*/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
最后該如何加入cron讓他自己執(zhí)行?
etc/crontab 這里添加了
*/10 * * * * root /root/shell.sh
這樣會(huì)不會(huì)執(zhí)行?如果不行的話該如何修改,請(qǐng)教,謝謝!!