周期性計劃任務crond講解

crond是Linux或者unix系統的作業調度程序。運用它,在設定的時間段周期性執行某個命令或腳本。下文的例子均在centos 7.3上測試。
一、crond組件
如果centos7.3最小化安裝,不一定存在crond服務,需要手動安裝,安裝之后手動啟動并設置以后自行開機啟動。
主要有cronie、cronie-anacron、crontabs三個程序包。
cronie: 主程序包,提供crond守護進程及相關輔助工具
cronie-anacron:cronie的補充程序,用于監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務
crontabs:包含CentOS提供系統維護任務
二、安裝crond服務,簡單設置
1、查看是不是安裝cron服務:
[root@local ~]# rpm -qa cronie
2、不顯示自動安裝crond服務包,如果沒有此服務包,則顯示Error: Nothing to do
[root@local ~]# yum install cronie -y >/dev/null
[root@local ~]# rpm -qa cronie
cronie-1.4.11-14.el7_2.1.x86_64
3、查看是不是啟用crond啟用
[root@local ~]# systemctl status crond
crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: inactive (dead)
4、啟動crond服務
[root@local ~]# systemctl start crond.service
5、檢查crond狀態
[root@local ~]# systemctl status crond
crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since Sun 2017-03-26 17:50:16 CST; 3s ago
Main PID: 12895 (crond)
CGroup: /system.slice/crond.service
└─12895 /usr/sbin/crond -n
6、檢查服務是不是開機自動動激活
[root@localhost ~]# systemctl is-enabled crond.service
enabled
如果不是則使用以下命令設置當前系統運行級別開機自動激活。
[root@localhost ~]# systemctl enable crond.service
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
三、crond用戶作業
講解一些在運維工作中基本的使用,如何通過命令方式添加周期性任務。
1、查看當前用戶存在的周期性任務
[root@localhost ~]# crontab -l
no crontab for root
當前用戶root沒有周期性任務
2、單個添加當前用戶的周期性任務
[root@localhost ~]# crontab
輸入命令crontab回車后,等待用戶輸入周期性任務,輸入格式為:
# 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
舉個栗子:
* * * * * root /usr/bin/date >> /mnt/abc.txt
輸入后回車等待輸入下一個計劃任務,如果結束按Ctrl+D結束
每分鐘把時間當前時間追加輸出至/mnt/abc.txt文件中,abc.txt文件事先存在。
[root@localhost mnt]# cat abc.txt
Sun Mar 26 12:16:01 EDT 2017
Sun Mar 26 12:17:01 EDT 2017
Sun Mar 26 12:18:01 EDT 2017
Sun Mar 26 12:19:01 EDT 2017
Sun Mar 26 12:20:01 EDT 2017
3、修改當前用戶的周期性任務
[root@localhost ~]# crontab -e
回車之后會以vi方式打開當前用戶的所有周期性任務,此時可以添加或刪除、更改當前用戶的所有周期性任務。
*/2 * * * * root /usr/bin/date >> /mnt/abc.txt
修改為每兩分鐘顯示當前時間追加至/mnt/abc.txt中。
[root@localhost mnt]# crontab -l
*/2 * * * * root /usr/bin/date >> /mnt/abc.txt
4、刪除當前用戶的周期性任務
[root@localhost mnt]# crontab -r
[root@localhost mnt]# crontab -l
no crontab for root
5、交互式模式移除指定任務
[root@localhost mnt]# crontab -i
同-r一同使用
6、補充:時間格式表示
? 時間表示法:
(1) 特定值
給定時間點有效取值范圍內的值
(2) *
給定時間點上有效取值范圍內的所有值
表示“每…”
(3) 離散取值
#,#,#
(4) 連續取值
#-#
(5) 在指定時間范圍上,定義步長
/#: #即為步長
特殊時間字段表示:
? @reboot Run once after reboot.
? @yearly 0 0 1 1 *
? @annually 0 0 1 1 *
? @monthly 0 0 1 * *
? @weekly 0 0 * * 0
? @daily 0 0 * * *
? @hourly 0 * * * *
四、crontab權限管理
cront通過/etc/cront.{allow,deny}兩個文件,進行權限管理,控制用戶是否能執行cront任務,系統默認創建/etc/cront.deny文件,不存在/etc/cront.allow:
/etc/cront.allow 存在,則/etc/cront.deny不生效,只有文件定義的使用者才能使用 crontab 命令 ,沒有在這個文件中的使用者則不能使用,即使沒有寫在cront.deny 當中;
/etc/cront.allow 不存在, /etc/cront.deny 生效,系統 cront.deny文件定義的使用者不能使用 cront ,而沒有在這個 cront.deny 文件中的使用者則可使用 crontab 命令;
如果兩個文件都不存在,只有 root 可以使用 crontab 命令 。
即白名單優先管理權限,默認沒有/etc/cron.allow文件,只要創建,僅列出的允許,其他都拒絕。
以上僅講解crond服務一部分功能,未講解系統的周期性任務如何配置,自定義系統的周期性任務等。

