小知識點--crontab

前言

這兩週學了不少東西,還把golang語言基本掌握了,收穫仍是挺多的。在作安全的過程當中,有不少須要定時執行的任務,好比抓取主機數量,端口數據等,這都逃不開linux中的crontab命令,今天分享一下crontab這個小知識點。提醒你們一下,在大公司服務器中,部署的基本上都是CentOS,因此你們想學CentOS上的操做,推薦你們看一下《鳥哥私房菜》python

命令說明

crontab 命令能夠在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位能夠是分鐘、小時、日、月、周及以上的任意組合。linux

命令格式

crontab [-u user] filegolang

或者shell

crontab [-u user] [-e | -l | -r]安全

參數解釋

  • -u user:用來設定某個用戶的crontab服務,linux下可能有不少用戶,每一個用戶對應着一份crontab任務清單。
  • file:是命令文件的名字,表示file做爲crontab的任務清單進行載入
  • -e:編輯某個用戶的crontab文件內容,若是不指定用戶,則是表明這個當前用戶。
  • -l:顯示某個用戶的crontab文件內容,若是不指定用戶,則是表明這個當前用戶。
  • -r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,若是不指定用戶,則刪除當前用戶的crontab文件。
  • -i:在刪除用戶crontab給出確認提示

crontab文件

crontab命令參數相信你們已經瞭解了,那crontab文件中,咱們須要按照什麼格式寫內容,cron服務纔會幫助咱們定時執行呢?服務器

基本格式

每一條咱們想執行的任務,即爲crontab文件中的一行內容。這一行內容的基本格式以下:機器學習

minute hour day month week command學習

minute,hour,day,month,week,command之間以空格相隔,格式含義以下:rest

  • minute: 表示分鐘,能夠是從0到59之間的任何整數。
  • hour:表示小時,能夠是從0到23之間的任何整數,0表明着0點。
  • day:表示日期,能夠是從1到31之間的任何整數,即爲一個月中的某一天。
  • month:表示月份,能夠是從1到12之間的任何整數。
  • week:表示星期幾,能夠是從0到7之間的任何整數,這裏的0或7表明星期日。
  • command:要執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件。

在以上各個字段中,還可使用如下特殊字符code

  • 星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。
  • 逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
  • 中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
  • 正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線能夠和星號一塊兒使用,例如*/10,若是用在minute字段,表示每十分鐘執行一次。

實例

在上述講解後,不知你們會不會用了?下面講一些實例,幫助你們理解和使用。

  1. 每小時的第10和15分鐘執行命令

10,15 * * * * command

2.每隔兩天的上午3點到5點的第10和第15分鐘執行

10,15 3,5 /2 * command

3.每週六或者週日的4:45 ping一下百度

45 4 * * 6,0 ping www.baidu.com

4.每週一的18 : 00至23 : 00之間每隔30分鐘執行python -h

0,30 18-23 * * 1 python -h

crond服務

crontab文件是靠crond服務保障執行的,下面是crond服務的一些小操做。

service crond start //啓動服務

service crond stop //關閉服務

service crond restart //重啓服務

service crond reload //從新載入配置

service crond status //查看服務狀態

注意事項

在crontab文件中定義多個調度任務時,須要特別注意環境變量的設置,由於咱們手動執行某個任務時,是在當前shell環境下進行的,程序固然能找到環境變量,而系統自動執行任務調度時,是不會加載任何環境變量的,所以,就須要在crontab文件中指定任務運行所需的全部環境變量,這樣系統執行任務調度時就沒有問題了,因此你要保證在shell腳本中提供全部必要的路徑和環境變量。

注意點以下:

1.執行腳本時最好要寫全局路徑

2.執行的腳本,好比start.sh,若是引用了環境變量,須要在腳本中使用source加載環境變量。start.sh部份內容示例以下:

!/bin/sh

source /etc/profile

......

3.手動執行腳本沒問題,可是crontab不執行,這也有多是環境變量的問題。能夠直接在crontab命令總引入環境變量。

* * * * * source /etc/profile;python -h

最後

關注公衆號:七夜安全博客

  • 回覆【1】:領取 Python數據分析 教程大禮包
  • 回覆【2】:領取 Python Flask 全套教程
  • 回覆【3】:領取 某學院 機器學習 教程
  • 回覆【4】:領取 爬蟲 教程
相關文章
相關標籤/搜索