第1章 shell程式設計(bash程式設計)
$數字 $1 $2 腳本(函數)的第幾個參數
$0 腳本的名字
$# 腳本參數的個數
$? 上一個指令的執行結果(傳回值)
[ -d ]
[ -f ]
單分支
雙分支
批量添加使用者
優化系統開機啟動項
執行個體1-1 企業案例題:書寫腳本檢查crond是否在運作
1.如果運作顯示crond is running
2.如果沒有運作crond is not running
1)需求--->指令
ps -ef |grep crond
2)條件是什麼?(是否運作)
[root@oldboyedu50-lnb ~]# ps -ef |grep crond|wc -l
2
如果程序數量是2,顯示running
如果程序數量不是2 顯示not running
3)書寫腳本
[root@oldboyedu50-lnb /server/scripts]# cat chcr.sh
#!/bin/bash
count=`ps -ef |grep crond|wc -l`
if [ $count -eq 2 ];then
echo "crond is running"
else
echo "crond is not running"
fi
4)進行測試
[root@oldboyedu50-lnb /server/scripts]# sh chcr.sh
crond is running
[root@oldboyedu50-lnb /server/scripts]# /etc/init.d/crond stop
Stopping crond: [ OK ]
crond is not running
[root@oldboyedu50-lnb /server/scripts]# /etc/init.d/crond start
Starting crond: [ OK ]
書寫檢查腳本:檢查服務 程序是否存在
腳本名稱 不要包含被檢查名字
[root@oldboyedu50-lnb /server/scripts]# cat check_cron.sh
. /etc/init.d/functions
#save count
action "crond is running" /bin/true
action "crond is not running" /bin/false
[root@oldboyedu50-lnb /server/scripts]#
[root@oldboyedu50-lnb /server/scripts]# sh check_cron.sh
crond is not running [FAILED]
Starting crond: [ OK ]
crond is running [ OK ]
for p in 1 2 3 4 5 6
do
echo $p
done
for p in {01..6}
echo "tao,${p}week ${p}group lidao take you to dabaojian, find ${p}woman."
tao,01week 01group lidao take you to dabaojian, find 01woman.
tao,02week 02group lidao take you to dabaojian, find 02woman.
tao,03week 03group lidao take you to dabaojian, find 03woman.
tao,04week 04group lidao take you to dabaojian, find 04woman.
tao,05week 05group lidao take you to dabaojian, find 05woman.
tao,06week 06group lidao take you to dabaojian, find 06woman.
執行個體1-2 優化系統開機啟動項,隻保留crond,sshd,network,rsyslog,sysstat其餘服務都關閉
chkconfig |egrep -v 'crond|sshd|network|rsyslog|sysstat'|awk '{print $1}'
chkconfig |awk '!/crond|sshd|network|rsyslog|sysstat/'
chkconfig |awk '!/crond|sshd|network|rsyslog|sysstat/{print $1}'
for name in `chkconfig |egrep -v 'crond|sshd|network|rsyslog|sysstat'|awk '{print $1}' `
chkconfig $name off
[root@anheqiaobei scripts]# chkconfig --level 1 rdma off
[root@anheqiaobei scripts]# chkconfig --list rdma
rdma 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@anheqiaobei scripts]# chkconfig --level 1 udev-post off
[root@anheqiaobei scripts]# chkconfig --list udev-post
udev-post 0:off 1:off 2:off 3:off 4:off 5:off 6:off
執行個體1-3 批量stu01..stu03 添加使用者并設定8位随機密碼for
第1步:stu{01..3}
第2步:随機密碼
[root@oldboyedu50-lnb ~]# date +%N |md5sum |cut -c-8
93e73487
[root@oldboyedu50-lnb ~]# echo $((RANDOM+10000000))
10024538
第3步;添加一個使用者 并設定随機密碼過程
useradd stu01
pass=`date +%N |md5sum |cut -c-8`
echo $pass |passwd --stdin stu01
echo stu01 $pass >>/tmp/pass.txt
第4步:寫入循環
for name in stu{01..3}
useradd $name
echo $pass |passwd --stdin $name
echo $name $pass >>/tmp/pass.txt
第2章 三劍客:
-maxdepth 最大深度
-type 類型
-name 檔案名
-iname 不區分大小寫
-mtime 修改時間
-size 檔案大小
! 非,取反
-exec
-perm 取反
-v 取反
-n 取消預設輸出
-E egrep
-o 執行過程
-i 不區分大小寫
-l 過濾的時候隻顯示檔案名字
-A2 顯示你要找的内容及接下來的xxx行
--color 顯示顔色
-r 支援擴充正則
-n 取消預設輸出
-i 修改檔案内容
-i.bak 修改之前複制
執行個體2-1 sed指令執行過程
1.讀取檔案内容第1行
2.是否滿足條件
1).滿足條件 執行對應的指令 p s d
2).不滿足 繼續第1步
3.截止到檔案的最後一行
執行個體2-2 sed 增删改查
查
cat>person.txt<<EOF
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
EOF
1. 顯示檔案的第5行
[root@oldboyedu50-lnb ~]# sed -n 5p person.txt
2. 顯示檔案的第2行到第5行
[root@oldboy50-01 ~]# sed -n '2,5p' person.txt
3. 顯示檔案的第3行到最後一行
[root@oldboyedu50-lnb ~]# sed -n '$p' person.txt
4. 顯示檔案中包含oldboy的行
[root@oldboyedu50-lnb ~]# sed -n '/oldboy/p' person.txt
5. 顯示檔案中從包含101的行 到 105的行
[root@oldboyedu50-lnb ~]# sed -n '2,5p' person.txt
[root@oldboyedu50-lnb ~]# sed -n '/101/,/105/p' person.txt
[root@oldboyedu50-lnb ~]# sed -n '/oldboy/,/yy/p' person.txt
6. 顯示檔案的第1和4行和5行
[root@oldboyedu50-lnb ~]# sed -n '1p ;4p; 5p' person.txt
7. 顯示 有規律的行
[root@oldboyedu50-lnb ~]# seq 10 |sed -n '1~2p'
1
3
5
7
8. grep -A 2 oldboy
[root@oldboyedu50-lnb ~]# sed -n '/Alex/p' person.txt
[root@oldboyedu50-lnb ~]# sed -n '/Alex/,+2p' person.txt
[root@oldboyedu50-lnb ~]# #grep -A2