日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cron 12点执行_【技术指南】Crontab调度重复执行的任务

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cron 12点执行_【技术指南】Crontab调度重复执行的任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍字關注我們

Crontab是什么

  • Crontab是一個用于設置周期性執行任務的工具;

  • 周期性執行的任務我們稱為Cron Job;

  • 周期性執行的任務列表我們稱為Cron Table。

Crontab實踐

1. 安裝并檢查Crontab服務1.1 檢查cron服務

– 檢查crontab工具是否安裝:crontab -l
– 檢查crond服務是否啟動:service crond status

1.2 安裝cron

– yum install vixie-cron
– yum install crontabs

注意

a. 檢查crontab服務狀態:service crond status

?控制服務的一些提示:service crond

b. 檢查Apache(阿帕奇)服務狀態:service httpd status

?控制服務的一些提示:service httpd
(檢查服務狀態,服務名后面一般都加d,如crond、httpd)

2. 案例實現

每分鐘都打印當前時間到一個文件中

service crond status #查看服務是否啟動service?crond?start??#如沒有啟動服務,啟動服務crontab -l #查看當前定時任務列表crontab?-e??#打開定時任務列表文件,進行編輯*/1?*?*?*?*?date?>>?/tmp/log.txt??#在最后一行插入內容,保存退出(注意*間的空格)tail?-f?/tmp/log.txt??#監聽log.txt文件內容(動態刷新)date #查看當前時間

3. Crontab的基本組成

crontab的基本組成:

  • 1)系統服務CROND:
    每分鐘都會從配置文件刷新定時任務

  • 2)配置文件:
    文件方式設置定時任務

  • 3)配置工具crontab:
    用于調整定時任務

4. Crontab的配置文件格式

舉例:

eg1.每晚的21:30重啟apache

30 21 * * * service httpd restart

eg2.每月1,10,22日的4:45重啟apache

45 4 1,10,22 * * service httpd restart

eg3.每月1-10日的4:45重啟apache

45 4 1-10 * * service httpd restart

eg4.每隔兩分鐘重啟apache

*/2 * * * * service httpd restart1-59/2 * * * * service httpd restart(奇數分鐘重啟) 0-58/2 * * * * service httpd restart(偶數分鐘重啟)

eg5.每晚11-早上7點之間,每隔一個小時重啟apache

* 23-7/1 * * * service httpd restart

eg6.每天18:00-23:00之間每隔30分鐘重啟apache

0,30 18-23 * * * service httpd restart0-59/30 18-23 * * * service httpd restart

5. Crontab工具的使用

通過?man crontab?或者?crontab --help?查看

查看某用戶的計劃任務列表:

crontab -u 用戶名 -l(默認-u為當前登錄用戶)

修改某用戶的計劃任務:

crontab -e

刪除crontab文件:

crontab -r [username]

root可以指定用戶刪除其他用戶的crontab文件。其他用戶只可以刪除自己的crontab文件

查看生成的最終計劃任務文件:

/var/spool/cron

crontab日志位置:

/var/log/cron

6. Crontab的配置文件

1. 用戶的crontab定時任務保存文件:
/var/spool/cron/root
或者:/var/spool/cron/tabs/root
2. 全局(系統)配置文件:
– /etc/crontab
– 注意格式

利用命令crontab -e 進入的是用戶級別的計劃任務。
用 vi /etc/crontab 進入后編輯的是系統級的計劃任務。

cd /etcls cron*tail -f /var/log/cron(任務執行日志)crontab -e實際上是在修改目錄/var/spool/cron/root下的用戶對應的文件cd /etc/cron.dvi sysstatcrontab sysstatcrontab 文件名 會把(crontab -e)文件里的內容都覆蓋 ,所以要非常小心crontab -l -u crontester查找某個用戶下的定時程序cron.d可以認為是對系統級配置的補充,crontab -l,crontab -e看不到,編輯不了cron.d里的配置可以在該文件夾下自己創建 vi crontest*/1 * * * * echo 'file in cron.d/crontest'tail -f /var/log/cron

7. Crontab的日志

  • /var/log/cron 保存著所有的crontab的操作

  • /var/spool/mail/ 下以郵件的方式發送日志信息

Crontab的常見錯誤

1. Crontab的常見錯誤之環境變量

不可引用環境變量

cd ~