原創文章,作者:chenbin,如若轉載,請注明出處:http://www.www58058.com/71931

(1)
chenbinchenbin
上一篇 2017-03-27 08:36
下一篇 2017-03-27 08:48

相關推薦

  • ContOS 7 安裝

    在虛擬機中安裝ContOS 7,自定義4個分區
    虛擬機使用ISO鏡像文件安裝,網絡使用橋接模式,內存大小設置為1224MB(安裝桌面比較大)

    2018-03-13
  • Linux系統啟動流程與內管管理(上)

    在講linux系統啟動流程之前,來講講linux的組成,這樣能能幫助我們深入了解系統的啟動流程,廢話不多說直接上系統啟動流程圖 linux組成 linux:kernel+rootfs kenrel的作用:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全管理等   rootfs:程序和glibc 庫:函數結合,function,調用接口(頭文件…

    系統運維 2016-09-14
  • Python線程指南

    本文介紹了Python對于線程的支持,包括“學會”多線程編程需要掌握的基礎以及Python兩個線程標準庫的完整介紹及使用示例。 注意:本文基于Python2.4完成,;如果看到不明白的詞匯請記得百度谷歌或維基,whatever。 尊重作者的勞動,轉載請注明作者及原文地址 >.< 1. 線程基礎 1.1. 線程狀態 線程有5種狀態,狀態轉換的過程如…

    2015-03-13
  • TIME_WAIT引起Cannot assign requested address報錯

    1.  問題描述      有時候用redis客戶端(php或者java客戶端)連接Redis服務器,報錯:“Cannot assign requested address。”      原因是客戶端頻繁的連接服務器,由于每次連接都在很短時間內結束,導致很多的TIME_WAIT。所以新的連…

    Linux干貨 2016-03-09
  • 文件通配符與命令行擴展

    * 匹配零個或多個字符 ? 匹配任何單個字符 ~ 當前用戶家目錄 ~mage 用戶mage家目錄 ~+ 當前工作目錄 ~- 前一個工作目錄 [0-9] 匹配數字范圍 [a-z] 字母 [A-Z]字母 ???????? [a-Z] 會以aAbBcC…小大小大列出,特別要注意 [wang] 匹配列表中的任何的一個字符 [^wang]匹配列表中的所有字…

    2017-11-12
  • 用戶和組命令的簡單使用

    用戶和組管理命令: 用戶管理命令:useradd usermod userdel 組管理命令:groupadd groupmod groupdel 用戶創建:useradd -u:uid 定義在/etc/login.defs -o:配合-u選項,不檢查uid的唯一性 -g:gid,指明用戶所屬基本組,可為組名,也可以gid -c:用戶的詮釋信息 -d;指定用…

    Linux干貨 2016-10-24
欧美性久久久久