linux系統中的排程週期任務:cron
linux系統中的排程週期任務:cron
主要概念
cron工具用來排程經常重複的任務
crontab命令是編輯crontab檔案的一個前端程式
crontab檔案使用5個欄位來規定計時資訊
cron作業中的標準輸出會作為郵件寄給使用者
執行週期任務
人們經常發現自己會定期執行一些任務.在系統管理中,這些任務包括從/tmp目錄下刪除舊的,不使用的檔案,或者經常
檢查記錄登入資訊的檔案以確保其不會變得過大.其他使用者可能會有自己的任務,如檢查不再使用的大型檔案,或者檢視
網站上是否公佈了新的資訊.
cron工具允許使用者配置要定期執行的命令,如每隔十分鐘,每週四一次,或每月兩次.使用者用crontab命令配置自己的任務
計劃(cron table),指定何種命令在何時執行.這些任務由傳統的linux(和unix)守護程式,即crond守護程式管理.
cron服務
crond守護程式是代表系統或個人使用者執行週期任務的守護程式.通常這個守護程式隨著系統的啟動而啟動,因此大多數
使用者都不會注意到.透過列出所有程式且搜尋crond,你可以確定crond守護程式有沒有在執行.
[root@sidatabase /]# ps aux | grep crond
root 3204 0.0 0.0 117204 1368 ? Ss Aug09 0:11 crond
root 4687 0.0 0.0 103244 872 pts/0 S+ 14:52 0:00 grep crond
如果crond守護程式沒有在執行,系統管理員需要以根使用者身份來啟動crond守護程式.
crontab語法
使用者透過配置一個稱為"cron table"(經常縮寫成"crontab")的檔案指定要執行哪些作業以及何時執行.下面列出了一個
crontab檔案的例子.
30 23 * * 6 su - sybx -c "/sydata/app/db/bin/rman target / msglog=/sybak/bak0.log cmdfile=/sybak/sybx_rman_script/bak0"
30 23 * * 0,1,2,3,4,5 su - sybx -c "/sydata/app/db/bin/rman target / msglog=/sybak/bak1.log cmdfile=/sybak/sybx_rman_script/bak1"
30 2 * * 0,1,2,3,4,5,6 su - sybx -c "/sydata/app/db/bin/rman target / msglog=/sybak/bakarch.log cmdfile=/sybak/sybx_rman_script/bakarch"
30 3 * * 0,1,2,3,4,5,6 su - sybx -c "/sydata/app/db/bin/rman target / msglog=/sybak/delbackup.log cmdfile=/sybak/sybx_rman_script/delbackup"
crontab檔案是一個以行為執行單位的配置檔案,每行執行三種功能中的一種:
註釋
首字元(非空格)是一個#的行被認為是註釋,可忽略.
環境變數
具有name=value格式的所有行被用來定義環境變數
cron命令
其他的任何(非空)行被認為是cron命令,由下面描述的六個欄位組成.
cron命令列包括六個用空白分隔的欄位.前五個欄位用來指定何時執行命令,剩餘的第六個欄位(包括所有在第五個字
段後的部分)指定要執行的命令.前五個欄位指定下列時間資訊:
minute hour day of month month(1=January,....) day of week (0=Sunday,....) command to run
25 04 1 * * echo "pay bills"
前五種欄位的每一種都必須含有一個使用下列語法的標記
crontab時間表示語法標記
標記 含義 例子 解釋(如果用在第一個欄位中)
* 每次 * 每分鐘
n 在指定時間 10 在每小時過10分時
n,n,... 在任何指定時間 22,52 在每小時過22分和每小時過52分時
*/n 每隔n次 */15 每隔15分鐘(在每個整點,一刻鐘,半點,或差一刻整點時)
使用crontab命令
使用者很少直接管理自己的crontab檔案(甚至不知道crontab檔案被儲存在哪裡),而是使用crontab命令來編輯,列出或者
刪除它.
crontab {[-e] | [-l] | [-r]}
crontab file
編輯,列出或刪除當膠crontab檔案,或者用file取代當前crontab檔案.crontab命令列選項釋義如下
crontab命令列選項
選項 作用
-e 編輯當前檔案
-l 列出當前檔案
-r 刪除當前檔案
直接編輯crontab檔案
使用者經常用crontab -e 直接編輯自己的crontab檔案.crontab命令將把當前crontab配置開啟到使用者預設的編輯器中.
當使用者編輯完檔案並退出編輯器時,修改過的檔案內容作為新的crontab配置被新增.
預設的編輯器是/bin/vi,然而crontab像其他許多命令一樣,檢查editor環境變數.如果變理已經被設定,它將會被用來
替代預設編輯器.
環境變數與cron
配置cron作業時,使用者應該知道一個微妙的細節.當crond守護程式啟動使用者命令時,它沒有從shell中執行命令,而是
直接對這個命令派生和執行(fork和exec).這有一個重要的含義:啟動時被shell配置的任何環境變數或別名(alias),
例如在/etc/profile或.bash_profile中被定義的任何環境變數,不會在cron執行命令時出現.
如果使用者想定義一個環境變數,需要在自己的crontab配置中定義該變數.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-769170/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux基礎(四)——任務排程cron和anacronLinux
- 詳解BI系統中的任務排程
- 『學了就忘』Linux系統定時任務 — 89、任務排程工具anacronLinux
- Linux 中 Laravel 任務排程不執行LinuxLaravel
- Linux 定時任務排程Linux
- 使用Node.js的Node-cron進行任務排程 - DilinaNode.js
- Spark中資源排程和任務排程Spark
- 關於使用 go cron 庫(任務排程)平滑關閉的實現Go
- 任務排程
- linux定時任務cron配置Linux
- Android 中的定時任務排程Android
- 系統架構設計之-任務排程系統的設計架構
- 在 Linux 中怎麼使用 cron 計劃任務Linux
- 分散式任務排程系統設計小結分散式
- Java中的定時任務最佳化:從Cron表示式到高精度排程的實現Java
- 如何在Linux中加入cron任務Linux
- 排查linux 定時任務cron crontabLinux
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux
- Airflow 任務排程AI
- Laravel 任務排程Laravel
- 基於Hyperf開發的任務排程系統.支援任務投遞,DAG任務編排(多個任務使用同一個事務).
- 聊聊PowerJob的任務排程
- 開源分散式任務排程系統就選:DolphinScheduler分散式
- OPPO大資料離線任務排程系統OFLOW大資料
- 一文詳解 Linux Crontab 排程任務Linux
- 分散式任務排程分散式
- Spring 指南(排程任務)Spring
- Linux系統中延時任務及定時任務Linux
- 開源公開課丨大資料排程系統 Taier 任務排程介紹大資料AI
- Linux 中怎麼設定計劃任務:cron 與 anacronLinux
- 分散式系統架構之構建你的任務排程中心分散式架構
- 進擊的 Kubernetes 排程系統(二):支援批任務的 Coscheduling/Gang scheduling
- 分散式排程任務-ElasticJob分散式AST
- LeetCode 621 任務排程器LeetCode
- Timer和TimerTask 任務排程
- DAG任務排程系統 Taier 演進之道,探究DataSourceX 模組AI
- 在 Linux 中安全且輕鬆地管理 Cron 定時任務Linux
- 淺談分散式任務排程系統Celery的設計與實現分散式
- Apache DolphinScheduler大規模任務排程系統對大資料實時Flink任務支援Apache大資料