本文介绍使用Shell脚本结束Linux系统上的所有用户会话的方法,也可以实现先排除Linux系统上的某些用户再执行本脚本,即可自定义特定用户自动执行本脚本,其它用户则不会执行。
前言 使用Shell脚本就可以在开始作业之前终止当前正在访问系统上的应用程序的所有ssh会话,可先参考使用pkill、Killall和Kill命令在Linux上终止用户会话一文。
Shell脚本及其使用方法 以下是Shell脚本,该脚本获取用户会话的tty值,并使用pkill命令将其结束: $ sudo vi /opt/script/kill-user-sessions.sh #!/bin/bash usession=$(w | awk '{if (NR!=1) {print $2 }}' | tail -n +2) for i in $usession do pkill -9 -t $i done 为“kill-user-sessions.sh”文件设置可执行权限: $ sudo chmod +x /opt/script/kill-user-sessions.sh 最后添加一个cronjob以使其自动化,它每天凌晨3点运行,也可以自定义它的运行时间: $ sudo crontab -e 0 3 * * * /bin/bash /opt/script/kill-user-sessions.sh 如果要单行手动执行上述脚本,请使用第一个命令: $ sudo for i in $(w | awk '{if (NR!=1) {print $2 }}' | tail -n +2); do pkill -9 -t $i; done
可以排除Linux系统上的某些用户,Shell脚本仍然可以结束Linux系统上的所有用户会话 如果要排除系统上的任何用户,请使用以下脚本,我将排除“root”和“ansible”用户,但是您可以替换要排除的用户名: $ sudo vi /opt/script/kill-user-sessions-1.sh #!/bin/bash usession=$(w | grep -v "root|ansible" | awk '{if (NR!=1) {print $2 }}' | tail -n +2) for i in $usession do pkill -9 -t $i done 为“kill-user-sessions-1.sh”文件设置可执行权限: $ sudo chmod +x /opt/script/kill-user-sessions-1.sh 最后添加一个cronjob以使其自动化,它每天凌晨3点运行: $ sudo crontab -e 0 3 * * * /bin/bash /opt/script/kill-user-sessions-1.sh 如果要单行手动执行上述脚本,请使用第一个命令: $ sudo for i in $(w | grep -v "root" | awk '{if (NR!=1) {print $2 }}' | tail -n +2); do pkill -9 -t $i; done
相关主题 |