翼度科技»论坛 云主机 LINUX 查看内容

分享几个常用的运维 shell 脚本

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
今天咸鱼给大家分享几个不错的 Linux 运维脚本,这些脚本中大量使用了 Linux 的文本三剑客:
1. awk
2. grep
3. sed
 
建议大家这三个工具都要了解并最好能够较为熟练的使用
 
根据 PID 显示进程所有信息
 
 根据用户输入的 PID,过滤出该 PID 所有的信息
 

 
 
 
  1. #! /bin/bash
  2. read -p "请输入要查询的PID: " P
  3. n=`ps -aux| awk '$2~/^'${P}'$/{print $0}'|wc -l`
  4. if [ $n -eq 0 ];then
  5. echo "该PID不存在!!"
  6. exit
  7. fi
  8. echo -e "\e[32m--------------------------------\e[0m"
  9. echo "进程PID: ${P}"
  10. echo "进程命令:$(ps -aux| awk '$2~/^'$P'$/{for (i=11;i<=NF;i++) printf("%s ",$i)}')"
  11. echo "进程所属用户: $(ps -aux| awk '$2~/^'$P'$/{print $1}')"
  12. echo "CPU占用率:$(ps -aux| awk '$2~/^'$P'$/{print $3}')%"
  13. echo "内存占用率:$(ps -aux| awk '$2~/^'$P'$/{print $4}')%"
  14. echo "进程开始运行的时间:$(ps -aux| awk '$2~/^'$P'$/{print $9}')"
  15. echo "进程运行的时间:$(ps -aux| awk '$2~/^'$P'$/{print $10}')"
  16. echo "进程状态:$(ps -aux| awk '$2~/^'$P'$/{print $8}')"
  17. echo "进程虚拟内存:$(ps -aux| awk '$2~/^'$P'$/{print $5}')"
  18. echo "进程共享内存:$(ps -aux| awk '$2~/^'$P'$/{print $6}')"
  19. echo -e "\e[32m--------------------------------\e[0m"
复制代码
 
PS:下面例子里我检测的是 22 端口

 
 
显示系统性能
 

 
 
 
  1. #! /bin/bash
  2. read -p "请输入要查询的进程名:" NAME
  3. N=`ps -aux | grep $NAME | grep -v grep | wc -l` ##统计进程总数
  4. if [ $N -le 0 ];then
  5.   echo "该进程名没有运行!"
  6. fi
  7. i=1
  8. while [ $N -gt 0 ]
  9. do
  10.   echo -e "\e[32m***************************************************************\e[0m"
  11.   echo "进程PID: $(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $2}')"
  12.   echo "进程命令:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{for (j=11;j<=NF;j++) printf("%s ",$j)}')"
  13.   echo "进程所属用户: $(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $1}')"
  14.   echo "CPU占用率:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $3}')%"
  15.   echo "内存占用率:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $4}')%"
  16.   echo "进程开始运行的时间:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $9}')"
  17.   echo "进程运行的时间:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $10}')"
  18.   echo "进程状态:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $8}')"
  19.   echo "进程虚拟内存:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $5}')"
  20.   echo "进程共享内存:$(ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $6}')"
  21.   echo -e "\e[32m***************************************************************\e[0m"
  22.   let N-- i++
  23. done
复制代码
 

 
 
文件不安全的权限检查
 

 
 
  1. #! /bin/bash
  2. read -p "请输入要查询的用户名:" name
  3. echo "------------------------------"
  4. n=`cat /etc/passwd | awk -F: '$1~/^'${name}'$/{print}' | wc -l`
  5. if [ $n -eq 0 ];then
  6. echo -e "\e[31m该用户不存在!\e[0m"
  7. echo "------------------------------"
  8. else
  9.   echo "该用户的用户名:${name}"
  10.   echo "该用户的UID:$(cat /etc/passwd | awk -F: '$1~/^'${name}'$/{print}'|awk -F: '{print $3}')"
  11.   echo "该用户的组为:$(id ${name} | awk {'print $3'})"
  12.   echo "该用户的GID为:$(cat /etc/passwd | awk -F: '$1~/^'${name}'$/{print}'|awk -F: '{print $4}')"
  13.   echo "该用户的家目录为:$(cat /etc/passwd | awk -F: '$1~/^'${name}'$/{print}'|awk -F: '{print $6}')"
  14.   Login=$(cat /etc/passwd | awk -F: '$1~/^'${name}'$/{print}'|awk -F: '{print $7}')
  15.   if [ ${Login} == "/bin/bash" ];then
  16.   echo -e "\e[32m该用户有登录系统的权限\e[0m"
  17.   echo "------------------------------"
  18.   elif [ ${Login} == "/sbin/nologin" ];then
  19.   echo -e "\e[31m该用户没有登录系统的权限!\e[0m"
  20.   echo "------------------------------"
  21.   fi
  22. fi
复制代码
 
 
感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力
 

来源:https://www.cnblogs.com/edisonfish/p/17202172.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具