Shell基础-3

Tutorial: Shell基础 Category: Shell Published: 2026-04-07 13:58:25 Views: 23 Likes: 0 Comments: 0

Shell 基础-3

  1. 统计当前 Linux 系统中可以登录计算机的账户有多少个
#!/bin/bash

# 方法1:
grep "bash
quot;
/etc/passwd | wc -l # 方法2 awk -F: '/bash$/{x++}END{print x}' /etc/passwd
  1. 统计目录下的文件
#!/bin/bash

sum=0
cd /var/log
for i in $(ls -r *); do
    if [ -f $i ]; then
        let sum++
        echo "文件名:$i"

    fi
done
echo "总文件数量为:$sum"

  1. 批量添加解释器
#!/bin/bash

if ! grep -q "^#!" $1; then #带参数
    sed -i '1i #!/bin/bash' $1
fi

  1. nginx 启动脚本
#!/bin/bash
# 本脚本编写完成后,放置在/etc/init.d/目录下, 就可以被 Linux 系统自动识别到该脚本

program=/usr/local/nginx/sbin/nginx
pid=/usr/local/nginx/logs/nginx.pid

start() {
    if [ -f $pid ]; then
        echo "nginx 服务已经处于开启状态"
    else
        $program #启动
    fi
}

stop() {
    if [ -! -f $pid ]; then
        echo "nginx 服务已经关闭"
    else
        $program -s stop
        echo "关闭服务 ok"
    fi
}

status() {
    if [ -f $pid ]; then
        echo "服务正在运行..."
    else
        echo "服务已经关闭"
    fi
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    sleep 1
    start
    ;;
status)
    status
    ;;
*)
    echo "你输入的语法格式错误"
    ;;
esac

  1. 磁盘分区格式化挂载
#!/bin/bash

# 对虚拟机的 vdb 磁盘进行分区格式化,使用<<将需要的分区指令导入给程序 fdisk
# n(新建分区)
# p(创建主分区)
# 1(分区编号为 1),两个空白行(两个回车,相当于将整个磁盘分一个区)
# 注意:1 后面的两个回车(空白行)是必须的!

fdisk /dev/vdb <<EOF
n
p
1


wq
EOF

# 格式化刚刚创建好的分区
mkfs.xfs /dev/vdb1

# 创建挂载点目录
if [ -e /data ]; then
    exit
fi

mkdir /data
# 自动挂载刚刚创建的分区,并设置开机自动挂载该分区
echo '/dev/vdb1 /data xfs defaults 0 0' >>/etc/fstab
mount -a