網站首頁 編程語言 正文
Linux的計劃任務是系統管理方面的一個重要內容,是系統自動完成工作的一種實現方式,正因為有了計劃任務,我們才可以完全實現系統管理的腳本化和自動化。
關于計劃任務,Linux根據用戶需要提供了兩種服務,一種是atd服務,另一種是cron服務
1. atd服務
如果你的計劃任務只要執行一次,那么就請你使atd服務。在默認情況下,Linux系統是開啟了atd這個服務的。如果不確認你的Linux是否開啟了atd服務,請使用下面這個命令查看:
# /etc/init.d/atd status
atd (pid 3016) 正在運行...
從上面可以看出atd服務是啟動的。如果你的atd服務沒有啟動可以使用
# /etc/init.d/atd start
來啟動你的atd服務。
atd服務中我們經常要使用到的是at命令,與at命令相關的有/etc/at.deny 和/etc/at.allow兩個文件用來過濾哪些用戶可以使用at命令。Linux 預設情況下,只有/etc/at.deny 這個文件,且這個文件內容為空,由于內容沒有任何使用者,所以所有人都可以使用at命令。如果不想要某個使用者使用at時,那么將該使用者登錄用戶名寫到/etc/at.deny 這個文件中即可。
Linux系統中還可以自行創建/etc/at.allow文件,使得寫在這個文件中的使用者才能使用at,沒有在這個文件中的使用者則不能使用at ( 即使沒有寫在at.deny 當中)。如果這兩個文件都不存在,那么只有root可以使用at命令。
下面來看一下如何使用at命令:
at [-m] TIME //下達計劃任務,之后會出現編輯窗口,寫入要執行的命令
-m :執行 at 計劃任務時,將屏幕輸出結果mail給下達指令的使用者。
TIME的格式具體請參照我下面的列子吧。
# at 04:00 2011-09-20 //在2011年9月20號上午四點執行命令。
# at 11pm //今天晚上11點執行,如果已經過了,等到明天晚上
# at 08am + 3 weeks //三周后的上午八點執行
此外還有兩個常用命令:
atq //查看計劃任務
atrm //刪除計劃任務
2. crond服務
2.1 crond服務簡介
Linux任務調度的工作主要分為以下兩類:
- 系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存
- 個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可由每個用戶自行設置。
這個時候可以用cron來幫助系統進行任務調度。cron可以根據時間、日期、月份、星期的組合來調度對重復任務的執行的守護進程。
crond服務通過shell和Linux/Unix下的crontab(計劃任務控制)的方式實現。cron是計劃任務的稱呼,crond是后臺進程,而crontab則是定制好的計劃任務表。cron 這個名字來自 “chronos”,一個古希臘語“時間”的意思。crond進程每分種會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
要使用 crond服務,你必須安裝了vixie-cron RPM 軟件包,而且必須在運行crond服務。要判定該軟件包是否已安裝,使用rpm -q vixie-cron命令。要判定該服務是否在運行,使用== /sbin/service crond status==命令。
crond服務是linux的內置服務,但它不會開機自動啟動。可以用以下命令啟動和停止服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以讓這個服務在系統啟動的時候自動啟動,只需要在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
2.2 crond服務的使用
crond服務提供crontab命令來設定crond服務,以下是這個命令的一些參數與說明:
- crontab -u //設定某個用戶的cron服務,一般這個參數只允許root使用
- crontab -l //列出某個用戶cron服務的詳細內容
- crontab -r //刪除某個用戶的cron服務
注意:如果有多條計劃任務crontab -r會刪除用戶所有的計劃,如果你只想刪除其中一條計劃任務,請使用crontab -e 命令或者直接編輯/var/spool/cron/root文件。 - crontab -e //編輯某個用戶的cron服務
crontab -e命令編輯的是/var/spool/cron下對應用戶的cron文件
現舉例說明:
# crontab -u root –l //root查看自己的cron設置
# crontab -u fred –r // root想刪除fred的cron設置
# crontab -u root –e //編輯root的crontab文件
我們也可以直接修改/etc/crontab文件,crontab文件有自己的格式,具體如下:
Minute Hour Day Month Dayofweek command
分鐘 小時 天 月 天每星期 命令
每個字段代表的含義如下:
Minute 每個小時的第幾分鐘執行該任務
Hour 每天的第幾個小時執行該任務
Day 每月的第幾天執行該任務
Month 每年的第幾個月執行該任務
DayOfWeek 每周的第幾天執行該任務
Command 指定要執行的程序
舉例如下:
5 * * * * ls //指定每小時的第5分鐘執行一次ls命令
30 5 * * * ls //指定每天的 5:30 執行ls命令
30 7 8 * * ls //指定每月8號的7:30分執行ls命令
30 5 8 6 * ls //指定每年的6月8日5:30執行ls命令
30 6 * * 0 ls //指定每星期日的6:30執行ls命令
注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等
30 3 10,20 * * ls //每月10號及20號的3:30執行ls命令
注:“,”用來連接多個不連續的時段
25 8-11 * * * ls //每天8-11點的第25分鐘執行ls命令
注:“-”用來連接連續的時段
*/15 * * * * ls //每15分鐘執行一次ls命令(即每個小時的第0 15 30 45 60分鐘執行ls命令)
30 6 */10 * * ls //每個月中,每隔10天6:30執行一次ls命令(即每月的1、11、21、31日是的6:30執行一次ls命令)
50 7 * * * root run-parts /etc/cron.daily //每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行腳本
注:run-parts參數表示,執行后面目錄中的所有可執行文件,如果去掉這個參數的話,后面就可以寫要運行的某個腳本名,而不是文件夾名了
30 5 * * * ls >/jp/test 2>&1 //每天5:30執行ls命令,并把結果輸出到/jp/test文件中
注:2>&1 表示執行結果及錯誤信息
記住幾個特殊符號的含義:
“*” 代表取值范圍內的數字,
“/” 代表"每",
“-” 代表從某個數字到某個數字,
“,” 分開幾個離散的數字
在這些字段里,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選字段,可視需要決定。對于不指定的字段,要用“*”來填補其位置。
原文鏈接:https://blog.csdn.net/Nana8874/article/details/126061324
- 上一篇:Linux secure 日志分析
- 下一篇:Linux下查看文件和文件夾大小
相關推薦
- 2024-04-06 elasticsearch(es)高級查詢api
- 2024-02-27 idea中xml文件用瀏覽器打開
- 2023-11-16 Linux查看某目錄下的文件個數
- 2022-10-17 使用docker部署django的詳細步驟_docker
- 2022-07-28 Python?Flask實現圖片上傳與下載的示例詳解_python
- 2022-07-14 Android?Studio使用自定義對話框效果_Android
- 2022-06-27 ABP引入SqlSugar框架的簡單版創建使用_實用技巧
- 2022-07-13 實現基于 session+redis 的防重復提交
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支