1. 程式人生 > >Linux定時任務crontab 和sudo授權管理

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