天天看點

shell程式設計-三劍客

第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 

上一篇: 使用者管理