Shell脚本一
一、打印可以能登录的用户
# 找出能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理
user=$(awk -F: '/bash$/{print $1}' /etc/passwd)
for i in $user
do
awk -F: -v x=$i '$1==x{print $1,$2}' /etc/shadow
done
二、统计Linux进程相关数量信息
# 统计 Linux 进程相关数量信息
running=0
sleeping=0
stoped=0
zombie=0
# 在 proc 目录下所有以数字开始的都是当前计算机正在运行的进程的进程 PID
# 每个 PID 编号的目录下记录有该进程相关的信息
for pid in /proc/[1‐9]*
do
procs=$[procs+1]
stat=$(awk '{print $3}' $pid/stat)
# 每个pid 目录下都有一个 stat 文件,该文件的第 3 列是该进程的状态信息 case $stat in
R)
running=$[running+1]
;;
T)
stoped=$[stoped+1]
;;
S)
sleeping=$[sleeping+1]
;;
Z)
zombie=$[zombie+1]
;;
esac
done
echo "进程统计信息如下"
echo "总进程数量为:$procs"
echo "Running 进程数为:$running"
echo "Stoped 进程数为:$stoped"
echo "Sleeping 进程数为:$sleeping"
echo "Zombie 进程数为:$zombie"
三、判断用户输入的数据类型
# 判断用户输入的数据类型(字母、数字或其他)
read -p "请输入一个字符:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "字母"
;;
[0-9])
echo "数字"
;;
*)
echo "空格、功能键或其他控制字符"
esac
四、判断用户输入的是Yes或NO
read -p "Are you sure?[y/n]:" sure
case $sure in
y|Y|Yes|YES)
echo "您的选择是 $sure"
;;
n|N|NO|no)
echo "您的选择是 $sure"
;;
*)
echo "输入有误"
;;
esac
五、判断文件或目录是否存在
# 判断文件或目录是否存在 if [ $# -eq 0 ] ;then
echo "未输入任何参数,请输入参数"
echo "用法:$0 [文件名|目录名]"
fi
if [ -f $1 ];then
echo "该文件,存在"
ls -l $1
else
echo "没有该文件"
fi
if [ -d $1 ];then
echo "该目录,存在"
ls -ld $2
else
echo "没有该目录"
fi
六、打印各种时间格式
# 打印各种时间格式
echo "显示星期简称(如:Sun)"
date +%a
echo "显示星期全称(如:Sunday)"
date +%A
echo "显示月份简称(如:Jan)"
date +%b
echo "显示月份全称(如:January)"
date +%B
echo "显示数字月份(如:12)"
date +%m
echo "显示数字日期(如:01 号)"
date +%d
echo "显示数字年(如:01 号)"
date +%Y
echo "显示年‐月‐日"
date +%F
echo "显示小时(24 小时制)"
date +%H
echo "显示分钟(00..59)"
date +%M
echo "显示秒"
date +%S
echo "显示纳秒"
date +%N
echo "组合显示"
date +"%Y%m%d %H:%M:%S"
七、阶乘
read -p "请输入你想要的阶乘" p
jiecheng=1
for ((i=1;i<=$p;i++))
do
jiecheng=$[jiecheng*i]
done
echo $jiecheng
八、执行开机启动脚本
#下面两个注释不能少
#chkconfig: 35 80 90
#description:开机自动启动的脚本程序
date +%Y >> /yhj/sh/kai.log echo "设置开机自启" >> /yhj/sh/kai.log echo "启动完毕" >> /yhj/sh/kai.log echo "-------------------------------------------------" >> /yhj/sh/kai.log
将写好的lu.sh脚本移动到/etc/init.d/目录下
cp lu.sh /etc/init.d/
#添加到开机启动中 chkconfig --add lu.sh chkconfig lu.sh on