一個愿意佇立在巨人肩膀上的農民......
????????Crontab是Linux和類Unix操作系統下的一個任務調度工具,用于周期性地執行指定的任務或命令。Crontab允許用戶創建和管理計劃任務,以便在特定的時間間隔或時間點自動運行命令或腳本。這些任務可以按照分鐘、小時、日、月和星期等不同的時間單位進行安排。
一、Crond 服務管理
????????Ubuntu22.04系統默認是開機開啟Crond 服務的,因此此處不必理會,但是如果自己電腦之前設置過關閉該服務,則需要重啟,或者更改配置使其開機自啟。配置方法是在 /etc/rc.d/rc.local 中添加 service crond start 這一行,其他的管理命令為:
# 啟動服務
/sbin/service crond start
# 關閉服務
/sbin/service crond stop
# 重啟服務
/sbin/service crond restart
# 重新載入配置
/sbin/service crond reload
二、Crontab常用的基本命令
1.查看當前用戶的計劃任務
crontab -l
2.編輯計劃任務
crontab -e
第一次進入會讓你選擇編輯器,比如我這里想選nano,那就輸入1再敲回車即可。
3.刪除計劃任務
crontab -r
三、設置Crontab執行文件
1.Crontab執行的文件示例
????????此處以刪除Ubuntu日志文件為例,首先創建一個名為“clean_logs.sh”的shell文件,文件內容如下:
#!/bin/bash
# 定義要清理的日志文件目錄
LOG_DIR="/var/log"# 查找并刪除該目錄下所有以.log結尾的文件
sudo find "$LOG_DIR" -type f -iname "*.log" -exec rm -f {} \;
2.Crontab設置
????????輸入下方指令即可進入Crontab配置文件,并對其進行配置。
crontab -e
此處我是想每6小時刪除一次日志文件,因此我的添加的時間設置和要執行的文件寫法如下:
* */6 * * * /home/ub/clean_logs.sh
保存并退出文件。在visudo中,可以使用Ctrl+x,然后按Y確認保存,最后按Enter退出。設置完成后電腦將會自動每6個小時刪除一下/var/log目錄下后綴為“.log”的文件。
注意!注意!注意!
待執行的指令中有sudo相關需要給權限和輸入密碼的操作,需要按照下方鏈接中的教程對sudo指令進行配置,否則指令無法運行,而報錯結果只能在/var/log/syslog日志文件下查詢。
【Ubuntu使用技巧】取消無人值守時shell文件中sudo指令運行的密碼輸入-CSDN博客
四、編輯Crontab說明
1.格式:
? ? ? ? m h dom mon dow command
????????m:分鐘,取值是從0到59之間的整數。
????????h:小時,取值是從0到23之間的整數。
????????dom:日期,取值是從1到31之間的整數。
????????mon:月份,取值是從1到12之間的整數。
????????dow:星期幾,取值是從0到7之間的整數,這里的0或7代表星期日。
????????command:命令,可以是系統命令,也可以是自己編寫的腳本文件。
2.下方的圖片有助于理解以上的設置。
3.在以上各個字段中,還可以使用以下特殊字符:
????????星號(*):代表所有可能的值,例如mon字段如果是星號 * ,則表示在滿足其它字段的制約條件后每月都執行該命令操作。
????????逗號(,):逗號隔開的值指定時間,例如:dow取“1,2,5”,表示只在周一、周二、周五執行
????????中杠(-):中杠表示一個整數范圍,例如:m取“2-6”,表示2-6分鐘內要執行
????????正斜線(/):可以用正斜線指定時間的間隔頻率,例如:h取“0-23 /2 ”表示每兩小時執行一次。
????????同時正斜線可以和星號一起使用,例如:m取“ */10 ”,表示 每十分鐘執行一次 。
實例1:每天7:50開啟ssh服務
50 7 * * * /sbin/service sshd start
實例2:每月的4號與每周一到周三的11點重啟smb
0 11 4 * mon-wed /etc/init.d/smb restart
歡迎在這里評論、溝通、指正。
創作不易,引用請附原文鏈接。。。。。。