思想
如何調(diào)試定時(shí)任務(wù)
1查看錯(cuò)誤日志,以后只要守護(hù)進(jìn)程的都要看日志
/var/log/cron 學(xué)會(huì)最小化排除
先清空祭往,>/var/log/cron 然后測(cè)試和觀察
先清空摊滔,>/var/log/cron 然后測(cè)試和觀察
2增加執(zhí)行任務(wù)頻率調(diào)試任務(wù)
調(diào)快頻率
3把定時(shí)執(zhí)行時(shí)間比當(dāng)前時(shí)間拖后5分鐘 勋篓,5分鐘提前量咬扇,然后測(cè)試
4調(diào)整系統(tǒng)時(shí)間(測(cè)試環(huán)境可以)企業(yè)最好不要
5通過(guò)腳本日志輸出調(diào)試定時(shí)任務(wù)
***** /bin/sh /server/scripts/bak.sh &>/tmp/bak.log定時(shí)任務(wù)輸出
tar zcvf oldboy.tar.gz? ./data &>/tmp/tar.log腳本輸出
注意:有時(shí)候程序執(zhí)行一次狮暑,一定要在測(cè)試環(huán)境測(cè)試好在復(fù)制到正式
代碼發(fā)布流程:辦公室測(cè)試環(huán)境==>IDC機(jī)房測(cè)試環(huán)境==》IDC機(jī)房正式環(huán)境
實(shí)踐案例
企業(yè)故障案例:No space left on device常見(jiàn)企業(yè)故障案例
磁盤滿的報(bào)錯(cuò),原因往往是inode被占滿了辉饱。
df -i
因?yàn)槎〞r(shí)任務(wù)沒(méi)有加&>/dev/null搬男,定時(shí)任務(wù)執(zhí)行的時(shí)候把輸出給系統(tǒng)root發(fā)郵件。
郵件服務(wù)器postfix服務(wù)默認(rèn)不開(kāi)彭沼,這些給系統(tǒng)發(fā)的郵件就會(huì)堆在臨時(shí)目錄(大量小文件存在)
/var/spool/clientmqueue/? ? ? 6
/var/spool/postfix/maildrop/? 7
企業(yè)故障案例:程序通過(guò)手動(dòng)可以執(zhí)行缔逛,放定時(shí)任務(wù)里不執(zhí)行。
export變量生產(chǎn)案例
定時(shí)任務(wù)在執(zhí)行腳本的時(shí)候姓惑,多數(shù)情況沒(méi)辦法加載環(huán)境變量褐奴,特別是/etc/profile。
登錄后怎么操作都對(duì)挺益,但是就是放到定時(shí)任務(wù)不行歉糜。
命令行:bash登錄方式
1.手工登錄后乘寒,加載所有環(huán)境變量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc)
2.定時(shí)任務(wù)執(zhí)行腳本屬于非登錄狀態(tài)(/etc/bashrc)望众。
實(shí)踐檢驗(yàn),定時(shí)任務(wù)能否自動(dòng)加載/etc/bashrc和/etc/profile文件伞辛。
所有運(yùn)維都會(huì)把變量放到此文件/etc/profile烂翰,把這個(gè)文件里的變量定義
在執(zhí)行的腳本中 重新定義。
具體為crond執(zhí)行Shell時(shí)只能識(shí)別為數(shù)不多的系統(tǒng)環(huán)境變量蚤氏,普通環(huán)境變量一般是無(wú)法識(shí)別的甘耿,如果在編寫(xiě)的腳本中需要使用變量,最好使用export重新聲明下該變量竿滨,以確保腳本正確執(zhí)行佳恬。以后要將其作為一個(gè)開(kāi)發(fā)基本規(guī)范寫(xiě)上。
所有運(yùn)維都會(huì)把變量放到此文件/etc/profile于游,把這個(gè)文件里的變量定義
在執(zhí)行的腳本中 重新定義毁葱。
問(wèn)題? 1)在每周6的凌晨3:15執(zhí)行/home/shell/collect.pl,并將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出到/dev/null設(shè)備贰剥,請(qǐng)寫(xiě)出crontab中的語(yǔ)句倾剿。
######oldboy...? ? ? ? 這是行注釋? ? ? which查命令路徑/bin/perl
15 03 * * 6 /bin/perl /home/shell/collect.pl >/dev/null 2>&1?
2)crontab在11月份內(nèi),每天的早上6點(diǎn)到12點(diǎn)中蚌成,每隔2小時(shí)執(zhí)行一次/usr/bin/httpd.sh前痘,怎么實(shí)現(xiàn) ?
00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh &>/dev/null
圖
linux用戶管理與應(yīng)用實(shí)踐
1用戶及用戶組配置文件介紹
/etc/passwd 用戶所在文件
儲(chǔ)存用戶信息文件
第一列 用戶名稱 root
第二列 用戶密碼? x? ? 占位密被轉(zhuǎn)移到
第三列 用戶UID 0
第四列 用戶組UID 0
第五列 用戶說(shuō)明 root
第六列 用戶家目錄 /root
第七列 shell解釋器 /bin/bash
解釋器
[root@oldboyedu ~]# awk -F ":" '{print $NF}' /etc/passwd|sort|uniq -c
? ? ? 6 /bin/bash
? ? ? 1 /bin/sync
? ? ? 1 /sbin/halt
? ? 18 /sbin/nologin
? ? ? 1 /sbin/shutdown
圖
Linux是命令行管理担忧,平時(shí)輸入ls,cp芹缔,誰(shuí)識(shí)別,幫我們把我們想要的輸出呢瓶盛?
這個(gè)工具就是bash(命令行解釋器)最欠。 * 坡锡? [abc]
用戶登錄:輸入命令,希望哪個(gè)解釋器解釋(結(jié)尾列決定)
/etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash
CentOS7默認(rèn)解釋器是bash? 虛擬用用戶沒(méi)有解釋器/sbin/nologin
/etc/passwd里的解釋器
6 /bin/bash
? ? ? 1 /bin/sync
? ? ? 1 /sbin/halt
? ? 18 /sbin/nologin
? ? ? 1 /sbin/shutdown? 這幾種解釋器
系統(tǒng)解釋器就一種
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
bash是sh的擴(kuò)展窒所,sh是bash的軟連接鹉勒。
/etc/shadow 密碼所在文件
例 tail -1 /etc/shadow? shadow每列的意義
bingbing? 用戶
:!!? ? ? 密碼
:17980? ? 最近更改密碼的時(shí)間
:0? ? ? ? 禁止修改密碼的天數(shù)
:99999? ? 用戶必須更改口令的天數(shù)
:7? ? ? ? 警告更改密碼的期限
: 在用戶密碼過(guò)期之后到禁用賬戶的天數(shù)
: 從1970年1月1日起,到用戶被禁用的天數(shù)
: 保留
passwd oldboy改密碼實(shí)際上就是修改密碼所在文件
useradd oldboy 添加用戶實(shí)際上就是修改上述兩個(gè)文件
useradd gongli1 -c "beautify woman" -d /tmp -e '2020/10/20' 建個(gè)說(shuō)明beautify woman 指定/tmp目錄下 截止日期10.20止
useradd gongli2 -g oldboy 建個(gè)用戶組是oldboy組
useradd bingbing -u 888 -s /sbin/nologin -M? 建UID為888解釋器為nologin吵取,不建家目錄
/etc/default/useradd文件 useradd命令的配置文件
默認(rèn)shell就是/bin/bash
為什么默認(rèn)的家目錄在home下
為什么默認(rèn)的家目錄/home/用戶名下面有很多隱藏文件禽额,從哪來(lái)的。
就是/etc/default/useradd文件配置的皮官。
useradd -D -s /bin/sh? 相當(dāng)于vim編輯/etc/default/useradd文件脯倒。
SHELL=/bin/sh
/etc/skel目錄,創(chuàng)建用戶默認(rèn)就會(huì)把此目錄下的文件拷貝到/home/用戶名下捺氢。
/etc/skel 為每個(gè)用戶提供用戶環(huán)境變量的目錄藻丢。
[root@oldboyedu ~]# ls /etc/skel -A
.bash_logout? .bash_profile? .bashrc
=================================
.bash_logout? .bash_profile? .bashrc 用戶環(huán)境變量
登錄系統(tǒng)后,命令行出現(xiàn)如下提示:為什么摄乒?
[root@oldboyedu /home/chenglong1]# su - chenglong1
-sh-4.2$
-sh-4.2$
解答:用戶的環(huán)境變量缺失導(dǎo)致的悠反。
如何恢復(fù) cp /etc/skel/.bash* .
-sh-4.2$ source ./.bash_profile ./.bashrc 執(zhí)行環(huán)境變量生效
ls -a查看
-sh-4.2$ export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$'
[chenglong1@oldboyedu ~]$
添加用戶要用的文件
/etc/login.defs 了解 登錄的定義文件
添加用戶要用的文件
/etc/login.defs? /etc/skel /etc/default/useradd
編輯/etc/passwd,通過(guò)注釋來(lái)刪除。
#chenglong1:x:1007:1009::/home/chenglong1:/bin/sh
usermod 修改用戶屬性
usermod -g jj gg? 修改權(quán)限usermod -g jj gg jj是用戶組gg是用戶
echo 123456|passwd --stdin oldgirl
-u 指定uid多少
-s 指定登錄的SHELL解釋器
-M不創(chuàng)建家目錄
-c 添加用戶說(shuō)明
-d 指定家目錄
-g 指定所屬的組
-e 設(shè)定登錄截止日期
passwd 給用戶修改密碼? 單個(gè)直接改當(dāng)前改密碼
--stdin從標(biāo)準(zhǔn)輸入接收密碼
echo 123456|passwd --stdin oldboy
設(shè)置密碼
不交互設(shè)置密碼:
方法1:
[root@oldboyedu ~]# echo 123456|passwd --stdin oldgirl
Changing password for user oldgirl.
passwd: all authentication tokens updated successfully.
方法2:
[root@oldboyedu ~]# echo 123456 >pass
[root@oldboyedu ~]# cat pass
123456
[root@oldboyedu ~]# passwd --stdin oldgirl <pass
Changing password for user oldgirl.
passwd: all authentication tokens updated successfully.
[root@oldboyedu ~]# tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}' >user.log
[root@oldboyedu ~]# cat user.log
gongli1:oldboy
gongli2:oldboy
chenglong1:oldboy
zongsheng:oldboy
chpasswd對(duì)密碼文件的要求是上述user.log
chpasswd批量更新用戶的密碼命令
tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}' >user.log把最后4個(gè)用戶密碼給改了馍佑,在把它打user.log
用戶相關(guān)文件:
用戶組信息文件/etc/group
圖
用戶組密碼文件/etc/gshadow(廢棄)
useradd oldboy 添加用戶實(shí)際上也會(huì)修改上述兩個(gè)文件(因?yàn)橐獎(jiǎng)?chuàng)建同名的用戶組)
groupadd sa 添加用戶組就是修改上述兩個(gè)文件
md5sum 給文件設(shè)置指紋(計(jì)算和檢查MD5數(shù)字信息)? md5sum 可查是否改動(dòng)過(guò)
例子 md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
開(kāi)個(gè)新的useradd bingbing
回來(lái)文件發(fā)生變化md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
grep bingbing? /etc/passwd /etc/shadow /etc/group /etc/gshadow 每個(gè)里面各加一行 bingbing
2用戶及用戶組命令介紹
有關(guān)用戶管理常見(jiàn)命令
useradd 添加用戶 用戶組
/etc/default/useradd 它的命令配置文件
[root@oldboyedu ~]# useradd gongli1 -c "beautify woman" -d /tmp -e '2020/10/20'
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@oldboyedu ~]# tail -1 /etc/passwd
gongli1:x:1005:1008:beautify woman:/tmp:/bin/bash
[root@oldboyedu ~]# chage -l gongli1
Last password change : Mar 25, 2019
Password expires : never
Password inactive : never
Account expires : Oct 20, 2020? =================
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
給開(kāi)發(fā)等人員添加用戶斋否,盡量給截止時(shí)間。
修改方法:useradd -D -s /bin/sh? ? useradd -D=vim編輯文件
usermod 修改用戶
userdel 刪除用戶
passwd 設(shè)置修改密碼
chage? 修改密碼屬性
id 查看用戶的GID UID及所屬的用戶組信息
su 切換用戶
sudo 普通用戶提權(quán)的工具
visudo 用于編輯suders配置文件的工具
有關(guān)用戶組管理常見(jiàn)命令
groupadd? 添加用戶組
groupdel 刪除用戶組
groupmod 修改用戶組信息
gpasswd 為用戶組設(shè)置密碼
groups 顯示用戶所屬的用戶組
newgrp 更改用戶所屬的有效用戶組
3添加用戶命令useradd
useradd命令的工作原理
useradd命令的工作原理
和創(chuàng)建用戶相關(guān)的文件/etc/login.defs
和創(chuàng)建用戶相關(guān)的文件/etc/default/useradd
和創(chuàng)建用戶相關(guān)的文件/etc/skel
有關(guān)創(chuàng)建用戶的工作原理
useradd命令的常用參數(shù)
4用戶信息修改相關(guān)命令usermod
5刪除用戶相關(guān)命令userdel
6添加用戶組命令groupadd
7刪除用戶組命令groupdel
8修改用戶密碼命令passwd
9批量更新用戶的密碼命令chpasswd
10修改用戶密碼有效期命令chage
11用戶查詢相關(guān)命令
12用戶身份切換相關(guān)命令su
13visudo:編輯sudoers文件工具
14以另一個(gè)用戶身份執(zhí)行命令:sudo