crontab -e 編輯之后如何保存并退出(Ubuntu)
1. 保存
操作命令如下:
-
crontab -e
打開crontab的配置文件,并編輯完成 -
Ctrl + O
寫入內(nèi)容, 出現(xiàn)File name to Write ...
,輸入Enter
-
Ctrl +X
保存并輸出,保存完成 -
service cron restart
, 重啟crontab
定時任務(wù)
2. 驗證
兩種驗證方式:
- 使用
crontab -e
命令打開任務(wù)配置文件,此時可以看到剛才保存的定時任務(wù)列表 - 使用
crontab -l
命令,查看正在執(zhí)行的任務(wù)列表, 如圖所示:
一、什么是Linux定時任務(wù)
Linux定時任務(wù)是一種可執(zhí)行的命令或者腳本,在特定的時間或者時間間隔下自動執(zhí)行。通過在系統(tǒng)中預(yù)設(shè)一些需要執(zhí)行的任務(wù),可以讓Linux定時任務(wù)自動執(zhí)行并完成這些任務(wù)。定時任務(wù)可以用于自動備份、系統(tǒng)清理、監(jiān)控、自動化維護(hù)等任務(wù)。
在Linux中,常用的定時任務(wù)程序有系統(tǒng)自帶的cron和at命令。其中,cron是一個強(qiáng)大的定時任務(wù)工具,可以按照設(shè)定的實際時間執(zhí)行命令,非常常用。
二、at一次性定時任務(wù)
1.確定at安裝
# at服務(wù)是否安裝
chkconfig --list | grep atd
# at服務(wù)的啟動
service atd restart
# 對于d結(jié)尾的服務(wù),這里d代表daemon,守護(hù)進(jìn)程,一般是作為系統(tǒng)服務(wù)
2.at的訪問控制
- 如果系統(tǒng)中有 /etc/at.allow 文件,那么只有寫入該文件(白名單)中的用戶可以使用 at 命令( /etc/at.deny 文件會被忽略)
- 如果系統(tǒng)中沒有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么寫入該文件(黑名單)中的用戶不能使用 at 命令,對root不起作用(系統(tǒng)默認(rèn)有該文件而沒有allow文件)
- 如果系統(tǒng)中這兩個文件都不存在,那么只有root用戶可以使用 at 命令
3.at命令
語法:at [選項] 時間
-m: 當(dāng)at工作完成后,無論是否命令有輸出,都用email通知執(zhí)行at命令的用戶
-c 工作號: 顯示該at工作的實際內(nèi)容時間
atq #查詢當(dāng)前服務(wù)器上的at工作
atrm [工作號] #刪除指定的at任務(wù)
4.命令示例
1.在兩分鐘之后執(zhí)行hello.sh腳本,在at提示符輸入具體的任務(wù)后:/root/hello.sh,按 ctrl + d 保存并退出
通過 atq 查看該定時任務(wù),通過 at -c 1 查看該任務(wù)內(nèi)容
[root@localhost ~]# at now +2 minutes
at> /root/hello.sh
at> <EOT>
job 1 at 2019-03-09 22:51
2.在指定的時間重啟服務(wù)器(生產(chǎn)環(huán)境不建議)
[root@localhost ~]# at 02:00 2019-03-10
at> /bin/sync
at> /sbin/shutdown -r now
三、crontab循環(huán)定時任務(wù)
1.crond服務(wù)管理
chkconfig --list | grep crond #確認(rèn)是否安裝該服務(wù)
service crond status #確認(rèn)服務(wù)是否開啟
chkconfig crond on #設(shè)置自啟動
yum -y install vixie-cron crontabs #安裝cron服務(wù)
2.訪問控制
- 當(dāng)系統(tǒng)中有 /etc/cron.allow 文件時,只有寫入此文件的用戶可以使用 crontab 命令,如果有此文件,/etc/cron.deny文件會被忽略
- 當(dāng)系統(tǒng)中只有 /etc/cron.deny 文件時,則寫入此文件的用戶不能使用 crontab 命令
3.crontab命令
語法:crontab [選項]
-e: 編輯crontab定時任務(wù)
-l: 查詢crontab任務(wù)
-r: 刪除當(dāng)前用戶所有的crontab任務(wù)
注意事項
- 編輯任務(wù)其實是在vim編輯器中進(jìn)行,所以如果只想刪除某個指定的定時任務(wù),直接編輯crontab,刪除該行命令即可
- 執(zhí)行 crontab 命令會將當(dāng)前用戶登錄的身份綁定在 crontab 命令中,也就是說用戶執(zhí)行的任務(wù)不能超出當(dāng)前用戶的權(quán)限
4.格式說明
執(zhí)行 crontab -e 命令會打開vim編輯你的工作
任務(wù)具體格式是:* * * * * 執(zhí)行的任務(wù)
特殊符號的含義
示例
4.簡單演示
# 測試定時任務(wù),每1分鐘輸出一句話到文件中
*/1 * * * * echo "silly" >> test.log
# 每周二5點5分重啟服務(wù)器,僅測試(不推薦定時重啟,容易出錯)
5 5 * * 2 /sbin/shutdown -r now
# 每月1,10,15號凌晨5點整執(zhí)行備份腳本
0 5 1,10,15 * * /root/sh/autobak.sh
5.格式注意事項
六個選項都不能為空,必須填寫。如果不確定使用“*”代表任意時間
crontab定時任務(wù),最小有效時間是分鐘,最大時間范圍是月,像2018年某時執(zhí)行,3點30分30秒這樣的時間都不能識別
在定義時間時,日期和星期最好不要在一條定時任務(wù)中出現(xiàn),因為它們都是以天作為單位,非常容易讓管理員混亂
在定時任務(wù)中,不管是直接寫命令,還是在腳本中寫命令,最好都是用絕對路徑(因為定時任務(wù)有定義自己的PATH)
四、系統(tǒng)的crontab設(shè)置
“crontab -e” 是每個用戶執(zhí)行的命令,也就是說不同的用戶身份可以執(zhí)行自己的定時任務(wù)??墒怯行┒〞r任務(wù)需要系統(tǒng)執(zhí)行,這時我們就需要編輯 /etc/crontab 這個配置文件了
vim /etc/crontab
# 文件內(nèi)容如下,默認(rèn)僅定義了一些變量
# 使用標(biāo)準(zhǔn)的bash作為定義任務(wù)執(zhí)行shell
SHELL=/bin/bash
# 定時任務(wù)使用的PATH環(huán)境變量
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 如果定時任務(wù)發(fā)生了任何報錯或者出現(xiàn)提示,都會向root用戶發(fā)送郵件
MAILTO=root
# 標(biāo)識主目錄
HOME=/
# 以下內(nèi)容都是注釋內(nèi)容,說明了定義定時任務(wù)的格式,需要額外指定用戶名
# .---------------- 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.CentOS 5中的配置文件
在centos5中該配置文件除了基本變量定義外,還包含了以下內(nèi)容
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
也就是說centos5這4個目錄 /etc/cron.*** 下的文件會按指定規(guī)則定時執(zhí)行,只需將腳本拷貝到這些目錄下即可。
這樣的好處是不需要自己手工指定定時任務(wù)的規(guī)則了,而且進(jìn)入相應(yīng)的目錄就能看到系統(tǒng)需要執(zhí)行哪些定時任務(wù)。
即使在CentOS 6中這幾個目錄的功能依然生效,只是centos6以后使用 anacron 來取代管理。
2.執(zhí)行定時任務(wù)方法
- 通過 crontab -e 手工執(zhí)行
- 系統(tǒng)定時任務(wù)
① 把需要定時執(zhí)行的腳本復(fù)制到 /etc/cron.{hourly,daily,weekly,montly} 目錄中的任意一個
② 修改 /etc/crontab 配置文件,添加需要執(zhí)行的任務(wù)
3.anacron配置
anacron是用來保證在系統(tǒng)關(guān)機(jī)的時候錯過的定時任務(wù),可以在系統(tǒng)開機(jī)之后再執(zhí)行,也就是說有時候因為某種原因或者故障導(dǎo)致的系統(tǒng)無法執(zhí)行該執(zhí)行的定時任務(wù),使用anacron管理就非常實用
4.anacron檢測周期
- anacron會使用一天,七天,一個月作為檢測周期
- 在系統(tǒng)的 /var/spool/anacron/ 目錄中存在 cron.{daily,weekly,monthly} 文件,用于記錄上次執(zhí)行cron的時間
- 和當(dāng)前時間做比較,若果兩個時間的差值超過了anacron的指定時間差值,證明有cron任務(wù)被漏執(zhí)行
5.配置文件
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 指定延遲是為了保證目錄下的腳本不會同時執(zhí)行,錯開時間避免造成服務(wù)器過大壓力
# 最大隨機(jī)延遲
RANDOM_DELAY=45
# anacron的執(zhí)行時間范圍是3:00 - 22:00
START_HOURS_RANGE=3-22
#天數(shù) 強(qiáng)制延遲(分) 工作名稱 實際執(zhí)行的命令
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
6.執(zhí)行過程
以 cron.daily 工作來說明執(zhí)行過程
- 首先讀取 /var/spool/anacron/cron.daily 中的上一次anacron執(zhí)行的時間
- 和當(dāng)前時間比較,如果兩個時間的差值超過1天,就執(zhí)行cron.daily工作(準(zhǔn)備執(zhí)行)
- 執(zhí)行這個工作只能在03:00-22:00之間
- 執(zhí)行工作時強(qiáng)制延遲時間為5分鐘,再隨機(jī)延遲0-45分鐘時間
- 使用nice命令指定默認(rèn)優(yōu)先級,使用 run-parts 腳本(命令)執(zhí)行 /etc/cron.daily 目錄中的所有可執(zhí)行文件
7.anacron總結(jié)
- anacron最小檢測周期是天,使用anacron管理的定時任務(wù)應(yīng)該最小是每隔一天執(zhí)行
- 將需要定時執(zhí)行的腳本拷貝到/etc/cron.{daily,weekly,monthly}目錄下即可被anacron管理
- 使用anacron優(yōu)點是全自動執(zhí)行,不用人為干預(yù)和配置,缺點是執(zhí)行時間不可控制
- 可以將定時任務(wù)(天周期及以上)手工指定或系統(tǒng)crontab配置,同時放到anacron管理目錄下做雙重保障
- cron.hourly 由 /etc/cron.d/0hourly 調(diào)用,所以放在該目錄下的腳本也會生效
Linux【定時任務(wù)】
1. 開啟定時服務(wù)
注意:如果想要在Linux操作系統(tǒng)中執(zhí)行定時任務(wù)需要先保證crond
服務(wù)是開啟的(默認(rèn)是開啟的)文章來源:http://www.zghlxwxcb.cn/news/detail-796070.html
# 查看crond服務(wù)狀態(tài)
service crond status
# 啟動crond服務(wù)(如果已經(jīng)啟動可以不用設(shè)置)
systemctl start crond
#關(guān)閉crond服務(wù)
systemctl stop crond
2.編輯查看指定用戶的定時任務(wù)
# 編輯指定用戶的定時任務(wù)
crontab -u 用戶名 -e
# 編輯root用戶下的定時任務(wù)
1.crontab -u root -e
# 查看指定用戶下所有的定時任務(wù)
crontab -u 用戶名 -l
#查看root下所有的定時任務(wù)
1.crontab -u root -l
#查看ztt1用戶下的定時任務(wù)
2.crontab -u ztt1 -l
1.通過制定、編輯和開啟定時任務(wù)。添加定時任何的格式是: 時間 需要執(zhí)行的任務(wù)
文章來源地址http://www.zghlxwxcb.cn/news/detail-796070.html
# 創(chuàng)建一個完整的定時任務(wù),需要確定時間和任務(wù)
# 1.時間
.---------------- 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
| | | | |
* * * * *
* * * * * - 每分鐘執(zhí)行一次任務(wù)(每隔一分鐘)
*/1 * * * * - 每分鐘執(zhí)行一次任務(wù)(每隔一分鐘)
*/2 * * * * - 每2分鐘執(zhí)行一次任務(wù)(每隔2分鐘)
* */1 * * * - 每隔1小時
* * */1 * * - 每隔1天
* * * */2 * - 每隔兩個月
* * * * */1 - 每隔一周
* * * * fri - 每周五執(zhí)行任務(wù)
* * * * mon - 每周一執(zhí)行任務(wù)
30 * * * * - 時間點到30分的時候做
0 * * * * - 時間點到整點的時候執(zhí)行任務(wù)
30 2 * * * - 時間到 02:30 的時候執(zhí)行任務(wù)
0 12 28 * * - 每月28號12:00執(zhí)行任務(wù)
0 12 2 1 * —每年的1月2號12:00執(zhí)行任務(wù)
# 2.任務(wù)
寫Linux指令, 指令如果有結(jié)果,結(jié)果是看不到的
* * * * * echo aaa >> /root/test.txt - 每隔一分鐘往root下面的test.txt中添加一行aaa
* */1 * * * python3 /root/test.py - 每隔1小時運(yùn)行一次test.py中的python程序
3.設(shè)置定時任務(wù)步驟
步驟1.
date #查看日期
步驟2.
date '+%Y-%m-%d %H:%M:%S' #查看詳細(xì)日期
步驟3.
touch task.txt #創(chuàng)建一個文件
步驟4.
date '+%Y-%m-%d %H:%M:%S' >> task.txt #重定向
步驟5.
crontab -u root -e #編輯定時任務(wù)
步驟6.
進(jìn)入編輯模式輸入:
* * * * * echo aaa >> /root/task.txt #每分鐘間隔輸入aaa
4.在shell腳本下設(shè)置定時任務(wù)
1.創(chuàng)建一個結(jié)果文件以便存儲輸出結(jié)果
touch result.txt
2.創(chuàng)建一個shell腳本,編寫所要輸出的結(jié)果和代碼
vim task1.sh
編輯模式輸入:
time1=`date "+%Y-%m-%d %H:%M:%S" `
content="${time1} 每隔兩分鐘輸入"
echo $content >> /root/code/result2.txt
3.編輯root用戶下的定時任務(wù)
crontab -u root -e
4.進(jìn)入編輯模式,輸入需要定時任務(wù)的內(nèi)容
*/2 * * * * sh /root/code/task2.sh
# 每兩分鐘輸入
5.查看定時任務(wù)的結(jié)果
cat result2.txt
結(jié)果:
[root@ztt code]# cat result2.txt
2023-03-03 09:34:01 每隔兩分鐘輸入
2023-03-03 09:36:01 每隔兩分鐘輸入
2023-03-03 09:38:01 每隔兩分鐘輸入
。。。
到了這里,關(guān)于Linux定時任務(wù)詳解&crontab -e 編輯之后如何保存并退出(Ubuntu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!