Linux- cron調度進程

cron 是一個 Unix 類操作系統中的時間調度守護進程,用于在特定的時間或間隔運行指定的命令或腳本。它非常適合自動化系統管理和維護任務,如備份、日志輪轉、系統監控等。以下是 cron 守護進程的詳細介紹。

cron 守護進程的工作原理

  1. crontab 文件

    • cron 從稱為 crontab(cron table)的文件中讀取任務計劃。每個用戶都有自己的 crontab 文件,系統級任務在 /etc/crontab/etc/cron.d/ 目錄中定義。
    • crontab 文件中每行定義一個計劃任務,包括時間表達式和要執行的命令。
  2. 定期檢查

    • cron 守護進程每分鐘檢查一次 crontab 文件和目錄 /var/spool/cron/crontabs//etc/cron.d//etc/crontab,以確定是否有任務需要執行。
  3. 執行任務

    • 當當前時間與 crontab 文件中的時間表達式匹配時,cron 執行相應的命令或腳本。

crontab 文件格式

crontab 文件中的每一行代表一個任務,格式如下:

* * * * * command_to_be_executed
- - - - -
| | | | |
| | | | +----- 一周中的星期幾 (0 - 7) (星期天為 0 或 7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小時 (0 - 23)
+------------- 分鐘 (0 - 59)

例如,每天凌晨 2 點運行備份腳本:

0 2 * * * /path/to/backup.sh

常用的 crontab 命令

查看 crontab 文件
crontab -l
編輯 crontab 文件
crontab -e
刪除 crontab 文件
crontab -r
從文件安裝 crontab
crontab filename

系統級 crontab 文件

除了用戶級 crontab 文件外,還有一些系統級 crontab 文件:

  • /etc/crontab:系統級的 crontab 文件,格式與用戶級略有不同。它包含了一個用戶字段,指定哪個用戶運行任務。

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root# m h dom mon dow user command
    0 2 * * * root /path/to/backup.sh
    
  • /etc/cron.d/ 目錄:可以包含多個任務文件,文件中的每行格式與 /etc/crontab 相同。

cron 特殊字符串

cron 還支持一些特殊的字符串,用于簡化時間表達式:

  • @reboot:在系統重啟后運行。
  • @yearly@annually:每年運行一次,相當于 0 0 1 1 *
  • @monthly:每月運行一次,相當于 0 0 1 * *
  • @weekly:每周運行一次,相當于 0 0 * * 0
  • @daily@midnight:每天運行一次,相當于 0 0 * * *
  • @hourly:每小時運行一次,相當于 0 * * * *

例如,每次系統重啟后運行腳本:

@reboot /path/to/startup.sh

安全性和最佳實踐

  1. 限制訪問

    • 僅允許受信任的用戶編輯和安裝 crontab 文件。
    • 使用 /etc/cron.allow/etc/cron.deny 文件控制哪些用戶可以使用 crontab 命令。
  2. 日志記錄

    • 配置 cron 日志記錄,以監控任務執行情況和故障。
    • /etc/rsyslog.conf/etc/rsyslog.d/ 配置文件中確保 cron 日志記錄是啟用的,例如:
      cron.* /var/log/cron.log
      
  3. 使用絕對路徑

    • crontab 中指定命令和腳本的絕對路徑,確保任務在預期的位置運行。
  4. 環境變量

    • crontab 文件中設置必要的環境變量,如 PATH,確保任務能夠找到需要的命令和腳本。
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    

例子

用戶級 crontab 示例
# 每天凌晨 1 點運行備份腳本
0 1 * * * /usr/local/bin/backup.sh# 每小時檢查一次磁盤使用情況
0 * * * * /usr/local/bin/check_disk.sh# 每月 1 號凌晨 2 點清理日志文件
0 2 1 * * /usr/local/bin/clean_logs.sh
系統級 crontab 示例
# /etc/crontabSHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# m h dom mon dow user command
0 3 * * * root /usr/local/bin/system_backup.sh
15 4 * * 7 root /usr/local/bin/weekly_report.sh

通過了解和正確配置 cron 守護進程,可以實現系統管理和維護任務的自動化,極大提高工作效率和系統可靠性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13026.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

上海市計算機學會競賽平臺2022年5月月賽丙組三數排序

題目描述 給定三個整數 𝑎,𝑏,𝑐a,b,c,請將它們以從小到大的順序排序后輸出。 輸入格式 單獨一行:三個整數表示 𝑎,𝑏,𝑐a,b,c。 輸出格式 單獨一行:表示按升序排列…

匯聚榮:拼多多長期沒有流量如何提高?

在電商的海洋中,拼多多以其獨特的團購模式吸引了眾多消費者的目光。然而,隨著市場競爭的加劇和消費者需求的多樣化,一些商家發現自家店鋪的流量持續低迷,銷售業績難以突破。面對這樣的挑戰,如何有效提升拼多多店鋪的客…

【Python】學生管理系統

為了了解Json以及在python中如何處理Json數據,我在這里整理了一段全面詳細的 Python 代碼,演示了如何加載、處理和操作 JSON 數據。該代碼包括讀取 JSON 數據、查詢學生信息、添加新學生、更新課程信息等操作。 示例代碼 import json# 示例 JSON 數據 …

深視 線掃相機 獲取點云數據

Qt hello - 專注于Qt的技術分享平臺 最近項目上用到了深視的線掃相機,集成了三天才搞定,分享下代碼。 順便吐槽一下,想用相機取圖,這么簡單的功能,搞得如此麻煩。 1,文檔有三份,就不能集成到…

【計算機畢業設計】springboot反詐科普平臺的設計與實現

相比于以前的傳統手工管理方式,智能化的管理方式可以大幅降低反詐科普平臺的運營人員成本,實現了反詐科普平臺的 標準化、制度化、程序化的管理,有效地防止了反詐科普平臺的隨意管理,提高了信息的處理速度和精確度,能夠…

python中字符串的 format() 方法

文章目錄 前言1、位置參數2、索引參數3、命名參數3、格式化參數 前言 format() 是 Python 字符串對象的方法,用于將值插入到格式化字符串的占位符中。它是一種靈活和強大的字符串格式化工具。format() 方法可以在字符串中使用占位符 {},并通過傳遞參數將…

[vue] nvm

nvm ls // 看安裝的所有node.js的版本nvm list available // 查顯示可以安裝的所有node.js的版本可以在可選列表里。選擇任意版本安裝,比如安裝16.15.0 執行: nvm install 16.15.0安裝好了之后。可以執行: …

字符數組以及字符串相關的幾個函數

一.字符數組 1.定義:格式如下 char a[10]; //此處就表示定義了一個長度為10的字符數組 2.引用: 也和其余的數組一樣,是下標引用。 3.初始化: 如下代碼為字符數組初始化的幾種情況: int main() {char arr[5] {…

25考研英語長難句Day03

25考研英語長難句Day03 【a.詞組】【b.斷句】 多虧了電子學和微力學的不斷小型化,現在已經有一些機器人系統可以進行精確到毫米以下的腦部和骨骼手術,比技術高超的醫生用手能做到的精確得多。 【a.詞組】 詞組翻譯thanks to多虧了,由于cont…

【JavaEE進階】 Bean的作用域與生命周期

文章目錄 🍃Bean的作用域🚩作用域的使用🚩觀察Bean的作用域🎈單例作用域🎈多例作用域🎈請求作用域🎈會話作?域🎈Application作?域 🎄Bean的?命周期?總結 &#x1f34…

win11家庭中文版安裝docker,報錯 Docker Engine stopped

先引一下這位博主的鏈接超詳細Windows11家庭中文版系統安裝Docker-20230401_windows11安裝docker-CSDN博客,我到前五步(跳出頁面重啟)和博主都是一樣的,但是第六步我并沒有報錯,直接跳出docker界面 記錄一下我的解決辦法,首先按照…

金價又雙叒漲了!現貨黃金什么比較好

雖然近期有新聞顯示,國內的實物黃金價格出現大幅的下跌,但是從整體看,多個黃金投資品種的長期上升趨勢還是比較穩定的,因此我們會看到,很多投資者會趁現在這波下跌重新入場做多。那么投資黃金買什么比較好呢&#xff1…

Java中的類與對象-深入探索

在Java編程的世界里,類(Class)和對象(Object)是兩個核心概念。它們是面向對象編程(OOP)的基石,使得Java能夠處理復雜的數據結構和交互。本文將深入解析Java中的類和對象,…

淺述遙感技術在農業領域的應用

雖久未更新,但本文依舊延續以前敘述風格,即以通俗易懂方式描述關鍵問題。 本文章節安排如下: 簡述背景;介紹在農業領域的主要應用技術的關鍵問題;總結和實例介紹。 1 背景描述-何為遙感圖像? 一般來說&a…

如何向全國各大新聞網站投稿?

在信息爆炸的時代,新聞媒體的投稿工作對于單位的信息宣傳員來說,既是一項重要的職責,也是一項充滿挑戰的任務。作為一名信息宣傳員,我負責著單位的對外信息宣傳投稿工作,每個月都需要在各大媒體上發表文章,以展示單位的成果和風采。 然而,剛開始的投稿之路并不順暢。我習慣性地…

4種企業防泄密的辦法,強烈推薦第二種

4種企業防泄密的辦法,強烈推薦第二種 企業信息泄密常見的原因有內部人員、黑客、違規收集信息、第三方合作商,以下將為你詳細分析這些泄密原因以及應對的方法。 1、內部人員泄密 內部員工由于能夠接觸到敏感數據,成為主要的泄露數據群體。這…

springboot 序列化和反序列化

介紹 在Java中,序列化和反序列化是一種將對象轉換為字節流或將字節流轉換為對象的機制。通過序列化,可以將對象存儲到文件中、傳輸到網絡上,或者在分布式系統中進行對象的傳遞。本文將詳細介紹Java序列化和反序列化的原理、使用方法和常見應用…

優路教育:以實干、創新、永不言敗的精神內核,推動新時代職教發展

隨著“教育家精神”的提出,新時代下人民教師的職業內涵更為豐富,同時也被賦予了更為崇高的教育使命。強教必先強師,加強教師隊伍建設是建設教育強國重要的基礎工作。由此,打造一批勤勉敬業、創新實干的教師隊伍,成為了…

2024最新洗地機推薦,洗地機怎么選?熱門品牌哪個最好用?

在現代生活中,忙碌的日常讓家庭清潔變得更加繁重和耗時。然而,洗地機的引入徹底改變了這一狀況。憑借其強大的清潔效果和簡便的使用方式,洗地機能夠迅速清除地面上的各種污垢,使清潔工作變得輕松自如。正因為如此,洗地…

JWT生成token工具類實現

JWT簡介 JWT定義 JWT全稱為Json web token,也就是 Json 格式的 web token JWT數據結構 1.JWT由三段字符串組成,中間用.分隔 Project_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzE2MzcwMTM0LCJpYXQiOjE3MTU3NjUzMzQsImp0aSI6IjllO…