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











Centos7:
chkconfig crond on
Note: Forwarding request to 'systemctl enable crond.service'.
@依劍聽雨, centos7下用chkconfig會自動給轉成systemctl enable crond.service的
centos7 下 會提示用systemctl
chkconfig crond on //設為開機自啟動
service crond start //啟動
改成 systemctl enable crond 就好了么
這個有用
我想問一個關于定時執行php的問題,
如果php文件中包含js跳轉,且需要調用瀏覽器來執行php,那么在linux下的vps能安裝可以執行php js跳轉的瀏覽器嗎?
@祈禱, shell是shell,crontab是crontab,不能用crontab的格式去寫shell,你自己網上查查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文件加執行權限
建了一個shell.sh文件
然后再文件寫上這個
*/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讓他自己執行?
etc/crontab 這里添加了
*/10 * * * * root /root/shell.sh
這樣會不會執行?如果不行的話該如何修改,請教,謝謝!!