使用場景:
-
生活中,我們有太多場景需要使用到鬧鐘,比如早上 7 點起床,下午 4 點開會,晚上 8 購物,等等
-
在 Linux 系統里,我們同樣也有類似的需求。比如我們想在凌晨 1 點將文件上傳服務器,或在 晚上 10 點確認系統狀態,等等。
at 命令就是為這個需求而誕生的。使用 at 命令,你可以在特定時間自動完成你所設定的任務, 也可以實現自動化,非常方便快捷!
單一執行的例行性任務---at(一次性)
安裝
- at命令需要安裝
[root@server ~]# yum install at -y
[root@server ~]# at -V # 大寫V
at version 3.2.2
- 啟動服務
[root@server ~]# systemctl start atd
[root@server ~]# systemctl enable --now atd # 設置開機啟動
[root@server ~]# systemctl status atd # 查看狀態
at命令詳解
格式:at -參數 日期時間
參數
-m:當任務完成后,即使沒有標準輸出,也會給用戶發送郵件
-l:列出系統上所有用戶的at任務,等價于atq
-d:刪除或取消一個任務
-v:使用時間格式,列出at任務
-c:可以列出任務之后的命令內容
-f:從文件中讀取
時間格式
實驗1:延遲執行ls? /root,并將結果寫入at.txt中
[root@server ~]# at 14:17
warning: commands will be executed using /bin/sh
at> ls /root > at.txt
at> <EOT> # 點擊ctrl+d 結束交互性界面
[root@server ~]# at -l # 查看已存在的計劃任務
3 Thu May 25 14:17:00 2023 a root
[root@server ~]# atq # 同上
3 Thu May 25 14:17:00 2023 a root
實驗2:不使用交互性命令實現,通過管道符命令執行
[root@server ~] # echo "echo 'hello again' >> at.txt" | at now +1 minute
注意:
- at命令只要指定的時間正確,就可以執行對應的命令
- at命令的輸出結果不會顯示到屏幕上
- at命令中執行的命令最好使用絕對路徑,不容易報錯
- 過程:輸入at 時間 -> 回車 ->輸入執行的命令->ctrl+d退出at
- at命令只會執行一次
at命令執行過程分析
- 第一步:尋找/etc/at.allow (白名單)是否存在,寫在該文件中用戶才可執行at命令
- 第二步:若/etc/at.allow不存在,則尋找/etc/at.deny(黑名單)文件,寫在該文件中的用戶不能使用 at命令
- 第三步:若兩個文件都不存在則只有root用戶可以使用at命令
- 注意:若拒絕某用戶使用at命令則可以將用戶名寫入到/etc/at.deny中
實驗3:設置某賬戶at命令不可用
[root@server ~]# useradd ce1 # 新建賬戶
[root@server ~]# passwd ce1 # 設置密碼
更改用戶 ce1 的密碼 。
新的密碼: # 654321
無效的密碼: 密碼少于 8 個字符
重新輸入新的密碼: # 654321
passwd:所有的身份驗證令牌已經成功更新。
[root@server ~]# tail -1 /etc/passwd # 倒敘查看賬戶管理文件
ce1:x:1001:1001::/home/ce1:/bin/bash
[root@server ~]# vim /etc/at.deny # 設置黑名單
ce1 # 輸入
[root@server ~]# su ce1 # 切換賬戶
[ce1@server root]$ cd ~
[ce1@server ~]$ at 14:36 # 測試,at命令不可用
You do not have permission to use at.
[ce1@server ~]$ su root # 切換到root賬戶
密碼:
su: 拒絕權限
# 安全考慮,openEuler做了用戶權限切換限制,解決方法如下:
# 重新開啟一個ssh連接,以root賬戶登錄
[root@server ~]# vim /etc/pam.d/su # PAM(Pluggable Authentication Modules)負責
系統中很多應用程序的登錄認證,安全設置問題
# 注釋掉第21行:
# auth required pam_wheel.so use_uid
# 保存關閉后,切換到原ssh連接
[ce1@server ~]$ su root
密碼:
Welcome to 5.10.0-153.12.0.92.oe2203sp2.x86_64
System information as of time: 2023年 11月 15日 星期三 13:38:45 CST
System load: 0.00
Processes: 139
Memory used: 9.8%
Swap used: 0%
Usage On: 7%
IP address: 192.168.48.130
Users online: 2
[root@server ce1]# cd ~
[root@server ~]#