Linux Crontab 任務管理工具命令以及示例

Crontab 是 Linux 平臺下的一款用于循環執行例行任務的工具,Linux 系統由 cron (crond) 這個系統服務來控制任務 , Linux系統本來就有很多的計劃任務需要啟動 , 所以這個系統服務是默認開機啟動的 。 Linux 為使用者提供的計劃任務的命令就是 Crontab

Crontab 是 Linux 下用來周期性執行任務或者等待處理某些事情的時候

Crontab 配置文件

Crontab 的周期性任務主要分為兩種:系統任務 / 用戶任務

  • 系統任務就是系統周期性需要執行的任務,比如說定時執行緩存清理任務,記錄日志等等。系統任務的配置文件在 /etc/crontab

這里是 crontab 的配置文件中的內容

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

前面 4 行用于配置 cron 的環境變量,環境變量的配置不在這里討論了,之后的內容是 crontab 的用法的一些簡單的解釋

  • 用戶的周期性任務就可以使用 crontab 工具,所有用戶制定的 crontab 計劃任務都被保存在 /var/spool/cron 中,文件名即用戶名

Crontab 文件的含義

在上面的crontab文件中已經包含了一部分的解釋,這里我將其翻譯為中文

SHELL=/bin/sh        
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# 詳細的解釋可以查看 man 手冊# 舉例:
# .---------------- 分 (0 - 59)        
# |  .------------- 時 (0 - 23)
# |  |  .---------- 日期(每月) (1 - 31)
# |  |  |  .------- 月 (1 - 12) 也可以使用月的英文,例如 jan,feb,mar,apr ...
# |  |  |  |  .---- 日期(每周) (0 - 6) (周日即是 0 也是 7 )也可以使用sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * 想要執行命令的用戶(這個參數可以為空)   你想要執行的命令

Crontab 一共包含包括 7 個字段,前五個字段是關于設置執行周期的,第六個字段用于指定你想要執行的命令的用戶,第七個字段是要執行的命令

在前5個字段中,還可以使用以下的特殊字符

