周期性計劃任務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
下一篇 2017-03-27

相關推薦

  • Linux 根文件系統層級結構

    一、Linux根文件系統層級結構圖 二、Linux根文件系統目錄說明

    Linux干貨 2016-09-26
  • 1017作業

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正 ##先分析硬件時間不對還是系統時間不對,如果是系統時間不對: [root@localhost ~]# hwclock -w [root@localhost ~]#  ##如果是硬件時間不對: [root@localhost ~]#…

    Linux干貨 2016-10-18
  • 第三周作業

      1. 列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u root 2. 取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# who | tail -1 roo…

    Linux干貨 2016-12-26
  • 9月9日,系統啟動文件恢復與內核編譯

    1、破解root口令,并為grub設置保護功能 進入grub界面,輸入a鍵,在輸入1,進入單用戶界面,進入系統后修改密碼。 2、破壞本機grub stage1,而后在救援模式下修復之 3、刪除vmlinuz和initramfs文件,無法啟動,恢復之 (1)安裝kernel內核 (2)光盤尋找內核,在復制到/boot目錄下,在修改成對應的,系統會重啟兩次 (3…

    Linux干貨 2016-09-13
  • 8月20日軟件包管理

    軟件包管理 本章內容 軟件運行環境 軟件包基礎 Rpm包管理 yum管理 定制yum倉庫 編譯安裝 軟件運行環境 API:Application Programming Interface     POSIX:Portable OS 程序源代碼–>預處理–>編譯–>…

    Linux干貨 2016-08-21
  • 優秀程序員的十個習慣

    在這個世界上,有數百萬的人熱衷于軟件開發,他們有很多名字,如:軟件工程師(Software Engineer),程序員(Programmer),編碼人(Coder),開發人員(Developer)。經過一段時間后,這些人也許能夠成為一個優秀的編碼人員,他們會非常熟悉如何用計算機語言來完成自己的工作。但是,如果你要成為一個優秀的程序員,你還可以需要有幾件事你需…

    Linux干貨 2015-04-01
欧美性久久久久