Linux crond定時任務

来源:http://www.cnblogs.com/yangruizeng/archive/2016/01/25/5156388.html
-Advertisement-
Play Games

第1章 Crond是什麼?Crond是linux系統用來定期執行命令或指定程式任務的一種服務或軟體。一般情況下,我們安裝完Centos5/6linux操作系統之後,預設便會啟動Crond任務調度服務。Crond服務會定期(預設每分鐘檢查一次)檢查系統中是否有要執行的任務工作。如果有,便會根據其預先設...


第1章 Crond是什麼?

Crond是linux系統用來定期執行命令或指定程式任務的一種服務或軟體。一般情況下,我們安裝完Centos5/6linux操作系統之後,預設便會啟動Crond任務調度服務。Crond服務會定期(預設每分鐘檢查一次)檢查系統中是否有要執行的任務工作。如果有,便會根據其預先設定的定時任務規則自動執行該定時任務工作。這個Crond定時任務服務就相當於我們早上使用的鬧鐘一樣。

第2章 Linux系統crond的定時任務

linux系統中定時任務調度的工作可以分為以下兩種情況:

1、 linux系統自身定期執行的任務工作:系統周期性自行執行的任務工作,如輪詢系統日誌、備份系統數據、清理系統緩存等,這些任務無須我們人為干預。例如:

[root@web01 ~]# ll /var/log/messages*

-rw------- 1 root root 585506 1月 24 21:32 /var/log/messages

-rw------- 1 root root 495226 12月 13 14:41 /var/log/messages-20151213

-rw------- 1 root root 501046 12月 20 10:33 /var/log/messages-20151220

-rw------- 1 root root 333767 12月 30 20:27 /var/log/messages-20151230

-rw------- 1 root root 332996 1月 10 12:19 /var/log/messages-20160110

2、用戶執行的任務工作:某個用戶或系統管理員定期要做的工作,例如每隔5分鐘和互聯網上的時間伺服器進行時間同步,每天晚上0點備份網站站點數據及資料庫數據,一般這些工作需要由用戶自己來設置。

[root@web01 ~]# crontab -l

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

#* * * * * echo "yangrz" >>/server/log/yangrz

第3章 命令說明

crond服務是運行的程式,而crontab是用戶用來設置定時規則的命令。

crontab option

-l list(查看用戶設置的定時任務)

-e 編輯定時任務配置文件

crontab –e ===vi /var/spool/cron/root

crontab –l ===cat /var/spool/cron/root

第4章 crontab語法格式中時間段的含義

含義

取值範圍(整數)

第一段

表示分鐘

00-59(00也可以是0

第二段

表示小時

00-23

第三段

表示日、天

01-31

第四段

表示月份

01-12

第五段

表示星期、周幾

0-7(0和7都表示周日)

提示:記憶口訣:分時日月周

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

第5章 crontab語法格式中特殊符號含義

特殊符號

含義

*

*號表示任意時間都,實際就是“每”的意思。如:00 23 * * * cmd表示每月每周每日的23:00都執行cmd任務。

提示:定時任務如果是到小時,口述時就最多提每天。

分位上的*就等價於0-59,表示每分。

-

減號,表示分隔符,表示一個時間範圍,區間段,如17-19點,每天的17,18,19點的00分執行任務。00 17-19 * * * cmd。就是17,18,19點整點分別執行的意思。

逗號,表示分隔時段的意思。30 17,18,19 * * * /bin/sh /scripts/test.sh 表示每天17、18、19點的半點時刻執行/scripts/test.sh腳本。

/n

n代表數字,即“每個n單位時間”,例如:每10分鐘執行一次任務,可以寫成*/10 * * * * cmd,其中*/10的意思是每10分鐘執行cmd命令。

clip_image002

 

第6章 書寫定時任務的若幹要領方法:

要領1:為定時任務規則加必要的註釋

要領2:定時任務命令或程式最好寫到腳本里執行

要領3:執行shell腳本任務前加/bin/sh

要領4:定時任務命令或腳本結尾加>/dev/null 2>&1

&>/dev/null 1>/dev/null 2>/dev/null

要領5:在指定用戶下執行相關的定時任務

要領6:生產任務程式不要隨意列印輸出信息

tar zcf echo 123 >a.log

要領7:定時任務執行的腳本要規範路徑(/service/scripts)

要領8:配置定時任務規範操作過程

第7章 關於配置定時任務規範操作過程

1)首先要在命令行操作成功,然後複製成功的命令到腳本里,在各個細小環節減少出錯的幾率。

2)然後測試腳本,測試成功後,複製腳本的規範路徑到定時任務配置里,不要手敲。

3)先在測試環境測試,然後正式環境規範部署。

