centos7 定時任務

在centos上最常用的定時任務應該就是crontab了,在經過各種度娘之後有三種方式實現定時任務的方法,但是所用到的場景有所不同

at    適合僅執行一次就結束的調度命令,需要啓動一個後端的atd服務。
crontab 需要啓動一個服務crond纔行,crond服務通過crontab命令實現
anacron 無法週期性執行,只能以天爲週期,但有個特點,在關機狀態下未>執行的任務,下次開機時可以補上執行

這裏也直講最常用的crontab,主要其他兩種我也沒看也沒測試

關於crontab和crond

用到crontab那麼就一定要知道crond,crond和crontab是不可分割的,crond我的理解是一個守護進程,或者說這纔是我們定時任務的核心,crontab是一個編輯或者說是管理定時任務的工具
crontab我的理解就是crond服務處於啓動狀態,這個服務會默認每分鐘去檢測是否有需要執行的定時任務,所以crond不能守護秒級定時任務。而這個任務的具體內容是通過crontab來管理的,至於具體管理方式後面繼續講

關於crond和crondtab常用命令

crond常用命令

systemctl start   crond         啓動服務
systemctl stop    crond         停止服務
systemctl restart crond         重啓服務
systemctl reload  crond         重載配置文件
systemctl status  crond         查看狀態

crontab常用命令

crontab -u 		設定某個用戶的cron服務
crontab -l		顯示crontab文件(顯示已設置的定時任務)
crontab -e		編輯crontab文件(編輯定時任務)
crontab -r		刪除crontab文件(刪除定時任務)
crontab -i		刪除crontab文件提醒用戶(刪除定時任務)

當前有兩種方式設置

/etc/crontab和crontab -e,兩種的區別

1、格式不同

前者

SHELL=/bin/bash
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

如增加

0 2 * * * root /root/mysqlbak/mysqlBackup.sh >> /root/mysqlbak/aa.txt

表示每天2點執行,並把執行的輸出到指定的文件

後者

#50 1 * * *  command

2、使用範圍
修改/etc/crontab這種方法只有root用戶能用,這種方法更加方便與直接直接給其他用戶設置計劃任務,而且還可以指定執行shell等等,
crontab -e這種所有用戶都可以使用,普通用戶也只能爲自己設置計劃任務。然後自動寫入/var/spool/cron/usename
3.服務重啓
  1. /etc/init.d/crond restart
  2. service crond restart

1、crontab 會進行語法檢查,vi 不會
2、聽說有些 os 的 crond 不會重讀配置,所以用 service 重啓

crontab -e是某個用戶的週期計劃任務;/etc/crontab是系統的週期任務

1. crontab -e 與 /etc/crontab 修改語法格式不一樣,後者多一個 user 指定

2. 不管用 crontab -e or 改 /etc/crontab 都不需要重新啓動 crond 服務

01 22 * * * /sbin/shutdown -h now
執行的結果都是一樣, 一般LINUX 都用shutdown -h now 也可以init 0
init 0在UNIX用得比較多,

關機需要root的身份在可以執行,
lz可以選取方法操作

方法1

換到root 的身份
su - root
crontab -e (按a增加下)
01 22 * * * /sbin/shutdown -h now   (或01 22 * * * /sbin/init 0)
保存退出即可以

方法2

vi /etc/crontab 在裏面插入
01 22 * * * root   /sbin/shutdown -h now
或 01 22 * * * root   /sbin/init 0

2、如果要執行,還需要修改shell腳本屬性,賦予執行權限

chmod 600 /opt/mysqlBackup.sh
chmod +x /opt/mysqlBackup.sh
 
查看任務執行情況

1. linux

看 /var/log/cron.log這個文件就可以,可以用tail -f /var/log/cron.log觀察

2. unix

在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 這些文件就可以看到正在執行的任務了。

3. mail任務

在 /var/spool/mail/root 文件中,有crontab執行日誌的記錄,用tail -f /var/spool/mail/root 即可查看最近的crontab執行情況。

參考:

https://www.cnblogs.com/xd502djj/p/4292781.html

https://www.cnblogs.com/SunArmy/p/13096861.html

https://www.shuzhiduo.com/A/LPdolVbOz3/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章