星號 (*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。
逗號 (,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
中杠 (-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。

相關的權限文件

  • /etc/cron.deny 該文件中所列的用戶不允許使用 crontab 命令
  • /etc/cron.allow 該文件中所列的用戶允許使用 crontab 命令
  • /var/spool/cron/ 所有用戶 crontab 文件存放的目錄,文件名即用戶名

Crontab 服務

  • 安裝 Crontab 服務

CentOS 7.x

yum install crontabs

Fedora 23+

dnf install crontabs 

在大多數 Linux 發行版中已經自帶的 Crontab ,依舊寫一下安裝方法

  • 啟用服務
systemctl start crond
  • 停止服務
systemctl stop crond
  • 查看服務狀態
systemctl status crond 
  • 加入開機啟動
systemctl enable crond 
  • 取消開機啟動
systemctl disable crond 

命令格式詳解

Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]Options:-u <user>  define user //設定某個用戶的crontab服務,例如,“-u user1”表示設定 user1 用戶的 crontab 服務,此參數一般由root用戶來運行-e         edit user's crontab //編輯 crontab 文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件-l         list user's crontab //顯示 crontab 文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容-r         delete user's crontab //刪除某個用戶的 crontab 文件,如果不指定用戶,則默認刪除當前用戶的crontab文件,此動作一般由 root 來執行-i         prompt before deleting //在刪除用戶的crontab文件時給確認提示-n <host>  set host in cluster to run users' crontabs //這個選項只有才 cron(8) 才啟用,可以根據已經創建好了的配置文件來指定得對于一個集群來執行任務-c         get host in cluster to run users' crontabs //這個選項只有才 cron(8) 才啟用,可以查看集群目前的狀態,需要和 -n 協同使用-s         selinux context  //selinux 相關選項-x <mask>  enable debugging //開啟調試

使用方法

  • 輸入 crontab -e 并回車即可開始編輯當前用戶的 crontab 文件,編輯完成保存之后文件立即生效

默認使用 vi 編輯器,如果想要使用 vim 編輯器或者其他編輯器,可以新建環境變量 EDITOR,變量值為你想要使用的編輯器的指令,例如我想要使用 nano 作為編輯器,就可以執行命令 “export EDITOR=nano” 來添加一個環境變量。
如果想要讓環境變量永久生效,可以將要執行的命令寫入到 “~/.bashrc”中,這樣下次啟動的時候就會自動配置。

  • 如果想要刪除 crontab 文件可以使用 crontab -r 來刪除當前用戶的 crontab 文件
  • 想要快速查看 crontab 文件可以使用命令 crontab -l

備份 crontab 文件

為了防止文件被意外刪除 , 我們可以在建立好了 crontab 任務之后備份一下相關的配置文件,筆者的思路是在復制一次當期的文檔并在后面加上 “.backup” 來示意是備份文件,通常只需要執行以下命令(以 root 用戶為例)

cp /var/spool/cron/root /var/spool/cron/root.bachup

如果當前用戶沒有權限的話,可以先將自己的配置文件復制到自己的 HOME 目錄下也是可以的

一些簡單的示例

每個月的 1 號的 2:30 分重啟 Apache 服務

30 2 1 * *  systemctl restart httpd  

每個星期的星期一的早上1點重啟 mariadb

0 1 * * 1 systemctl restart mariadb

更多的示例可以通過搜索輕松得找到,這里就不多說了

注意事項

通常來說,我們建立的 crontab 任務都是保存了之后立即執行的,但是有的時候卻無法執行,將命令單獨拿出來卻可以使用,這個時候就需要檢查一下 crontab 文件的環境變量是否正常。cron 不是 shell,在執行的時候是不知道環境變量的,所以在腳本或者說是配置文件中提供必要的環境變量文件以及路徑,主要注意以下幾點

  1. 配置文件中一點涉及路徑時,使用絕對路徑
  2. 任務執行需要用到 python 或者 java 又或者其他環境變量的時候,需要通過 source 命令引入環境變量
  3. 在某些情況下,手動執行腳本可以使用,但是放在 Crontab 中就無法執行,就很有可能是由于環境變量引起的故障,可以通過在 crontab 中直接引入環境變量。

其他事項

  • 很奇怪的是在我查閱了很多的資料,發現都說在 crontab 的任務執行完畢之后會向當前系統用戶發送一封郵件,但是我的 crontab 在進行了2天的任務都沒有接收到任何郵件
  • crontab 的文件剛剛寫入不一定會立即執行,執行的延遲大概在2分鐘左右,如果重啟 crond 服務則立即執行
  • 據說在 crontab 中 % 是有特殊含義的,表示換行的意思。但是在筆者的驗證中沒有發現這一現象
  • 如果只運行 crontab -r 有可能刪除 crontab 目錄下的所有用戶的 crontab

轉載于:https://www.cnblogs.com/divent/p/5743008.html

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

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

相關文章

Linux 網絡編程詳解一(IP套接字結構體、網絡字節序,地址轉換函數)

IPv4套接字地址結構 struct sockaddr_in {uint8_t sinlen;&#xff08;4個字節&#xff09;sa_family_t sin_family;&#xff08;4個字節&#xff09;in_port_t sin_port;&#xff08;2個字節&#xff09;struct in_addr sin_addr;&#xff08;4個字節&#xff09;char sin_zer…

地籍cad的lisp程序大集合_AutoCAD-LISP程序100例

{:soso_e179:}AutoCAD-LISP程序100例.JPG (143.82 KB, 下載次數: 28)2011-10-18 14:42 上傳有說明很好&#xff01;頂如果您使用 AutoCAD,下面的內容對您一定有幫助。在某些方面能大大提高您的工作效率。下面的程序均以源程序方式給出&#xff0c;您可以使用、參考、修改它。bg…

javascript中數組的22種方法

前面的話數組總共有22種方法&#xff0c;本文將其分為對象繼承方法、數組轉換方法、棧和隊列方法、數組排序方法、數組拼接方法、創建子數組方法、數組刪改方法、數組位置方法、數組歸并方法和數組迭代方法共10類來進行詳細介紹對象繼承方法數組是一種特殊的對象&#xff0c;繼…

javascript/jquery高度寬度詳情解說分析

為什么80%的碼農都做不了架構師&#xff1f;>>> 一、window對象表示瀏覽器中打開的窗口 二、window對象可以省略 一、document對象是window對象的一部分 二、瀏覽器的HTML文檔成為Document對象 window.location和document.location window對象的location屬性引用的…

農用地包括哪些地類_土地地類一覽表

一級類二級類三級類含義編號三大類名稱編號名稱編號名稱1農用地指直接用于農業生產的土地&#xff0c;包括耕地&#xff0c;園地&#xff0c;林地&#xff0c;牧草地及其他的農業用地11耕地指種植農作物、土地&#xff0c;包括熟地、新開發復墾整理地&#xff0c;休閑地、輪歇地…

紅黑樹插入時的自平衡

紅黑樹插入時的自平衡 紅黑樹實質上是一棵自平衡的二叉查找樹&#xff0c;引入帶顏色的節點也是為了方便在進行插入或刪除操作時&#xff0c;如果破壞了二叉查找樹的平衡性能通過一系列變換保持平衡。 紅黑樹的性質 每個節點要么是紅色&#xff0c;要么是黑色根節點必須是黑…

說一下自己對于 Linux 哲學的理解

查閱了一些資料&#xff0c;官方的哲學思想貌似是&#xff1a; 一切皆文件由眾多單一目的的小程序&#xff0c;一個程序只實現一個功能&#xff0c;多個程序組合完成復雜任務文本文件保存配置信息盡量避免與用戶交互什么&#xff0c;你問我的理解&#xff1f;哲學思想&#xff…

UWP學習記錄

微軟{X:Bind}、{Binding}資料網站 &#xff1a; https://msdn.microsoft.com/windows/uwp/xaml-platform/x-bind-markup-extension在View的ItemTemplate中綁定ViewModel的方法&#xff1a;1 <ItemsControl Name"XX" ItemsSource"{x:Bind VM.XXModels,ModeOne…

dw1000信標碼_DW1000方案工牌型UWB標簽,助力10厘米高精度室內定位!

DW1000方案工牌型UWB標簽&#xff0c;助力10厘米高精度室內定位&#xff01;發布日期&#xff1a;2019-04-01 瀏覽次數&#xff1a;244次微能信息(95power)推出一款工牌型UWB標簽VDU1510 &#xff0c;廣泛應用于超寬帶UWB定位系統&#xff0c;最高可實現10cm高精度人員定位。工…

【Java】HashMap源碼(1.7)

Life is not a ridiculous number of life, the meaning of life lies in life itself HashMap源碼 散列集 數組和鏈表可以保持元素插入的順序&#xff0c;對數組來說&#xff0c;他的優點是擁有連續的存儲空間&#xff0c;因此可以使用元素下標快速訪問&#xff0c;但缺點在…

Docker 基本用法

1.安裝&#xff1a; wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm yum install docker-io -y2.獲取鏡像 pull docker pull ubuntu docker pull ubuntu:14.043.運行這個鏡像&#xff0c;在其中運行bash應用…

畫刷的使用

1.畫刷的定義&#xff1a; HBRUSH hBrush; windows 自定義的畫刷&#xff1a; WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和NULL_BRUSH &#xff08;也叫HOLLOW_BRUSH&#xff09; 獲取方法如下&#xff1a; hBrush (HBRUSH) GetStockObject (GRAY_BR…

dataframe 控對象_iOS知識 - 常用小技巧大雜燴

1&#xff0c;打印View所有子視圖po [[self view]recursiveDescription]2&#xff0c;layoutSubviews調用的調用時機* 當視圖第一次顯示的時候會被調用。* 添加子視圖也會調用這個方法。* 當本視圖的大小發生改變的時候是會調用的。* 當子視圖的frame發生改變的時候是會調用的。…

【Java】jdk 1.8 新特性——Lambda表達式

Lambda表達式 jdk 1.8 新加入的特性&#xff0c;簡化了簡單接口的實現 函數式接口 函數式中只有一個待實現的方法&#xff0c;可以使用FunctionalInterface注解標注函數式接口.這個接口中只能有一個待實現的方法&#xff0c;但可以包含默認方法&#xff0c;靜態方法以及Obje…

【Todo】Java8新特性學習

參考這篇文章吧&#xff1a; http://blog.csdn.net/vchen_hao/article/details/53301073 還有一個系列轉載于:https://www.cnblogs.com/charlesblc/p/6123380.html

jsp調整字體大小font_html font標簽如何設置字體大小?

首先我們先來看看htmlfont標簽是如何來設置字體大小的&#xff1a;都只到htmlfont標簽是個專門用來設置字體的標簽&#xff0c;雖然在html5中用的會很少(因為都用css樣式來設置font標簽里面的屬性)&#xff0c;但是個人覺得font標簽還是相當強大的標簽的&#xff0c;為什么這么…

runtime官方文檔

OC是一種面向對象的動態語言&#xff0c;作為初學者可能大多數人對面向對象這個概念理解的比較深&#xff0c;而對OC是動態語言這一特性了解的比較少。那么什么是動態語言&#xff1f;動態語言就是在運行時來執行靜態語言的編譯鏈接的工作。這就要求除了編譯器之外還要有一種運…

【Java】synchronized關鍵字筆記

Java Synchronized 關鍵字 壹. Java并發編程存在的問題 1. 可見性問題 可見性問題是指一個線程不能立刻拿到另外一個線程對共享變量的修改的結果。 如&#xff1a; package Note.concurrency;public class Demo07 {private static boolean s true;public static void mai…

sql語句分析是否走索引_MySql 的SQL執行計劃查看,判斷是否走索引

在select窗口中&#xff0c;執行以下語句&#xff1a;set profiling 1; -- 打開profile分析工具show variables like %profil%; -- 查看是否生效show processlist; -- 查看進程use cmc; -- 選擇數據庫show PROFILE all; -- 全部分析的類型show index from t_log_account; ##查看…

SQL Server-數據類型(七)

前言 前面幾篇文章我們講解了索引有關知識&#xff0c;這一節我們再繼續我們下面內容講解&#xff0c;簡短的內容&#xff0c;深入的理解&#xff0c;Always to review the basics。 數據類型 SQL Server支持兩種字符數據類型&#xff0c;一種是常規&#xff0c;另外一種則是Un…