定時任務之crontab命令

来源:http://www.cnblogs.com/phpstudy2015-6/archive/2017/09/17/7534968.html
-Advertisement-
Play Games

1、簡介 crontab用於設置周期性被執行的命令 Linux系統中Linux調動工作分為兩大類: 1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存 2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置 /etc/c ...


1、簡介

crontab用於設置周期性被執行的命令 Linux系統中Linux調動工作分為兩大類:   1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存   2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置 /etc/crtontab   系統調度的任務一般存放在/etc/crontab這個文件下,裡面存放了一些系統運行的調度程式,通過命令cat crontab查看   這些任務會在系統運行起來自動調用 /var/spool/cron   每個用戶都會生成自動生成一個自己的crontab文件,一般位於/var/spool/cron目錄下   執行命令crontab -r 就會刪除當前用戶的crontab文件。例如你切換到suifeng賬號下,執行了該命令,那麼/var/spool/cron/suifeng文件就會刪除,如果要創建該文件只需要用crontab -e命令即可。   註意,普通用戶一般沒有許可權訪問/var/spool/cron /etc/crontab.deny文件與/etc/crontab.allow文件   1、分別表示不能使用crontab命令的用戶、以及能夠使用crontab命令的用戶   2、兩個文件同時存在crontab.allow文件優先   3、兩個文件都不存在則只有root用戶才擁有調用該命令  

2、語法

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 各個參數說明:
  1. -e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 vi(可以指定別的用戶,但是必須擁有許可權)
  2. -r [UserName]: 刪除目前的時程表
  3. -l [UserName]: 列出目前的時程表
  4. -v [UserName]:列出用戶cron作業的狀態
創建定時任務   crontab -e進入文本(vi)編輯狀態   * * * * * command path  // 前五個欄位可以取整數值,指定何時開始工作,第六個域是字元串,即命令欄位,其中包括了crontab調度執行的命令。 各個欄位之間用spaces和tabs分割。 (可將命令寫入.sh腳本文件中,並賦予可執行的許可權即可) 調度命令的規則:
欄位名稱 說明 取值範圍
分鐘 每小時的第幾分鐘執行 0-59
小時 每日的第幾個小時執行 0-23
日期 每月的第幾天執行 1-31
月曆 每年的第幾月執行 1-12
星期 每周的第幾天執行 0-6
命令名稱 欲執行的命令及參數  
crontab命令中的一些常用特殊符號:
符號 說明
* 表示任何時刻
, 表示分割
表示一個段,如第二段里: 1-5,就表示1到5點
/n 表示每個n的單位執行一次,如第二段里,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1.
查看定時任務:crontab -l 刪除定時任務:crontab -r  

3、使用示例

實例1:   每1分鐘執行一次command   命令:* * * * * command 實例2:   每小時的第3和第15分鐘執行   命令:3,15 * * * * command 實例3:   在上午8點到11點的第3和第15分鐘執行   命令:3,15 8-11 * * * command 實例4:   每隔兩天的上午8點到11點的第3和第15分鐘執行   命令:3,15 8-11 */2 * * command 實例5:   每個星期一的上午8點到11點的第3和第15分鐘執行   命令:3,15 8-11 * * 1 command 實例6:   每晚的21:30重啟smb    命令:30 21 * * * /etc/init.d/smb restart 實例7:   每月1、10、22日的4 : 45重啟smb    命令:45 4 1,10,22 * * /etc/init.d/smb restart 實例8:   每周六、周日的1 : 10重啟smb   命令:10 1 * * 6,0 /etc/init.d/smb restart 實例9:   每天18 : 00至23 : 00之間每隔30分鐘重啟smb    命令:0,30 18-23 * * * /etc/init.d/smb restart 實例10:   每星期六的晚上11 : 00 pm重啟smb    命令:0 23 * * 6 /etc/init.d/smb restart 實例11:   每一小時重啟smb    命令:* */1 * * * /etc/init.d/smb restart 實例12:   晚上11點到早上7點之間,每隔一小時重啟smb    命令:* 23-7/1 * * * /etc/init.d/smb restart 實例13:   每月的4號與每周一到周三的11點重啟smb    命令:0 11 4 * mon-wed /etc/init.d/smb restart 實例14:   一月一號的4點重啟smb    命令:0 4 1 jan * /etc/init.d/smb restart 實例15:   每小時執行/etc/cron.hourly目錄內的腳本   命令:01 * * * * root run-parts /etc/cron.hourly   說明:run-parts這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是目錄名 實例16:   1、每天23點59分後臺執行test.sh腳本;並將標準輸出寫入log.txt中   命令:59 23 * * * /home/suifeng/scripts/test.sh >/home/suifeng/log.txt &   2、同上   命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &   3、每天23點59分後臺執行test.sh腳本;並將錯誤輸出寫書log.txt中   命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &   4、每天23點59分後臺執行test.sh腳本;並將錯誤輸錯當做標準輸出(即將錯誤輸出和標準輸出全部寫入log.txt中)   命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt 2>&1 & 相關說明:   0表示鍵盤輸入   1表示標準輸出   2表示錯誤輸出   &表示後臺執行   >>表示追加   >表示覆蓋寫 註意:   1、當在前臺運行某個作業時,終端被該作業占據;而在後臺運行作業時,它不會占據終端。可以使用&命令把作業放到後臺執行。   2、需要用戶交互的命令不要放在後臺執行,因為那樣子機器將會在那一直等待   3、作業在後臺運行時,一樣會將結果輸出在屏幕上,干擾你的正常工作。因此我們最好將輸出重定向到某個文件中  