題:每隔2小時將系統的/etc/service文件打包備份的/tmp下(最好每次備份成不同的包)

包袱:/etc/service是不存在的,應該是/etc/services

要cd到目標內容的上級目錄打包

打包的頻率是分,包名必須精確到分。

確保命令執行正確。然後寫到腳本里(複製進去)

定時任務命令或程式最好寫到腳本里執行。

測試腳本正確性(定時任務怎麼寫,命令行就怎麼測試)

腳本測試正確了,命令行的命令也要複製。

* * * * * tar zcvf /tmp/service-$(date +%F-%H)tar.gz ./services

這樣寫是不對的,在定時任務配置文件里還得轉義、所以要把命令寫到文件中,避免錯誤。

題:每天晚上0點,把/tmp/services.tar.gz的包,刪除前天前的。

/var/log/cron*

這是crontab的日誌,執行正確還是錯誤,日誌裡邊都會有輸出。

第8章 工作中調試定時任務的方法:

1、 增加執行任務頻率調試任務(某些任務不能用於生產環境沒有測試機會)

2、 代碼發佈:個人開發環境—辦公測試環境—IDC機房測試環境—》IDC正式環境(分組,灰度發佈)

3、 調整系統時間調試任務(不能直接用於生產環境),保持5分鐘

4、 通過腳本日誌輸出調試定時任務

5、 註意一些任務命令帶來的問題

6、 (*/1 * * * * * echo “==” >> /tmp/oldboy.log >dev/null 2>&1)

7、 註意環境變數導致的定時任務故障(java)

8、 通過crond定時任務日誌調試定時任務(/var/log/cron)

9、 把腳本放到定時任務裡邊,很多時候取系統變數,取不到,會出問題。這時候可以在腳本里把系統變數重新定義一遍。

 

第9章 crontab定時任務生產應用問題10箴言:

1. 系統環境變數問題

2. 定時任務要用絕對路徑

3. 腳本許可權問題,加/bin/sh

4. 時間變數問題用反斜線\%轉義,最好用腳本

5. >/dev/null 2>&1為題(1>/dev/null 2>/dev/null ,&>/dev/null)

6. 定時任務規則之前加註釋

7. 使用腳本程式替代命令行定時任務

8. 避免不必要的程式及命令輸出

9. 切到目標目錄的上一級打包目標

10. 定時任務腳本中的程式命令儘量用全路徑(和環境變數的識別有關)。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本系統是10月5日最新完整版本的Windows10安裝版鏡像,win10正式版,更新了重要補丁,提升應用載入速度,微軟和百度今天宣佈達成合作,百度成為win10Edge瀏覽器中國預設主頁和搜索引擎,系統增加了搜狗輸入法,安裝過程需要用戶手動創建個人賬戶等步驟,為保證系統的穩定性,win10為未激活版...
  • ---恢復內容開始---據說淘寶的Tengine很牛X,所以我們今天也來玩玩,我們這裡是某開放雲的vps,現在已經安裝好了nginx,現在我們要平滑切換到安裝Tengine。下載Tengine,解壓進入文件夾:wget http://tengine.taobao.org/download/tengi...
  • linux 命令grep grep命令用來搜索文本,或從給定的文件中搜索行內包含了給定字元串或單詞的文件。通常來說,grep顯示匹配的行。使用grep來搜索包括一個或多個正則表達式匹配到的文本行,然後只顯示匹配到的行。 grep命令的語法: grep ‘word’ 文件名 grep ‘wor...
  • 本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 公司的業務現在已經擴展到海外,對外提供的統一介面都是通過功能變數名稱來解析的,但是海外用戶訪問國內介面的話,你懂的,很慢的。為了提高功能變數名稱解析的速度,打算使用智能DNS功能,來解決海外用戶功能變數名稱解析慢...
  • linux 下,我們常使用 cd ,grep,vi 等命令,有時候我們要查到這些命令所在的位置,如何做呢?linux下有2個命令可完成該功能:which ,whereiswhich 用來查看當前要執行的命令所在的路徑。whereis 用來查看一個命令或者文件所在的路徑,which命令的原理:在PAT...
  • 1.查看內核版本cat /proc/version[xingxing.dxx@30_28_6_20 ~]$ cat /proc/versionLinux version 2.6.32-573.7.1.el6.x86_64 ([email protected]) (g...
  • 系統安裝安裝準備系統:CentOS 7、Win 10硬體:U盤一枚、PC一臺軟體:UltraISO安裝步驟使用UltraISO將鏡像寫入U盤window10使用磁碟管理,空出一個未分配的區域留給centos安裝系統,一般20G以上重起電腦,bios中修改啟動項至usb啟動出現三個選擇項,使用向上箭頭...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...