Linux定時任務crontab 和sudo授權管理

**只是個人學習筆記,抒寫比較混亂,慎看。在此也非常感謝各位大牛在網上上傳的教程和視頻;***

一、crontab是一種週期性執行任務的工具;
1、系統執行的工作:系統週期性要執行的工作,如備份系統數據、清理緩存
2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可以每個用戶自行設置;
3、每星期日誌備份;每月數據庫備份;凌晨業務數據統計等;

Minute Hour Day Month Dayofweek command
分鐘 小時 天(日期) 月 天每星期 命令
(0-59) (0-23) (1-31) (1-12) (0-7)

Crontab實踐練習:
1、安裝檢查Crontab服務
檢查是否安裝:crontab -l
檢查服務是否啓動:service crond status
安裝crontab
yum install vixie-cron
Yum install crontabs
新增調度任務的兩種方法:
crontab -e vi /etc/crontab
crontab -e -u admin 可以給普通用戶設置定時任務(-u表示普通用戶)

每分鐘打印當前時間到一個日誌文件中
*/1***date >> /tmp/log.txt
tail -f /tmp/log.txt
表示任何時間都匹配;
,選取執行;-之間執行;*/2每分鐘執行;

2、案例:
每晚的21:30重啓apache
30 21 service httpd restart
每月1、10、22日的4:45重啓apache
45 4 1,10,22
service httpd restart
兩分鐘重啓Apache服務器
/2 service httpd restart

3、Crontab的配置
4、Crontab的日誌
/var/log/cron文件保存cron記錄日誌
cd /var/log ls -l cron*
cat /etc/crontab

cd /var/spool/mail 可以發送root郵箱

5、Crontab常見錯誤
環境變量
cd ~ ls -a bash_profile vi bash_profile
APPDIR=/hyk export APPDIR 系統配置
source .bash_profile 啓動
echo $APPDIR 輸出

crontab -e 個人配置
/1 * echo $APPDIR >> /tmp/appdir.log
Date date date
cat /tmp/appdir.log 下面是空滴;
cat .bash_profile 配置信息沒有在運行腳本的時候載入進去;

命令行雙引號中使用%時,未加反斜線\
在計劃任務裏必須得加反斜線(就是設置定時任務時)
第三和第五個域之間執行的是“或”操作
四月的第一個星期日早晨1時59分運行a.sh
59 1 1-7 4 test ~date +\%w~ -eq 0 && /root/a.sh
Date +%w 是1 0成功 1失敗
test date +%w -eq 0
echo $?
分鐘設置誤用
兩個小時運行一次
0 /2 command
**

二、sudo用途 (蘇度)
sudo允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,
讓root 把本來只能超級用戶執行的命令賦予普通用戶執行;
Sudo操作對象是系統命令;

root賦予權限 visudo 實際修改的是/etc/sudoers文件
Sudo -l 查詢是否授權
Whereis 查詢地址
root All=(ALL) ALL
用戶名 被管理主機=(可使用身份)授權命令(絕對路徑)

實踐練習:
1、假設普通用戶a沒有重啓功能,下面授權普通用戶a繼承重啓功能;
shutdown -r now 重啓命令
root端:visudo
a ALL=(ALL) /sbin/shutdown -r now 越詳細執行權限越低
a端:sudo /sbin/shutdown -r now

2、授權普通帳號a可以創建用戶和密碼,但不能修改root密碼;
root端:visudo
a ALL=/usr/sbin/useradd
a ALL=/usr/bin/passwd (不正確的,權限太大)
a ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd “”,
!/usr/bin/passwd root

a端:sudo /usr/sbin/useradd 帳號名
sudo /usr/sbin/passwd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章