1、编写脚本实现传入进程PID,查看对应进程/proc下CPU、内存指标。
1 #!/bin/bash 2 read -p "Input PID Value: " pid #读取PID进程号 3 pid_exist=`ps aux|awk '{print $2}'|grep -w $pid` #定义一个字符串,通过grep命令,显示当前查找所有用户所有程序并打印出来 4 if [ ! $pid_exist ];then #如果pid不存在,然后 5 echo "$pid is not exist!!" #输出pid is not exist!! 6 else #否则 7 echo "Memory Usage :" #输出内存使用情况 8 cat /proc/$pid/status | grep ^Vm #通过grep命令进行精确查找用cat命令查看到/proc下pid进程物理内存使用状态 9 echo "Cpu Usage : " #输出CPU使用情况 10 echo " PID LWP CPU% :" #输出PID LWP CPU%情况 11 ps -eLo pid,lwp,pcpu | grep $pid #使用grep命令筛选出用ps -eLo命令查看到的pid进程的pid,lwp,pcpu信息 12 fi #结束
关于/proc/$PID/status中的各种参数表示意义,见此文章
2、编写脚本实现每分钟检查一个主机端口是否存活(提示使用nmap),如果检查到的端口不在线,sleep 10s,如果三次都不存在,记录到日志。
1 #!/bin/bash 2 var1=`nmap 118.24.208.144` #定义var1为一个主机IP 3 var2=`nmap 118.24.208.144 | grep ^[0-9] | awk '{print $2}'| wc -l` #定义var2为一个主机IP,使用grep查看端口号,然后通过awk命令筛选第二列关键字,用wc命令统计数量 4 for i in {1..3}; do #定义尝试次数i为1-3;然后 5 echo 'Execute '$i' times' #输出Execute 次数 时间 6 if [ $var2 -eq 0 ];then #如果var2等于0,那么 7 sleep 1s #休眠1秒 8 else #否则 9 echo $var1 >> nmap.log #输出var1参数至nmap.log 10 fi # 11 done #脚本完成
3、编写脚本/root/bin/excute.sh ,判断参数文件是3否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
1 #!/bin/bash 2 read -p "Please input a filename: " file #使用read命令,接收来自键盘输入的file参数 3 if [[ $file =~ .*sh$ ]] ; then #如果file文件名为.sh结束的文件,然后 4 if [ -f $file ] ; then #-f 表示忽略不存在的文件,然后 5 chmod a+x $file #文件存在,则给文件加x权限 6 echo "success" #输出success 7 fi # 8 else #否则 9 echo '非脚本文件' #输出非脚本文件 10 fi #
4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统
login.sh
1 #!/bin/bash 2 [ -f /date/nologin ] && (rm -f /data/nologin;echo " delete /data/nologin success") || echo "already can access"
nolog.sh
1 #!/bin/bash 2 [ -f /data/nologin ] && echo "already can not access"||(touch /data/nologin $$echo "create /data/nologin success")
5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和
1 #!/bin/bash 2 var1=`cat /etc/passwd | head -n10 | tail -n1 | cut -d: -f3` #定义var1为/etc/passwd文件第10行的第三列字符串的值 3 var2=`cat /etc/passwd | head -n20 | tail -n1 | cut -d: -f3` #定义var2为/etc/passwd文件第20行的第三列字符串的值 4 let var3=var1+var2 #使用let命令计算var1+var2=var3的值 5 echo "sumid: $var3" #输出sumid的结果
来源:https://www.cnblogs.com/061713xlhj/p/10809094.html