Day17
作者:方維超
歸檔:課堂筆記
時間:2019/3/22
老男孩教育教學(xué)核心思想6重:重目標(biāo)、重思路、重方法腻窒、重實踐懊烤、重習(xí)慣、重總結(jié)
學(xué)無止境灶芝,老男孩教育成就你人生的起點郑原!
第****12****章 Linux 系統(tǒng)權(quán)限知識及應(yīng)用實踐
suid是針對二進(jìn)制命令的,給一個二進(jìn)制命令設(shè)置UID夜涕,任何一個用戶使用這個命令犯犁,都有對應(yīng)的權(quán)限
Sgid****的作用
sgid的作用就是讓普通用戶可以在執(zhí)行某個設(shè)置了sgid位的命令時,
擁有和命令對應(yīng)用戶組(一般為root用戶組)一樣的身份和權(quán)限(默認(rèn))
locate****搜索內(nèi)容女器,默認(rèn)從updatedb****對應(yīng)的數(shù)據(jù)庫中查找
updatedb 更新locate****查找內(nèi)容對應(yīng)的數(shù)據(jù)庫酸役。
[root@oldboyedu ~]# updatedb
[root@oldboyedu ~]# ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 1977042 Oct 8 00:47 /var/lib/mlocate/mlocate.db
[root@oldboyedu ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data
sgid基于目錄的作用:
讓不同的人創(chuàng)建文件屬于相同的用戶組,從而可以互相共享文件的權(quán)限驾胆。
-u 指定UID
章節(jié)重點
1)Linux基本9位權(quán)限之文件和目錄權(quán)限詳細(xì)說明涣澡。
2)Linux基本9位權(quán)限之字符和數(shù)字(8進(jìn)制)權(quán)限知識。
3)權(quán)限及用戶用戶組屬性修改命令chmod丧诺、chown暑塑、chgrp。
4)默認(rèn)權(quán)限umask以及系統(tǒng)目錄安全案例锅必。
5)特殊權(quán)限Suid知識掌握事格,Sgid和sticky知識了解即可
《3W1H****框架》用于總結(jié)惕艳,寫稿等
第十三章 linux****系統(tǒng)定時任務(wù)
1****、什么是定時任務(wù)
周期性的執(zhí)行任務(wù)計劃的軟件驹愚,linux****定時任務(wù)的常用軟件 crond****远搪。
2****、作用:使用定時任務(wù)軟件逢捺,可以每天谁鳍、每小時按你需求重復(fù)的執(zhí)行一項任務(wù)。
例如:保證數(shù)據(jù)不丟失劫瞳,需要備份倘潜,都是0點以后,2點爬起來備份志于,4點以后睡覺涮因。
需要寫一個程序?qū)崿F(xiàn)自動備份,然后讓定時任務(wù)軟件幫你執(zhí)行
相當(dāng)于一個鬧鐘伺绽。
3****养泡、怎樣用:
(1)系統(tǒng)的定時任務(wù)
1.不用管理員干預(yù),系統(tǒng)自動執(zhí)行奈应。
2.也可以利用系統(tǒng)任務(wù)為管理員服務(wù)澜掩。
[root@oldboy ~]# ll /var/log/messages*
-rw-------. 1 root root 96594 Mar 21 12:40 /var/log/messages
-rw-------. 1 root root 485249 Mar 20 10:46 /var/log/messages-20190320
[root@oldboy ~]# ll /var/log/secure*
-rw-------. 1 root root 1430 Mar 21 12:50 /var/log/secure
-rw-------. 1 root root 2695 Mar 20 10:46 /var/log/secure-20190320
[root@oldboyedu /etc/cron.daily]# ll /etc/cron.daily/logrotate /etc/logrotate.conf
-rwx------. 1 root root 219 Oct 31 2018 /etc/cron.daily/logrotate
-rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf
按天切割日志,就可以用logrotate****杖挣。
(2)用戶的定時任務(wù)
在Linux系統(tǒng)中肩榕,
cron是定時任務(wù)的軟件名,
crond是服務(wù)進(jìn)程名惩妇,真正實現(xiàn)定時任務(wù)服務(wù)点把。
crontab****命令是用來設(shè)置定時任務(wù)規(guī)則的配置命令
要想配置定時任務(wù),首先啟動crontab服務(wù)屿附。
systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
開啟自啟動:
systemctl disable crond.service
systemctl enable crond.service
[root@oldboy/etc/cron.d]# systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-10-08 20:30:31 CST; 1h 40min ago
Main PID: 6105 (crond)
CGroup: /system.slice/crond.service
└─6105 /usr/sbin/crond -n
Oct 08 20:30:31 oldboy systemd[1]: Started Command Scheduler.
Oct 08 20:30:31 oldboy crond[6105]: (CRON) INFO (RANDOM_DELAY w...)
Oct 08 20:30:31 oldboy crond[6105]: (CRON) INFO (running with i...)
Hint: Some lines were ellipsized, use -l to show in full.
Crontab****命令
內(nèi)容放在哪郎逃?定時任務(wù)存放的位置/var/spool/cron/
以當(dāng)前用戶名作為文件名
-l 列表 查看已經(jīng)設(shè)置的定時任務(wù) #####
-e edit 編輯定時任務(wù) #####
-u user 查看特定用戶下的定時任務(wù)
root:
crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
編寫定時任務(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ù)命令或程序
特殊符號:
*表示 每 的意思
-連續(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
課堂練習(xí):
*/1 * * * * /bin/sh /scripts/data.sh
30 3,12 * * * /bin/sh /scripts/oldboy.sh
30 */6 * * * /bin/sh /scripts/oldboy.sh
30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
30 21 * * * 最強大腦
45 4 1,10,22 * * /application/apache/bin/apachectl graceful
10 1 * * 6,0 /application/apache/bin/apachectl graceful
0,30 18-23 * * * /application/apache/bin/apachectl graceful
00 */1 * * * /application/apache/bin/apachectl graceful
#################
- 23,00-07/1 * * * /application/apache/bin/apachectl graceful
00 */1 * * *
00 11 * 4 1-3 /application/apache/bin/apachectl graceful
每周日上午9:30去老男孩教育上課
每天上午8:30去老男孩教育上課,這是脫產(chǎn)班的上課頻率各聘。
課堂練習(xí):
命令實例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ī)則了防楷。
實踐:
1、每分鐘追加一次oldboy字符串到/tmp/oldboy.log里则涯。
解答:大象放冰箱分三步
a.命令行執(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
b.配置定時任務(wù)crontab -e 編輯配置
[root@oldboyedu ~]# crontab -l
- echo "oldboy">>/tmp/oldboy.log
c.檢查
[root@oldboyedu ~]# tail -f /tmp/oldboy.log
oldboy
oldboy
oldboy
老男孩思想:
1)先輸入* * * * *
2)先命令行操作成功。
3)拷貝命令到定時任務(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
/dev/null 黑洞設(shè)備。
&>/dev/null 等價>/dev/null 2>&1
范例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/ 錯了递礼,不執(zhí)行。羹幸。脊髓。。 看報錯日志栅受。将硝。。錯誤日志 定時任務(wù)沒有執(zhí)行窘疮,出錯了日志在哪里袋哼? 出錯日志/var/log/cron
Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (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 #存放腳本的文件
運維規(guī)范:
腳本位置:/server/scripts
軟件位置:/server/tools
編譯位置:/application/軟件名字-版本涛贯,然后要軟鏈接。
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
生產(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****日志
課下作業(yè):
1) 在每周6的凌晨3:15執(zhí)行/home/shell/collect.pl,并將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出到/dev/null設(shè)備睛琳,請寫出crontab中的語句盒蟆。
答:15 3 * * */6 /bin/sh /home/shell/collect.pl &>>/dev/null
2) crontab在11月份內(nèi),每天的早上6點到12點中师骗,每隔2小時執(zhí)行一次/usr/bin/httpd.sh历等,怎么實現(xiàn) ?
答:00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh&>/dev/null
3) crontab文件由六個域組成辟癌,每個域之間用空格分割寒屯,其排列正確的為(B )
A、MIN HOUR DAY MONTH YEAR COMMAND
B黍少、MIN HOUR DAY MONTH DAYOFWEEK COMMAND
C寡夹、COMMAND HOUR DAY MONTH DAYOFWEEK
D、COMMAND YEAR MONTH DAY HOUR MIN
考試:考到定時任務(wù)厂置。
下周:
============================
用戶管理:1天
磁盤管理:2-3天
三劍客深入:1-2天
Shell基礎(chǔ):2天
進(jìn)程管理命令菩掏、安裝命令 1天
============================
Linux網(wǎng)絡(luò)基礎(chǔ):4天 2天基礎(chǔ) 兩天實踐
第一大階段結(jié)束:
第二大階段,搭建集群农渊。