特殊權(quán)限位與linux定時任務(wù)
一.sgid
1.作用
讓普通用戶可以在執(zhí)行某個設(shè)置了sgid位的命令時劫狠,
擁有和命令對應(yīng)用戶組(一般為root用戶組)一樣的身份和權(quán)限(默認(rèn))。
2.sgid基于目錄的作用:
讓不同的人創(chuàng)建文件屬于相同的用戶組,從而可以互相共享文件的權(quán)限毒租。
二.Linux系統(tǒng)定時任務(wù):
1.什么是定時任務(wù)汗洒?
周期性的執(zhí)行任務(wù)計劃的軟件,Linux定時任務(wù)的常用軟件crond豌习。
2.使用定時任務(wù)軟件苏潜,可以每天银萍,每小時按你需求重復(fù)的執(zhí)行一項工作。
3.怎樣用恤左。
(1)系統(tǒng)定時任務(wù)計劃
不用管理員干預(yù)贴唇,系統(tǒng)自動執(zhí)行。
也可以利用系統(tǒng)任務(wù)為管理員服務(wù)飞袋。
(2)用戶定時任務(wù)計劃
在Linux系統(tǒng)中滤蝠,
cron是定時任務(wù)的軟件名,
crond是服務(wù)進(jìn)程名授嘀,真正實現(xiàn)定時任務(wù)服務(wù)。
crontab命令是用來設(shè)置定時任務(wù)規(guī)則的配置命令锣险。
要想配置定時任務(wù)蹄皱,首先啟動crond服務(wù)。
systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
開啟自啟動:
systemctl disable crond.service
systemctl enable crond.service
4.crontab
crontab命令是用來設(shè)置定時任務(wù)規(guī)則的配置命令芯肤。
-l l列表 查看已經(jīng)設(shè)置的定時任務(wù)*
-e edit編輯定時任務(wù)*
-u user查看特定用戶下定時任務(wù)
定時任務(wù)內(nèi)容存放的位置/var/spool/cron/
root:
crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
5.編寫定時任務(wù)的語法:
# 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
# | ?| ?| ?| ?|
# * ?* ?* ?* ?* ?(command to be executed)
共六列:
第一列:分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ù)命令或程序
6.特殊符號:
*表示的 每或每一 的意思
?00 23 * * * cmd
-連續(xù)區(qū)間 1-10
?00 8-23 * * * cmd
,列舉 1,2,3,4,8
?00 1,2,3,4,8 * * * cmd
/n n是數(shù)字巷折。
n代表自然數(shù)字,即“每隔n單位時間”崖咨,例如:每10分鐘執(zhí)行一次任務(wù)可以寫成
?*/10 * * * * cmd
7.黑洞設(shè)備.
/dev/null黑洞設(shè)備
?MH370>/dev/null
&>/dev/null等價>/dev/null 2>&1
8.錯誤日志
查看出錯日志/var/log/cron
=============================================
9.例題
命令實例1:*/1 * * * * /bin/sh /scripts/data.sh
在本例中除了數(shù)字與命令腳本外锻拘,還使用到了符號"*",*號的意思“每一”。
第一列的意思為分鐘署拟,特殊符號“/”表示每隔的意思,即表示每隔一分鐘執(zhí)行/bin/sh /scripts/data.sh程序推穷。
命令實例2:30 3,12 * * * /bin/sh /scripts/oldboy.sh
在本例中心包,第一列為30,表示30分鐘馒铃;第二列為 3,12蟹腾,這代表3點及 12點,此定時任務(wù)的意思是每天凌晨3點和中午12點的半點時刻(或描述為每天凌晨3:30和中午12:30)執(zhí)行/scripts/oldboy.sh腳本区宇。
命令實例3:30 */6 * * * /bin/sh /scripts/oldboy.sh
在本例中娃殖,第一列為30,表示30分鐘议谷;第二列*/6代表每6個小時炉爆,也相當(dāng)于 6、12柿隙、18叶洞、24 的作用。此定時任務(wù)的意思是每隔6個小時的半點時刻執(zhí)行/scripts/oldboy.sh腳本任務(wù)禀崖。
命令實例4:30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
在本例中衩辟,其中的第一列為30,表示30分鐘波附;第二列8-18/2代表在早晨8點到下午18點之間每隔2小時艺晴,也相當(dāng)于把8、10掸屡、12封寞、14、16仅财、18單獨列出狈究。
那么,此定時任務(wù)的意思就是早晨8點到下午18點之間盏求,每隔2小時的半點時刻執(zhí)行/scripts/oldboy.sh腳本任務(wù)抖锥。
命令實例5:30 21 * * * /application/apache/bin/apachectl graceful
本例表示每晚的21:30重啟apache。
命令實例6:45 4 1,10,22 * * /application/apache/bin/apachectl graceful
本例表示每月1碎罚、10磅废、22日的凌晨4 : 45分重啟apache。
命令實例7:10 1 * * 6,0 /application/apache/bin/apachectl graceful
本例表示每周六荆烈、周日的凌晨1 : 10分重啟apache拯勉。
命令實例8:0,30 18-23 * * * /application/apache/bin/apachectl graceful
本例表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
命令實例9:00 */1 * * * /application/apache/bin/apachectl graceful
本例表示每隔一小時整點重啟apache
命令實例10:* 23,00-07/1 * * * /application/apache/bin/apachectl graceful
本例并不表示晚上23點和早上0-7點之間每隔一小時重啟Apache。
要說明的是宫峦,以上結(jié)果是不規(guī)范的岔帽,也是不對的。大家想想為什么斗遏?
以上定時任務(wù)的第一列為*山卦,表示每分都執(zhí)行任務(wù)即晚上23點和早上0-7點之間每隔一小時的每分都重啟Apache,很可怕吧诵次。
命令實例11:00 11 * 4 1-3 /application/apache/bin/apachectl graceful
本例表示4月的每周一到周三的上午11點整重啟Apache账蓉。
命令實例12:30 09 * * 0 去老男孩教育上課
本例表示每周日上午9:30去老男孩教育上課,這是周末班的上課頻率逾一。
命令實例13:30 08 * * *去老男孩教育上課
本例表示每上午8:30去老男孩教育上課铸本,這是脫產(chǎn)班的上課頻率。
通過上述13個例子遵堵,相信讀者已經(jīng)能夠理解定時任務(wù)的配置規(guī)則了箱玷。
10.實踐:
每分鐘追加一次oldboy字符串到/tmp/oldboy.log里。
(1)命令行執(zhí)行成功陌宿。
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
oldboy
(2)配置定時任務(wù)crontab -e編輯配置
?[root@oldboyedu ~]# crontab -l
#####
* * * * * echo "oldboy">>/tmp/oldboy.log
(3)檢查
[root@oldboyedu ~]# tail -f /tmp/oldboy.log
oldboy
oldboy
oldboy
思路
先輸入* * * * *
命令行操作成功锡足。
拷貝命令到定時任務(wù)編輯里。
范例13-2:讓服務(wù)器時間每5分鐘和互聯(lián)網(wǎng)時間做一次同步壳坪。
安裝時間服務(wù)軟件:yum install ntpdate -y
更新互聯(lián)網(wǎng)時間/usr/sbin/ntpdate ntp1.aliyun.com
[root@oldboyedu ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
范例13-3:每天晚上0點舶得,把站點目錄/var/www/html下的內(nèi)容打包備份到/data目錄下,并且要求每次生成不同的備份包名爽蝴。
至少分三步:
(1)命令行稿成功
準(zhǔn)備工作:
[root@oldboyedu ~]# mkdir /var/www/html /data -p
具體命令:
[root@oldboyedu ~]# tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/
tar: Removing leading `/' from member names
/var/www/html/
[root@oldboyedu ~]# ll /data
total 4
-rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz
(2)編寫定時任務(wù)
[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/
錯了沐批,不執(zhí)行。蝎亚。九孩。。
看報錯日志发框。躺彬。。錯誤日志
定時任務(wù)沒有執(zhí)行梅惯,出錯了日志在哪里顾患?
出錯日志/var/log/cron
Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_$(date +)
定時任務(wù)對%的要求,百分號要轉(zhuǎn)義个唧。\%
正確答案:
[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +\%F).tar.gz /var/www/html/
優(yōu)秀的答案(企業(yè)里):
(1)命令行執(zhí)行
cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
(2)盡量用腳本文件實現(xiàn)
#mkdir /server/scripts -p #存放腳本的文件
cd /server/scripts
#cat bak.sh
cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
命令行執(zhí)行:
/bin/sh /server/scripts/bak.sh
(3)編輯定時任務(wù)
#bak html dir by oldboy at 2020108
00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
[root@oldboyedu /server/scripts]# crontab -l|tail -2
#bak html dir by oldboy at 2020108
00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
(4)檢查正式結(jié)果
[root@oldboyedu /server/scripts]# ls -l /data
11生產(chǎn)環(huán)境下的定時Cron書寫要領(lǐng)
要領(lǐng)1:為定時任務(wù)規(guī)則加必要的注釋
要領(lǐng)2:所有的定時任務(wù)盡量都以腳本的形式執(zhí)行
要領(lǐng)3:在執(zhí)行的Shell腳本前加上/bin/sh
要領(lǐng)4:定時任務(wù)中命令或腳本的結(jié)尾加>/dev/null 2>&1
要領(lǐng)5:在指定用戶下執(zhí)行相關(guān)定時任務(wù)
要領(lǐng)6:生產(chǎn)任務(wù)計劃程序中不要隨意打印輸出信息,有輸出的想法去掉。
要領(lǐng)7:定時任務(wù)執(zhí)行的腳本要存放到規(guī)范路徑下
要領(lǐng)8:配置定時任務(wù)要規(guī)范操作過程设预,減少出錯
要領(lǐng)9:定時任務(wù)腳本中程序命令及路徑盡量用全路徑
要領(lǐng)10:時間變量%號要用反斜線轉(zhuǎn)義(只有定時任務(wù)里是命令時需要)
要領(lǐng)11:若腳本中調(diào)用了系統(tǒng)環(huán)境變量徙歼,要重新定義
要領(lǐng)12:出錯或無法執(zhí)行,就檢查/var/log/cron日志
12.運維規(guī)范:
腳本位置:/server/scripts
軟件位置:/server/tools
編譯位置:/application/軟件名字-版本,然后要軟鏈接魄梯。