shell编程案例大全(持续更新)

0.vim编辑器的设置

1.与服务相关的脚本

1.判断apache服务是否正常。

如果不正常则重启,并且输出信息到屏幕,把服务信息写入到一个新的文件中,可以把这个脚本加入到循环定时任务里面去

#!/bin/bash
# 判断apache服务是否开启,如果没有开启则将其自动开启
test=$(ps aux | grep httpd | grep -v httpd)
if [[ -n $test ]]
        then
                echo "$(date)  apache is OK" >> /log/apache
        else
                echo "$(date) apache is failed"
                /usr/bin/systemctl restart httpd &> /dev/null
                if [[ $?==0 ]];
                        then
                                echo "restart success" >> /log/apache
                        else
                                echo "reestart fail" >> /log/apache
                fi
fi
2. 检测IP是本机所在的10.10.31.1~100的主机
#!/bin/bash
network="10.10.31"
for setnu  in $(seq 1 100)
        do
                ping -c 1 "$network.$setnu" &> /dev/null && result=1 || result=0
                if [ $result==0 ]
                        then
                                echo "inet $network.$setnu is normal" >> /root/net
                        else
                                echo "inet $network.$setnu is false" >> /root/net
                fi
        done

2.与文件相关的脚本

1.批量解压缩某个目录下的压缩文件
#!/bin/bash
read -p 'enter a dir' dir
touch /root/text
cd $dir
ls *.tar.gz >> /root/text
ls *.tgz >> /root/text

for i in $(cat /root/text)
        do
                tar -zxf $i &> /dev/null
        done
rm -rf /root/text

3.与用户管理相关的脚本

1.批量添加用户
#!/bin/bash
# 批量添加用户
read -p "name:" name
read -p "num:" num
read -p "password:" passwd
if [ ! -z $name -a ! -z $num -a ! -z $passwd ];then
        y=$(echo $num | sed 's/[0-9]//g')
        if [[ -z $y ]]
                then
                        for (( i=0;i<$num;i=i+1 ))
                                do
                                        /usr/sbin/useradd "$name$i" &> /dev/null
                                        echo $passwd | /usr/bin/passwd --stdin "$name$i" &> /dev/null
                                done
        fi
fi

删除所有普通用户

#!/bin/bash
#删除所有普通用户
for i in $(cat /etc/passwd | grep "/bin/bash" | grep -v "/root" | cut -d ":" -f 1)
        do
                userdel -r $i
        done
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值