Linux基礎介紹【第六篇】

来源:http://www.cnblogs.com/yinshoucheng-golden/archive/2016/12/29/6233869.html
-Advertisement-
Play Games

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


定時任務crond介紹

crond是什麼?

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

特殊需求crond服務不能滿足要求,一般工作中寫腳本守護程式執行。

為什麼要使用crond定時任務?

例如:我們的資料庫或者代碼程式需要每天晚上0點做一次全備,這樣每天夜裡都需要執行的周期性的工作。這就是linux系統的定時任務crond。實時備份,定時備份。

linux系統crond的定時任務

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

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

  1. #系統的日誌
  2. [root@oldboy ~]# ls -l /var/log/messages*
  3. -rw------- 1 root root 598574 Dec 27 09:33 /var/log/messages
  4. -rw-------. 1 root root 292975 Dec 24 19:11 /var/log/messages-20161224
  5. -rw------- 1 root root 80222 Dec 25 10:05 /var/log/messages-20161225
  6. #安全文件
  7. [root@oldboy ~]# ls -l /var/log/secure*
  8. -rw------- 1 root root 11027 Dec 27 09:06 /var/log/secure
  9. -rw-------. 1 root root 5899 Dec 24 18:29 /var/log/secure-20161224
  10. -rw------- 1 root root 826 Dec 25 09:02 /var/log/secure-20161225

系統自動輪詢任務的設置配置路徑

  1. [root@oldboy ~]# cd /etc/logrotate.d
  2. [root@oldboy logrotate.d]# cat syslog
  3. /var/log/cron
  4. /var/log/maillog
  5. /var/log/messages
  6. /var/log/secure
  7. /var/log/spooler
  8. {
  9.     sharedscripts
  10.     postrotate
  11.         /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
  12.     endscript
  13. }

部分公司可能會放在/etc/corntab。

  1. [root@oldboy ~]# cat /etc/crontab
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5. HOME=/
  6.  
  7. # For details see man 4 crontabs
  8.  
  9. # Example of job definition:
  10. # .---------------- minute (0 - 59)
  11. # | .------------- hour (0 - 23)
  12. # | | .---------- day of month (1 - 31)
  13. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  14. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  15. # | | | | |
  16. # * * * * * user-name command to be executed

crond相關文件

  1. [root@oldboy ~]# ls -l /etc/|grep cron
  2. -rw-------. 1 root root 541 Nov 23 2013 anacrontab
  3. drwxr-xr-x. 2 root root 4096 Dec 16 22:09 cron.d
  4. drwxr-xr-x. 2 root root 4096 Dec 16 22:10 cron.daily
  5. -rw-------. 1 root root 0 Nov 23 2013 cron.deny
  6. drwxr-xr-x. 2 root root 4096 Dec 16 22:08 cron.hourly
  7. drwxr-xr-x. 2 root root 4096 Dec 16 22:09 cron.monthly
  8. -rw-r--r--. 1 root root 457 Sep 27 2011 crontab
  9. drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly

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

編輯定時任務:crontab -e

顯示定時任務:crontab -l

  1. [root@oldboy ~]# crontab -l
  2. */5 * * * * /use/sbin/ntpdate time.nist.gov >/dev/null 2>&1

linux系統下定時任務軟體種類

linux系統下的定時任務軟體,例如at、crontab、anacron。

at:適合僅執行一次就結束的調度任務命令,例如:某天晚上需要處理一個任務,僅僅是這一天的晚上,屬於突發性的工作任務。要執行at命令,還需要啟動一個名為atd的服務才行。工作中很少用到。

  1. [root@oldboy ~]# chkconfig --list|grep atd
  2. atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

crontab:可以周期性的執行任務工作,例如:每五分鐘做一次伺服器時間同步。要執行crontab這個命令,需要啟動一個服務crond才行,這個crontab命令工作中最常使用。

  1. [root@oldboy ~]# chkconfig --list|grep crond
  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

anacron:這個命令主要用於非7*24小時開機的伺服器準備的,anacron並不能指定具體時間執行任務工作,而是以天位周期或者在系統每次開機後執行的任務工作。它會檢測伺服器停機期間應該執行,但是並沒有進行的任務工作,並將該任務執行一遍。

註意:

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

2、crond服務是企業生產工作中最常用的重要服務,at和anacron很少使用,可以忽略。

3、幾乎每個伺服器都會用到crond服務。