ls -a可以看到有.bash_profile文件

vim .bash_profile
新增一個環境變量:

--------------APPDIR=/ectexport APPDIR-----------------

更新到環境變量:

source .bash_profile

檢驗:echo $APPDIR?可以正常顯示,能夠被識別
但是在下面這條命令行添加在crontab里不能被識別

*/1 * * * * echo $APPDIR >> /tmp/appdir.log

在/var/log/cron任務執行日志中可以看到,但是cat打開/tmp/appdir.log內容是空的

2. Crontab的常見錯誤之命令行操作

  • 1. test 表達式 測試后面的表達式是否真實,但必須加空格 (如果不加空格,那么該命令恒為正確的。)

    例如:test 1 = 0 如果結果是0 ,那么是正確的(與C語言相反)

  • 2. 通過echo $?來查看上一次的執行結果。

  • 3. date +%w 這個是顯示今天是星期幾

  • 4. 需要注意的是在crontab文件中,%需要進行轉義

第三個和第五個域之間執行的是或操作 即 星期幾和每月幾號是或關系。

例:4月的第一個星期日早晨1時59分運行a.sh

①59 1 1-7 4 0 /root/a.sh?錯誤的寫法
②59 1 1-7 4 * testdate +%w-eq 0 && /root/a.sh?正確的寫法

3. Crontab的常見錯誤之分鐘設置誤用

兩小時運行一次date命令

錯誤:

* 0,2,4,6,8,10,12,14,16,18,20,22 * * * date

正確:

0 */2 * * * date

4. Crontab綜合案例解析

crontab最小時間是1分鐘,控制1分鐘執行多次
本應該是同時執行,但第二條被推遲了30s執行,效果就是1分鐘執行了2次

*/1 * * * * date>>/root/test/half.log*/1 * * * * sleep 30s;date>>/root/test/half.log

&& 和|| 和 ;的區別

  • command1 && command2: &&左邊的command1執行成功(返回0表示成功)后,&&右邊的command2才能被執行。

  • command1 || command2: 如果||左邊的command1執行失敗(返回1表示失敗),就執行&&右邊的command2。

  • command1;command2: 命令順序執行,不管前面的是否正確后面的都會依次執行

定時備份oracle數據

#!/bin/bashexport ORACLE_BASE=/data/oracleexport ORACLE_HOME=/oracle/product/102export ORACLE_SID=sidnameexport ORACLE_TERM=xtermexport PATH=$ORACLE_HOME/bin:/usr/sbin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport LANG=Cexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8#以上代碼為Oracle數據庫運行賬號oracle的系統環境變量設置,必須添加,否則crontab任務計劃不能執行。date=date +%Y_%m_%d #獲取系統當前日期時間days=5 #設置刪除5天之前的備份文件orsid=ip:port/sidname #Oracle數據庫服務器IP、端口、SIDorowner=master_ccpx2 #備份此用戶下面的數據bakuser=master_ccpx2 #用此用戶來執行備份,必須要有備份操作的權限bakpass=passwd #執行備注的用戶密碼bakdir=/aaa/bbb/oracle_data #備份文件路徑,需要提前創建好bakdata=$orowner"_"$date.dmp #備份數據庫名稱baklog=$orowner"_"$date.log #備份執行時候生成的日志文件名稱ordatabak=$orowner"_"$date.tar.gz #最后保存的Oracle數據庫備份文件cd $bakdir #進入備份目錄mkdir -p $orowner #按需要備份的Oracle用戶創建目錄cd $orowner #進入目錄exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #執行備份tar -zcvf $ordatabak $bakdata $baklog #壓縮備份文件和日志文件find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #刪除備份文件find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #刪除日志文件find?$bakdir/$orowner??-type?f?-name?"*.tar.gz"?-mtime?+$days?-exec?rm?-rf?{}?\;??#刪除5天前的備份

如果有想要了解更多內容或需要更多資料的小伙伴

可以?掃碼?參與

原價398元現在僅需?1?

Linux運維實戰訓練營!

2天從理論到實戰

get原廠面試官最喜歡問的面試點

新盟官方金牌講師手把手帶你

零基礎進階運維大佬!

掃碼加老師

獲取小白專屬福利

總結

以上是生活随笔為你收集整理的cron 12点执行_【技术指南】Crontab调度重复执行的任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。