云网牛站
所在位置:首页 > Linux编程 > 使用Shell脚本结束Linux系统上的所有用户会话

使用Shell脚本结束Linux系统上的所有用户会话

2021-01-18 10:30:40作者:力源稿源:云网牛站

本文介绍使用Shell脚本结束Linux系统上的所有用户会话的方法,也可以实现先排除Linux系统上的某些用户再执行本脚本,即可自定义特定用户自动执行本脚本,其它用户则不会执行。

使用Shell脚本结束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

 

相关主题

pkill命令_Linux pkill命令使用详解:可以按照进程名杀死进程

精选文章
热门文章