linux crontab工作日志,linux使用crontab执行定时任务
1.當前有個項目,由于沒能找到更好的方式解決這個問題,只能使用Linux的定時任務代替,使用crontab定時執行php文件等。
一般套件服務器配置差不多都安裝了crontab服務,所以可以直接使用即可。
如果沒有安裝,centos可以使用yum安裝crontab服務。
安裝crontab:
yum install crontabs
1yuminstallcrontabs
說明:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
1
2
3
4servicecrondstart//啟動服務
servicecrondstop//關閉服務
servicecrondrestart//重啟服務
servicecrondreload//重新載入配置
查看crontab服務狀態:
service crond status
1servicecrondstatus
手動啟動crontab服務:
service crond start
1servicecrondstart
查看crontab服務是否已設置為開機啟動,執行命令:
ntsysv
1ntsysv
加入開機自動啟動:
chkconfig –level 35 crond on
1chkconfig–level35crondon
crontab 配置文件格式 ?【參考鏈接:centos中crontab(計時器)用法詳解?】
基本格式 :
* ? ? * * ?* ? * command
分 時 日 月 周 ? 命令
1
2*??* * ?* ?* command
分 時日 月 周 ?命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
定時執行我需要的php腳本【由于我這個php文件里面有引入文件,導致不能正常執行,我使用curl請求方式(還有lynx、wget等),如果要提高效率,php去執行本地php文件是最佳選擇】
#每分鐘遠程請求一次目標url
* * * * * root curl -i http://xxx/service/xx.php
1
2#每分鐘遠程請求一次目標url
*****rootcurl-ihttp://xxx/service/xx.php
以下提供幾種寫法
#使用PHP程序來調用PHP腳本。
00 * * * * /usr/local/bin/php /home/john/myscript.php
1
2#使用PHP程序來調用PHP腳本。
00****/usr/local/bin/php/home/john/myscript.php
#Lynx文本瀏覽器訪問URL來每小時執行PHP腳本
00 * * * * lynx -dump https://www.xxx.com/script.php
1
2#Lynx文本瀏覽器訪問URL來每小時執行PHP腳本
00****lynx-dumphttps://www.xxx.com/script.php
#使用WGET訪問URL來每10分執行PHP腳本。-q選項表示安靜模式。”-O temp.txt”表示輸出會發送到臨時文件
*/10 * * * * /usr/bin/wget -q -O temp.txt https://www.centos.bz/myscript.php
1
2#使用WGET訪問URL來每10分執行PHP腳本。-q選項表示安靜模式。”-O temp.txt”表示輸出會發送到臨時文件
*/10****/usr/bin/wget-q-Otemp.txthttps://www.centos.bz/myscript.php
2.crontab文件的一些例子:
#每晚的21:30 重啟apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4 : 45重啟apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每周六、周日的1 : 10重啟apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#每天18 : 00至23 : 00之間每隔30分鐘重啟apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#每星期六的11 : 00 pm重啟apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#晚上11點到早上7點之間,每隔一小時重啟apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小時重啟apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每月的4號與每周一到周三的11點重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#一月一號的4點重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#每半小時同步一下時間
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#每晚的21:30 重啟apache
3021***/usr/local/etc/rc.d/lighttpdrestart
#每月1、10、22日的4 : 45重啟apache
4541,10,22**/usr/local/etc/rc.d/lighttpdrestart
#每周六、周日的1 : 10重啟apache
101**6,0/usr/local/etc/rc.d/lighttpdrestart
#每天18 : 00至23 : 00之間每隔30分鐘重啟apache
0,3018-23***/usr/local/etc/rc.d/lighttpdrestart
#每星期六的11 : 00 pm重啟apache
023**6/usr/local/etc/rc.d/lighttpdrestart
#晚上11點到早上7點之間,每隔一小時重啟apache
*23-7/1***/usr/local/etc/rc.d/lighttpdrestart
#每一小時重啟apache
**/1***/usr/local/etc/rc.d/lighttpdrestart
#每月的4號與每周一到周三的11點重啟apache
0114*mon-wed/usr/local/etc/rc.d/lighttpdrestart
#一月一號的4點重啟apache
041jan */usr/local/etc/rc.d/lighttpdrestart
#每半小時同步一下時間
*/30****/usr/sbin/ntpdate210.72.145.44
3.如何查看crontab的日志記錄
當crontab中的同步任務時而成功,時而不成功,什么原因呢?我們需要通過日志來分析
日志目錄文件 【 /var/log/cron】
tail -f /var/log/cron
1tail-f/var/log/cron
4.使用Linux定時任務執行自動化備份數據庫
4.1?創建備份腳本【注意,如果使用windows平臺創建shell,可能會報錯, /sh^M】 {參考鏈接:http://www.osyunwei.com/archives/714.html}
[
因為操作系統是windows,我在windows下編輯的腳本,所以有可能有不可見字符。
腳本文件是DOS格式的, 即每一行的行尾以\n\r來標識, 其ASCII碼分別是0x0D, 0x0A.
可以有很多種辦法看這個文件是DOS格式的還是UNIX格式的, 還是MAC格式的
]
4.2?創建保存備份文件的目錄:/home/mysql_back
4.3 創建備份腳本文件: ?/home/crondshell/mysql_databak.sh
#!/bin/sh
DUMP=/alidata/server/mysql-5.5.40/bin/mysqldump #mysqldump備份文件執行路徑
OUT_DIR=/home/mysql_back #備份存放路徑
LINUX_USER=root #系統用戶名
DB_NAME=xxx #要備份的數據庫名字
DB_USER=root #數據庫賬號 注意:非root用戶要用備份參數 --skip-lock-tables,否則可能會報錯
DB_PASS=root #數據庫密碼
DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
cd $OUT_DIR #進入備份存放目錄
DATE=`date +%Y_%m_%d` #獲取當前系統時間
OUT_SQL="1yrn_$DATE.sql" #備份數據庫的文件名
TAR_SQL="mysqldata_bak_$DATE.tar.gz" #最終保存的數據庫備份文件名
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #備份
tar -czf $TAR_SQL $OUT_SQL #壓縮為.tar.gz格式
rm $OUT_SQL #刪除.sql格式的備份文件
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL #更改備份數據庫文件的所有者
find $OUT_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \; #刪除7天前的備份文件(注意:{} \;中間有空格)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#!/bin/sh
DUMP=/alidata/server/mysql-5.5.40/bin/mysqldump#mysqldump備份文件執行路徑
OUT_DIR=/home/mysql_back#備份存放路徑
LINUX_USER=root#系統用戶名
DB_NAME=xxx#要備份的數據庫名字
DB_USER=root#數據庫賬號 注意:非root用戶要用備份參數 --skip-lock-tables,否則可能會報錯
DB_PASS=root#數據庫密碼
DAYS=7#DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
cd$OUT_DIR#進入備份存放目錄
DATE=`date+%Y_%m_%d`#獲取當前系統時間
OUT_SQL="1yrn_$DATE.sql"#備份數據庫的文件名
TAR_SQL="mysqldata_bak_$DATE.tar.gz"#最終保存的數據庫備份文件名
$DUMP-u$DB_USER-p$DB_PASS$DB_NAME--default-character-set=utf8--opt-Q-R--skip-lock-tables>$OUT_SQL#備份
tar-czf$TAR_SQL$OUT_SQL#壓縮為.tar.gz格式
rm$OUT_SQL#刪除.sql格式的備份文件
chown$LINUX_USER:$LINUX_USER$OUT_DIR/$TAR_SQL#更改備份數據庫文件的所有者
find$OUT_DIR-name"mysqldata_bak*"-typef-mtime+$DAYS-execrm{}\;#刪除7天前的備份文件(注意:{} \;中間有空格)
4.4?修改crontab 添加定時備份腳本任務
vim /etc/crontab
02?17?*?*?*?root ?/home/crondshell/mysql_databak.sh ?#表示每天 17點02分進行自動備份
1
2vim/etc/crontab
02?17?*?*?*?root?/home/crondshell/mysql_databak.sh?#表示每天 17點02分進行自動備份
5. 推薦
推薦學習網址:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
AD:【碼農技術Blog】
總結
以上是生活随笔為你收集整理的linux crontab工作日志,linux使用crontab执行定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux登录界面主题,Ubuntu 1
- 下一篇: linux sed p变量,Linux