crontab是特權命令

  1. [root@oldboy ~]# ls -l `which crontab`
  2. -rwsr-xr-x. 1 root root 51784 Nov 23 2013 /usr/bin/crontab

crontab語法格式中特殊符號的含義

特殊符號

含義

*

*號,表示任意時間,就是"每"的意思。例如:00 23 * * * cmd表示每月每周每日的23:00都執行cmd任務。需要註意的是,每個時間位上的*表達每,如果位上是*就是該位上時間的取值範圍,例如:小時上的*等價於00-23。

-

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

,

逗號,表示分隔時段的意思。30 17,18,19 * * * /bin/sh /scripts/oldboy.sh表示每天17,18,19點的半點時刻執行/scripts/oldboy.sh腳本。也可以和"-"結合使用,例如:30 3-5,17-19 * * * /bin/sh /scripts/oldboy.sh。

/n

n代表數字,即"每隔n單位時間",例如:每10分鐘執行一次任務可以寫成*/10 * * * * cmd,其中*/10中的*的範圍是0-59,因此也可以寫成0-59/10 * * * * cmd。

書寫crontab定時任務

每分鐘答應列印一次自己的名字拼音全拼到/server/log/自己的名字命名的文件。

  1. [root@oldboy oldboy]# crontab -e
  2. #每分鐘列印自己的名字到/test/oldboy/yinshoucheng.txt
  3. * * * * * echo 'yinshoucheng' >> /test/oldboy/yinshoucheng.txt
  4. [root@oldboy oldboy]# tail -f /test/oldboy/yinshoucheng.txt

小結:

1、定時任務要加註釋

2、結尾不要有>/dev/null 2>&1

3、定向的目錄必須要存在

4、定時任務中的路徑一定要絕對路徑

5、crond服務必須開啟運行

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

1、增加執行任務頻率調試任務。

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

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

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

4、註意一些任務命令帶來的問題。(>/dev/null 2>&1)

5、註意環境變數導致的定時任務故障。

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

crontab定時任務生產註意的問題:

1、系統環境變數問題。

2、定時任務要用絕對路徑。

3、腳本許可權問題加/bin/sh。

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

5、>/dev/null 2>&1問題(1>/dev/null 2>/dev/null,&>/dev/null)。

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

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

8、避免不必要的程式及命令輸出(tar不使用v)。

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

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


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

-Advertisement-
Play Games
更多相關文章
  • 背景 mysql可以支持多種不同的存儲引擎,innodb由於其高效的讀寫性能,並且支持事務特性,使得它成為mysql存儲引擎的代名詞,使用非常廣泛。隨著SSD逐漸普及,硬體存儲成本越來越高,面向寫優化的rocksdb引擎逐漸流行起來,我們也是看中了rocksdb引擎在寫放大和空間放大的優勢,將其引入 ...
  • 原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授權給指定用戶。 一個用戶的預設表空間只能有一個,但是你可以試下用下麵的語句為其授權在別的表空間中創建對像: alter user username quota unlim... ...
  • rpm簡介 rpm( Red Hat Package Manager )是一個開放的軟體包管理系統。它工作於Red Hat Linux及其他Linux系統,成為Linux中公認的軟體包管理標準。 rpm將編譯好的應用程式的各組成文件打包成一個或幾個程式包文件,從而更方便地實現程式包的安裝、升級、卸載... ...
  • 使用github倉儲需要本機生成一個公鑰key 添加到自己的git賬戶SSH keys中 mac 生成方法: 1. 打開終端 輸入 ssh-keygen 然後系統提示輸入文件保存位置等信息,連續敲三次回車即可,生成的SSH key文件保存在中~/.ssh/id_rsa.pub 2. 然後用文本編輯工 ...
  • GCC學習(1)之MinGW使用 因為後續打算分享一些有關GCC的使用心得的文章,就把此篇當作一個小預熱,依此來瞭解下使用GNU工具鏈(gcc、gdb、make等)在脫離IDE的情況下如何開發以及涉及的編譯相關的原理。當然,這方面的內容開發環境不限於使用MinGW,像之前介紹過的Cygwin,或者直 ...
  • makefile中的編寫內容如下: www:hello.c x.h 表示生成www這個文件需要hello.c 和 x.h這兩個文件 rm hello 表示在shell中執行make clean 時會執行rm hello 即刪除hello這個文件 ...
  • 實現輸出當前目錄下的文件名 ls功能: 方法一: 方法二: ls -l功能: ...
  • 1.下載安裝nodejs 2.配置npm ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...