首页 > 系统相关 >shell脚本示例

shell脚本示例

时间:2022-10-10 18:23:42浏览次数:72  
标签:脚本 do shell 示例 192.168 echo sed done bash

sh和bash的区别 bash是sh的增强版本,在我们平常实地操作的时候如果sh这个命令不灵了我们应当使用bash。可以看见sh不仅不支持多种命令,而且很多细小的差别。  所以其实我们应该更多的使用bash,也就是./xx.sh,前提是修改权限,chmod a+x xx.sh。   1.创建当天日期的目录 mkdir `date +%Y%m%d`_file   按秒创建:date +%Y%m%d%-I%M%S   创建昨天目录:date -d -1day +%Y%m%d

-d       #显示指定时间
-1day    # 昨天时间, -2day前天,  +1day 明天
+%Y%m%d  #获取当前日期格式为20220909
  2.输出信息 标准输出,正常的命令返回结果 不展示标准输出: ls  > /dev/null   错误输出,命令错误提示 不展示错误输出:sfsalfslfs  2>  /dev/null    不展示所有输出: sldfjslf   &> /dev/null   3.怎么把多行信息加到文本里
cat > ifcft-ens32:1 <<-EOF
TYPE=ethernet
NOBOOT=yes
DEVICE=ens32:1
IPADDR=192.168.75.200
NETMASK=255.255.255.0
EOF
说明:EFO前加- 自动去掉空格,如果要保持格式不要加-
cat  >   xxx.sh  <<-EFO
内容1 ...
内容2 ...
内容n ...
EOF
加-效果
cat > /etc/nginx/conf.d/zabbix.conf <<-EOF
server {
    listen       80;
    server_name  localhost;
 
 
    location / {
    root    /usr/share/zabbix;
    index    index.php index.html index.htm;
    }
    
    location ~ \.php$ {
    root    /usr/share/zabbix;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_buffer_size     64k;
    fastcgi_buffer  32    64k;
    fastcgi_index        index.php;
    fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
    }
EOF
不加-效果
cat > /etc/nginx/conf.d/zabbix.conf <<EOF
server {
    listen       80;
    server_name  localhost;
 
 
    location / {
    root    /usr/share/zabbix;
    index    index.php index.html index.htm;
    }
    
    location ~ \.php$ {
    root    /usr/share/zabbix;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_buffer_size     64k;
    fastcgi_buffer  32    64k;
    fastcgi_index        index.php;
    fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
    }
EOF

4.for循环

复制多个文件 for i in `seq 1 10`; do  cp 1G.file 1G.file-$i ;done   每秒文件大小, for i in `seq 1 100`;do ls -lh /home/ws1/tb ; sleep 1   ;done  >  /tmp/log123.txt   5.输出文字颜色 echo -e "\033[32m----------------\033[0m"   6.判断进程是否存在 判断进程是否存在 killall -0  nginx    # killall  -0  并不会杀死进程

 

 

提示:查询Killall命令是否安装,安装:yum install  psmisc
#!/bin/bash
# 判断nginx进程是否存在,如果不存在则...
 
killall -0 nginx
if [ $? -eq 0 ] ; then
        echo "nginx 服务正常。"
else
        echo "nginx 服务异常。"
fi
  7.脚本开始前判断,不满足则退出脚本。
if [ $# -eq 0 ];then
    echo -e "\033[32m----------------\033[0m"
    echo -e "\033[32m usage:{/usr/bin/sh $0 uesrname}\033[0m"
    exit 7
fi
  8.判断文件、目录是否存在   
#!/bin/bash
# 判断文件、目录是否存在
#########################
 
#判断有文件,则输出“文件存在”
if [ -f /root/test.sh ] ; then
        echo " 文件存在"  #找到文件,执行这里。
        echo "`date`"     #输出命令结果
 
else     
        echo "不存在"    # 没找到,执行这里。
fi
#判断目录是否存在
if [ -d /root/1 ] ;then
        echo " 目录存在"    #找到目录,执行这里。   
else
        echo "不存在"       #没找到,执行这里。
fi
  9.获取top信息 top -n 1  #显示后退出 top  -b    #以文本方式显示 top  -bn 1  #n要写在后面     10.输出纯数字(磁盘使用率) 方法一(awk取整)
[root@v1 ~]# df -h | awk '{print int($5)}'
0
6
0
0
方法二(sed)
df -h | awk 'NR>1 {print $5}' |sed 's/%//g'
0
6
0
0
  11.把一行内容切片,并且换行 [root@localhost tmp]# cat 2.txt 192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,   #原文件内容   使用sed+for循环输出。 [root@localhost tmp]# for i in `sed 's/,/ /g' 2.txt` ; do echo $i ;done 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 写成脚本
#!/bin/bash
#1、通过sed把逗号替换成空格;
#2、通过for循环输出,达到把一行内容切片换行目的。
# author: 此生逍遥
 
FILE=`sed 's/,/ /g'  /tmp/2.txt`
#echo $FILE
 
for i  in $FILE; do
        echo $i
        #echo ""   #输出结果间隔一行
done
  12.判断用户是否存在  
#!/bin/bash
#面试题:编写一个shell,判断系统用户user001,user002,~~~user100是否存在
#########
 
for i in `seq 1 10`; do
        id user$i  &> /dev/null
        if [ $? -eq 0 ] ;then
                echo "账号 user$i 存在"
        else
                echo "账号 user$i 不存在"
        fi
done
  13.文件横向合并
#!/bin/bash
#把a,b两个文件合并成c, 内容a   01|李|2022-01-01     b   01|file/20220101
#c效果  01|李|2022-01-01|01|file/20220101
for i in `seq 1 $(cat a.csv|wc -l )` ; do
    head -$i a.csv |tail -1 >>  $i.csv
    head -$i b.csv |tail -1 >>  $i.csv
    sed 'N;s/\n/|/' $i.csv  >>  c.csv
done
cat c.csv
  14.对系统日志文件进行分组打包
#!/bin/bash
for   i   in  `ls /tmp/`
do
      tar  -czf  2017_log_$i.tgz  $i
done
  15.批量远程复制文件
#!/bin/bash
for i in `seq 100 200`
do
scp -r /tmp/jfedu.txt [email protected].$i:/data/webapps/www
done
  16.磁盘使用率计算 方法一(sed把换行符换成空格)
#!/bin/bash
# 监控磁盘使用率,超过指定使用率后打印出来。
# author:hqq
###########
DISK_USE=`df -h | awk 'NR>1 {print $5}' | awk -F% '{print $1}' | sed  ':a;N;$!ba;s/\n/ /g'`
for i in $DISK_USE;do
    if (( $i > 50  ));then
        echo "disk usage $i% > 50%"
        NUM=$i
        PART=`df -h | grep  -w  $NUM`
        echo "分区信息:$PART"
        echo ""
    fi
done
  方法二(把结果存到一个文件,再for循环)
#!/bin/bash
# 监控磁盘使用率,超过指定使用率后打印出来。
# author:hqq
###########
a=`df -h | awk  'NR>1 {print $5}' | sed 's/\%//g' > 1.txt`
b=50
for i in `cat  1.txt` ;do
    if (( $i > $b ));then
        echo "$i% > $b%"
        NUM=$i
        PART=`df -h | grep  -w  $NUM`
        echo "分区信息:$PART"
        echo ""
    fi
done
  方法三(直接for循环df 切出来的值)
#!/bin/bash
a=`df -h | awk  'NR>1 {print $5}' | sed 's/\%//g' `
b=20
for i in  $a ;do
    if (( $i >= $b ));then
        NUM=$i
        PART=`df -h | grep  -w  $NUM`
        echo "分区信息:$PART"
        echo "$i% >= $b%"                
        echo ""
    fi
done

检查磁盘使用率 for i in $(df -h|awk 'NR>1 {print $5}'|sed 's/%//g');do if [ $i -gt 1 ];then echo $i% ;fi  ;done                                

标签:脚本,do,shell,示例,192.168,echo,sed,done,bash
From: https://www.cnblogs.com/csxy-py/p/16776709.html

相关文章

  • 软件整理:Webshell管理神器
    ​1、“中国菜刀”Webshell管理神器https://share.weiyun.com/Lng1zyzI2、冰蝎Webshell管理神器https://share.weiyun.com/B751jn9o3、哥斯拉Webshell管理神器https://share......
  • shell
    管理整个计算机硬件是内核(kernel)和操作系统。shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它负责接收并解释用户输入的命令后送入内核执行。比如W......
  • 使用clone.pl脚本拷贝原库的软件到新的目的库
    环境:OS:Centos6.9DB:11.2.0.4前提条件:1.新库的ORACLE_HOME、ORACLE_BASE环境变量跟原库保持一致2.新库需要创建好oralce账号和相应的组3.新库安装好相应的系统补丁和环......
  • CentOS7初始化脚本
    #!/bin/bash#CentOS7初始化脚本,需要自行修改部分参数(此脚本适合虚拟机部署使用,业务场景尽量不建议使用)#setipnmcliconnectionmodifyens33ipv4.addresses192.168......
  • CentOS7安装软件个人脚本
    CentOS7安装软件个人脚本1、安装python39mkdir-p/home/python39&&cd/home/python39&&yuminstall-ywgettarzlib-develbzip2-developenssl-develncurses-de......
  • nginx日志定时自动切割shell脚本+crontab定时任务
    vimcat_nginx_log.sh #!/bin/bash#nginx日志文件的存放路径logs_path='/app/openresty/nginx/logs'mv$logs_path/access.log$logs_path/access.$(date+%Y%m%d).log......
  • 备份 MySQL 的 shell 脚本(mysqldump版本) shell脚本
    #!/bin/bash#备份MySQL的shell脚本(mysqldump版本)#定义变量user(数据库用户名),passwd(数据库密码),date(备份的时间标签)#dbname(需要备份的数据库名称,......
  • 检测 MySQL 服务是否存活 shell脚本
    #!/bin/bash#检测MySQL服务是否存活#host为你需要检测的MySQL主机的IP地址,user为MySQL账户名,passwd为密码#这些信息需要根据实际情况修改后方可使......
  • 安装 LAMP 环境(yum 版本) shell脚本
    #!/bin/bash#安装LAMP环境(yum版本)#本脚本适用于RHEL7(RHEL6中数据库为mysql)yummakecache&>/dev/nullnum=$(yumrepolist|awk'/repolist/{print$2......
  • 监控 HTTP 服务器的状态(测试返回码)shell脚本
    #!/bin/bash#监控HTTP服务器的状态(测试返回码)#设置变量,url为你需要检测的目标网站的网址(IP或域名),比如百度url=http://http://183.232.231.172/index.html......