4、crond服務

通過 chkconfig --list | grep cron 命令來查看cron服務的啟動情況: [root@***** home]# chkconfig --list | grep cron crond 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉 我們可以看到,系統啟動級別如果是1-4,cron服務都會開機自動啟動的,我們可以通過如下命令來設置該服務的啟動項:   /sbin/service crond start   /sbin/service crond stop   /sbin/service crond restart   /sbin/service crond reload 以上1-4行分別為啟動、停止、重啟服務和重新載入配置。 要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start 即可。 查看crontab服務狀態: service crond status  

5、個人經驗總結

  我們使用這個命令大多都是運行相關的腳本文件,最常見的就是定時調用http請求進行數據採集或者資料庫的備份等等。因此當我們自己所寫的腳本文件中含有文件引入時,最好採用絕對路徑,否則將會引入失敗從而導致定時任務失敗。    

(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)

 作者:那一葉隨風   http://www.cnblogs.com/phpstudy2015-6/

 原文地址:http://www.cnblogs.com/phpstudy2015-6/p/7534968.html

 聲明:本博客文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文鏈接

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

-Advertisement-
Play Games
更多相關文章
  • 一.Oracle資料庫的安裝(安裝在虛擬機的xp系統里) 1.安裝虛擬機 2.虛擬機內安裝xp系統,以下步驟在虛擬機內進行 3.雙擊setup.exe,在出現的界面中設置口令,及確認口令(此口令即為system賬號的密碼),點擊下一步 4.先決條件檢查,將"用戶已驗證前面的覆選框打勾,下一步 5.概... ...
  • 如果是重覆安裝,首先需要清除已經存在的軟體安裝記錄(首次安裝只需執行紅色部分): rm -fr /usr/local/bin/*oraenv rm -fr /usr/local/bin/dbhome rm -fr /usr/tmp/.oracle rm -fr /tmp/.Oracle rm -fr... ...
  • 轉載請註明原創出處,謝謝! 最近沒有什麼實戰,準備把JVM知識梳理一遍,先以開發人員的交流來談談jvm這塊的知識以及重要性,依稀記得2、3年前用solr的時候老是經常oom,提到oom大家應該都不陌生,那個時候也並沒有從根本解決oom,由於對jvm不熟悉,只是去百度,到處都是配置jvm參數的,那個時 ...
  • Sql Server 查看存儲過程最後修改時間 select * from sys.procedures order by modify_date desc ...
  • 問題:在存儲過程中使用臨時表時,不Create臨時表就會報錯。 分析了下,總結了臨時表創建方式的區別。 創建臨時表有兩種方法: 方法一 create table #臨時表名 ( 欄位1 約束條件, 欄位2 約束條件, …… ) create table ##臨時表名 ( 欄位1 約束條件, 欄位2 ...
  • 實現方式: 1、將欄位類型設為 TIMESTAMP 2、將預設值設為 CURRENT_TIMESTAMP 舉例應用: 1、MySQL 腳本實現用例 --添加CreateTime 設置預設時間 CURRENT_TIMESTAMP ALTER TABLE `table_name`ADD COLUMN ` ...
  • 1. CHAR 語法: CHAR (length) 其中length的取值範圍為1到255。 超過255則報錯: mysql> create table s3 ( value char(1023) primary key); ERROR 1074 (42000): Column length too ...
  • 技術棧數據流向平臺規模差異化,隔離化YARN: https://baike.baidu.com/item/yarn/16075826?fr=aladdin今天先到這兒,希望對您在系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章: 互聯網電商購物車架構... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...