在Linux中,可以通过各种方式自动执行系统管理员任务。
它大大减少了人力,并节省了可用于其他生产任务的合理时间。
Shell脚本是使常规作业自动化的方法之一。
对于方案,您要运行每周作业或EOD作业以填充一些数据以用于报告目的。
为此,您必须在开始作业之前终止当前正在访问系统上的应用程序的所有ssh会话。
请参考下面的文章,该文章过去是为了杀死Linux上的特定用户会话而写的。
下面的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
如何排除系统上的少数用户
如果要排除系统中的任何用户,请使用以下脚本。
在此示例中,“ 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
结论
本文简要介绍了如何使用Shell脚本杀死所有用户以及排除几个用户会话。