目錄
一、單一執(zhí)行的例行性任務(wù)--at(一 次性)
1、安裝
2、啟動(dòng)服務(wù)
3、at命令詳解
1)格式
2)參數(shù)
3)時(shí)間格式
4、實(shí)例
二、循環(huán)執(zhí)行的例行性任務(wù)-- crontab(周期性)
1、crontd服務(wù)
2、工作過程
3、crontab命令詳解
編輯crontab
書寫定時(shí)任務(wù)的注意事項(xiàng)
系統(tǒng)級別的計(jì)劃任務(wù)
查看賬戶信息的三種路徑
?Linux中單引號、雙引號及反引號的區(qū)別
一、單一執(zhí)行的例行性任務(wù)--at(一 次性)
1、安裝
[root@server ~]# yum install at -y
[root@server ~]# at -V # 大寫V
at version 3.2.2
[root@server ~]# which at # 查看路徑
/usr/bin/at
2、啟動(dòng)服務(wù)
[root@server ~]# systemctl start atd
[root@server ~]# systemctl enable --now atd # 設(shè)置開機(jī)啟動(dòng)
[root@server ~]# systemctl status atd # 查看狀態(tài)
3、at命令詳解
1)格式
at -參數(shù) 日期時(shí)間
- at命令只要指定的時(shí)間正確,就可以執(zhí)行對應(yīng)的命令
- at命令的輸出結(jié)果不會(huì)顯示到屏幕上
- at命令中執(zhí)行的命令最好使用絕對路徑,不容易報(bào)錯(cuò)
- 過程:輸入at 時(shí)間 -> 回車 ->輸入執(zhí)行的命令->ctrl+d退出at
- at命令只會(huì)執(zhí)行一次?
at命令執(zhí)行過程分析
- 尋找/etc/at.allow (白名單)是否存在,寫在該文件中用戶才可執(zhí)行at命令
- 若/etc/at.allow不存在則尋找/etc/at.deny(黑 名單)文件,寫在該文件中的用戶不能使用at命令
- 若兩個(gè)文件都不存在則只有root用戶可以使用at 命令
注意:若拒絕某用戶使用at命令則可以將用戶名寫入 到/etc/at.deny中
2)參數(shù)
-m????????當(dāng)任務(wù)完成后,即使沒有標(biāo)準(zhǔn)輸出,也會(huì)給用戶發(fā)送郵件
-l???????????列出系統(tǒng)上所有用戶的at任務(wù),等價(jià)于atq
-d??????????刪除或取消一個(gè)任務(wù)
-v? ? ? ? ? 使用時(shí)間格式,列出at任務(wù)
-c? ? ? ? ? ?可以列出任務(wù)之后的命令內(nèi)容
-f????????????從文件中讀取
3)時(shí)間格式
參數(shù) ????????????????????????????????????說明
HH:MM ????????????????????????????????在今天HH小時(shí)的MM分鐘執(zhí)行,若時(shí)間 點(diǎn)錯(cuò)過,將在明天執(zhí)行
HH:MM YYYY-MM-DD ????????規(guī)定在某年某月的某一天的特殊時(shí)刻執(zhí)行 該工作
now +2 minutes ???????????????????從現(xiàn)在開始的minutes、hours、days、 weeks執(zhí)行
4、實(shí)例
1)延遲執(zhí)行l(wèi)s /root ,并將結(jié)果寫入到at.txt中
[root@server ~]# at 14:17
warning: commands will be executed using
/bin/sh
at> ls /root > at.txt
at> <EOT> # 點(diǎn)擊ctrl+d 結(jié)束交互性界面
# CTRL+“backspace” 刪除字符
[root@server ~]# at -l # 查看已存在的計(jì)劃任務(wù)
3 Thu May 25 14:17:00 2023 a root
[root@server ~]# atq # 查看已存在的計(jì)劃任務(wù)
3 Thu May 25 14:17:00 2023 a root
2)不使用交互性命令實(shí)現(xiàn),通過管道符命令執(zhí)行
[root@server ~]# echo "echo 'hello again'
>> at.txt" | at now +1 minute
3)設(shè)置某賬戶at命令不可用
[root@server ~]# useradd ce1 # 新建賬戶
[root@server ~]# passwd ce1 # 設(shè)置密碼 (更改用戶 ce1 的密碼)
[root@server ~]# tail -1 /etc/passwd # 倒敘查看賬戶管理文件
ce1:x:1001:1001::/home/ce1:/bin/bash
[root@server ~]# vim /etc/at.deny # 設(shè)置黑名單(輸入ce1)
[root@server ~]# su ce1 # 切換賬戶
[ce1@server ~]$ at 14:36 # 測試,at命令不可用
You do not have permission to use at.
[ce1@server ~]$ su root # 切換到root賬戶
密碼:
su: 拒絕權(quán)限
# 安全考慮,openEuler做了用戶權(quán)限切換限制,解決方法如下:
# 重新開啟一個(gè)ssh連接,以root賬戶登錄
#PAM(Pluggable Authentication Modules)負(fù)責(zé)系統(tǒng)中很多應(yīng)用程序的登錄認(rèn)證,安全設(shè)置問題
[root@server ~]# vim /etc/pam.d/su # 注釋掉auth required pam_wheel.souse_uid
二、循環(huán)執(zhí)行的例行性任務(wù)-- crontab(周期性)
1、crontd服務(wù)
at 命令是在指定的時(shí)間只能執(zhí)行一次任務(wù)
crontab 命令可以循環(huán)重復(fù)的執(zhí)行定時(shí)任務(wù)
安裝:
[root@server ~]# yum install crontabs #安裝
[root@server ~]# systemctl status crond #查看狀態(tài)
crond 進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有,則會(huì)自動(dòng)執(zhí)行該任務(wù),crontab 命令需要 crond 服務(wù)支持?
2、工作過程
當(dāng)系統(tǒng)中有 /etc/cron.allow 文件時(shí),只有寫入此文件的用戶可以使用 crontab 命令,沒有寫入的用戶不能使用 crontab 命令。
同樣,如果有此文件,/etc/cron.deny 文件會(huì)被忽略,因?yàn)?etc/cron.allow 文件的優(yōu)先級更高
當(dāng)系統(tǒng)中只有 /etc/cron.deny 文件時(shí),寫入此文件的用戶不能使用 crontab 命令,沒有寫入文件的用戶可以使用 crontab 命令
crontab 執(zhí)行的每一項(xiàng)工作都會(huì)被記錄到 /var/log/cron 這個(gè)日志文件中
當(dāng)用戶使用 crontab 新建工作之后,該項(xiàng)工作就會(huì)被記 錄到 /var/spool/cron/目錄里面
3、crontab命令詳解
crontab [-u user] [-l| -r | -e]
-u ????????只有root才能執(zhí)行該任務(wù)
-e ????????編輯crontab工作內(nèi)容
-l? ? ? ? ? 查詢crontab任務(wù)內(nèi)容
-r? ? ? ? ? 刪除cronatb任務(wù)
編輯crontab
[root@server ~]# crontab -e
代表意義 ????????分鐘????????小時(shí) ????????日期???????? 月份? ? ? ? ? ? ? ? ? ? ? ?星期???????? ???????? ? ? ? ? ? 命令
數(shù)字范圍 ?????0- 59? ? ??????0- 23? ? ? ? 1- 31? ? ? ?1- 12 ????????0-7(0和7表示 周日) ????????執(zhí)行的動(dòng)作
注:日期和星期 二寫一?(日期星期有重復(fù) )
*/5 6-8 * 8 1 /bin/bash /test.sh
表示在八月份的每個(gè)星期一,六點(diǎn)到八點(diǎn)這個(gè)范圍內(nèi)每隔五分鐘執(zhí)行一次存儲(chǔ)在/test.sh下的腳本
特殊字符
*? ? ? ? ????????任意時(shí)刻
-? ? ? ????????? 表示時(shí)間范圍
,? ? ? ????????分割時(shí)刻(逗號)
*/數(shù)字????????指定時(shí)間間隔的頻率,如:每3分鐘執(zhí)行一 次,*/3
書寫定時(shí)任務(wù)的注意事項(xiàng)
- 6 個(gè)字段都不能為空,如果不確定則使用*表示任意時(shí)間
- crontab命令任務(wù)的最小時(shí)間單位為分鐘,最大有效時(shí)間為月
- 定義時(shí)間時(shí),日期和星期最好不要一起出現(xiàn)
- 在定時(shí)任務(wù)中不管是寫命令還是在腳本中寫命令, 最好都用絕對路徑,相對路徑有時(shí)會(huì)報(bào)錯(cuò)
系統(tǒng)級別的計(jì)劃任務(wù)
crontab -e 時(shí)每個(gè)用戶都可以執(zhí)行的命令,但有時(shí)定時(shí)任 務(wù)必須由系統(tǒng)執(zhí)行,此時(shí)就需要編輯/etc/crontab配置文件來實(shí)現(xiàn)——在/etc/crontab 最后一行新增計(jì)劃任務(wù)
[root@server ~]# vim /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
SHELL=/bin/bash : 指定系統(tǒng)使用那個(gè)shell解釋器去
執(zhí)行
PATH=/sbin:/bin:/usr/sbin:/usr/bin : 系統(tǒng)執(zhí)行命令
的搜索路徑
MAILTO=root : 表示執(zhí)行任務(wù)的信息通過郵件發(fā)送給
誰
user-name : 表示執(zhí)行命令的用戶
查看賬戶信息的三種路徑
[root@server ~]# cat /etc/passwd???? 賬戶查看
[root@server ~]# cat /etc/group???? 工作組
[root@server ~]# cat /etc/shadow??? 賬號密碼
?Linux中單引號、雙引號及反引號的區(qū)別
1.單引號:
——所見即所得,直接顯示單引號里的內(nèi)容(單引號里的任何字符都會(huì)原樣輸出,單引號字符串中的變量是無效的)。
2.雙引號:
——先把變量解析之后,再輸出(把雙引號內(nèi)的內(nèi)容輸出出來;如果內(nèi)容中有命令、變量等,會(huì)先把變量、命令解析出結(jié)果,然后在輸出最終內(nèi)容來)。
雙引號括起來的字符中,"$"、反斜杠(\)和反引號(` `)是擁有特殊含義的:
- $ 代表引用變量的值;
- \ 反斜杠是轉(zhuǎn)義字符;
- `` 反引號代表引用命令
3.反引號:
——用于命令替換,即先執(zhí)行反引號中的語句,再把結(jié)果加入到原命令中。文章來源:http://www.zghlxwxcb.cn/news/detail-822631.html
引用于Linux Shell中單引號、雙引號、反引號的解釋 - 知乎文章來源地址http://www.zghlxwxcb.cn/news/detail-822631.html
到了這里,關(guān)于Linux的例行性工作(計(jì)劃任務(wù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!