Linux定時任務服務(如備份數據庫、重啟服務等)可以通過crontab命令進行設置。crontab配置文件位于/etc目錄下,每個用戶可以有自己的crontab文件。Shell為crontab命令提供了執行環境,PATH包含系統中可...
‖ 系統學習--Liunx定時任務服務
Liunx定時任務服務
在我們的日常運維中,我們需要經常備份一些數據。比如隔一斷時間備份一下mysql數據庫,或者半夜2點重啟一下我們的網站nginx服務等等這些需要定時備份或重啟的事情。
但我們不可能半夜起來備份數據或重啟服務,這個時候我們就需要自動執行任務
命令:
crontab
-l 列出當前用戶有哪些計劃任務
-e 編輯當前用戶的計劃任務
-r 刪除當前用戶的計劃任務
crontab命令源自Unix系統,它是cron table(cron表)的簡寫。cron是一個自動執行任務的服務,而crontab則是這個服務的配置文件,通過這個文件我們可以設置何時以及如何執行特定的命令或腳本。每個用戶都可以有自己的crontab文件,而系統管理員則可以控制這些文件的訪問權限。
我們先來看一下crontab的配置文件語法內容
crontab配置文件目錄在etc目錄下有一個叫crontab的配置文件
cat /etc/crontab
[root@localhost etc]# cat /etc/crontab
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
一、取值范圍
1、分:0~59
2、時:0~23
3、日:1~31
4、月:1~12
5、周:0~7,0和7表示是星期到現在為止
注意日期和星期幾不能同時寫
二、四個符號:
*:表示取值范圍的每一個數據
-:做連續區間表達式的,比如想表達1到7可以寫成1-7
/:表示每多少個。比如想表達每10分鐘一次可以寫成*/10
,:表示多少個取值,比如想在1點,2點,6點執行定時,則可以寫成1,2,6
牛刀小試
比如我想每分鐘往/home/lu/Desktop/test.txt寫一句話我們可以這們寫
第一步
輸入crontab -e 編輯當前用戶計劃任務
第二步
寫入用戶計劃
* * * * * /usr/bin/echo '這是每分鐘寫入內容' >> /home/Desktop/test.txt
第三步
我們查看一下有沒有定時任務
crontab -l
我們寫入定時任務后,會自動記錄到一個文件中,文件路徑在/var/spool/cron/中
ls /var/spool/cron/
這時里面記錄了當前用戶的所有定時任務。
我們來練習一下以下題目
問題1:每月1、10、22 日的4:45 重啟network 服務
* * * * *
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
45 2 1,10,22 * * /usr/bin/systemctl restart network
問題2:每周六、周日的下午1:10 重啟network 服務
* * * * *
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
10 13 * * 6,7 /usr/bin/systemctl restart network
問題3:每天18:00 至23:00 之間每隔30 分鐘重啟network 服務
* * * * *
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
*/30 18-23 * * * /usr/bin/systemctl restart network
問題4:每隔兩天的上午8點到11點的第3和第15分鐘執行一次重啟
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
3,15 8-11 */2 * * /usr/sbin/reboot
問題5 :每天凌晨整點重啟nginx服務。
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
0 0 * * * /usr/bin/systemctl restart nginx
問題6:每周4的凌晨2點15分執行命令
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
15 2 * * 4 /usr/sbin/reboot
問題7:工作日的工作時間內的每小時整點執行腳本。工作日 1-5工時 9-18
分 時 日 月 周 命令的絕對路徑
從左 向右,依次去寫,不要跳級
0 9-18 * * 1-5 /usr/sbin/reboot
問題8:每天凌晨2點30,執行ntpdate命令同步ntp.aliyun.com,且不輸出任何信息,把命令結果,重定向到黑洞文件
/dev/null黑洞文件
備注:定時任務的命令執行,會產生日志
30 2 * * * /usr/sbin/ntpdate -u ntp.aliyun.com &> /dev/null
禁止哪些用戶創建定時任務
/etc/cron.deny 黑名單文件 (將系統中,所有uid大于1000的用戶,全部寫入黑名單)
/etc/cron.allow 白名單 ,優先級高于黑名單
最后,定時任務,crontab會在系統中,生成大量的郵件日志,會占用磁盤,因此我們都會關閉郵件服務即可
找到文件
[root@localhost etc]# find / -type f -name 'post*service'
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/systemd/system/postfix.service
查看狀態
systemctl status postfix
停止服務
systemctl stop postfix
禁止開機自啟
systemctl disable postfix
喜歡就分享點贊一下吧
原文來源:https://mp.weixin.qq.com/s/-vim9hns81O4FoMnBL2Scw
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計