linux的cron任務介紹
阿新 • • 發佈:2018-01-18
可執行 pat div shel 普通用戶 查看 tabs 工作 執行
cron介紹
- linux系統有一個專門用來管理定時任務的進程cron,一般是設置成開機自啟動的,可以通過以下命令查看
ps aux | grep cron
- cron進程每隔一分鐘會去讀取/etc/crontab文件,/etc/cron.d/下的所有crontab文件,/var/spool/cron/下的所有的crontab文件;
/var/spool/cron/:改目錄下存放系統的每個用戶需要執行的crontab任務,該文件已用戶的名字命令,是用戶在提交cron任務後自動創建的,一個用戶只有一個crontab文件;
/etc/crontab:這是一個crontab文件,裏面存放整個系統級別的任務,一般是root用戶操作,普通用戶不要去修改這個文件;
/etc/cron.d/:該文件夾下一般是系統級別的用來管理其他定時任務的crontab文件;
/var/log/cron這是cron任務運行的日誌文件;
- 所以如果是用戶自己的任務會出現在/var/spool/cron/目錄下;
# /etc/crontab文件 SHELL=/bin/bash # 指定運行的shell PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 當/etc/crontab文件中的例行性命令發生錯誤時,會將錯誤信息傳遞給誰,一般改成用戶賬戶,當發生錯誤時,錯誤信息發送到/var/spool/mail/下的用戶名的文件 # 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
擴展
- 通過ls /etc/ | grep cron命令查看會出現如下幾個文件或文件夾:
anacrontab # 這是系統級別的用來管理異步定時任務的文件 cron.d # 系統級別定時任務文件 cron.daily # 每天需要執行的cron任務目錄 cron.deny # 定義不允許使用crontab命令的用戶文件 cron.hourly # 每小時需要執行的cron任務目錄 cron.monthly # 每個月需要執行的cron任務目錄 crontab # 這是系統級別的用來管理定時任務的文件 cron.weekly # 每周需要執行的cron任務目錄 # 另外還有cron.allow文件,定義允許使用crontab命令的用戶,系統默認沒有
cron任務的操作
cron工具有一套自己的操作命令可以對用戶的cron任務進行自動化的管理。
cron服務的管理
service crond start //啟動cron進程
service crond stop //關閉cron進程
service crond restart //重啟cron進程
service crond reload //重新載入配置+
service crond status //查看服務狀態
如果系統不識別service命令就使用/usr/sbin/crond start格式的命令;
crontab任務命令
crontab [-u username] [-l|-e|-r]
選項與參數:
-u :root權限才能進行這個任務,缺省時默認為當前的用戶
-e :編輯用戶的crontab文件,保存好後會自動提交
-l :查閱當前用戶的crontab的工作內容
-r :移除當前用戶所有的 crontab 的工作內容,若僅要移除一項,請去修改crontab文件
- 我們可以使用crontab -e直接編輯我們的定時任務,也可以先編輯一個自定義的creontab文件然後提交;
編輯自己的cron任務
- 第一步:選一個文件夾,比如就在自己想要執行定時任務的應用如redis的安裝文件,創建一個腳本文件:
touch test
# 授予該文件可執行權限
chmod +x test
# 編輯文件
vi test
- cron任務的語法;
# 格式
minute hour day-of-month month-of-year day-of-week commands
minute:分鐘,範圍0--59;
hour:小時,範圍0--23;
day-of-month:天,範圍01-31;
month-of-year:月份,01-12;
day-of-week:周,範圍0-6,(0表示Sunday);
- 舉例
# 每隔五分鐘
*/5 * * * * echo "aaaa"
# 每天18點
0 18 * * * echo "aaa"
# 執行目錄下的文件
0 18 * * * root run-parts /etc/cron.d/ # 執行目錄下的所有文件
- 第二步:提交任務
crontab 文件名
- 第三步:查看任務是否成功提交
crontab -l
- 註意:每次提交任務是覆蓋原來的crontab的文件,所以需要添加更多的cron任務時,修改/var/spool/cron/下的文件;
linux的cron任務介紹