VNC是一个利用端口号允许用户远程登录服务器的客户端程序
开启VNC登录端口的用户会在服务器后台运行用户的主控程序Xvnc的进程
但开启后用户长期不登录进程会一直驻留在后台,因此,写了个脚本批量关闭闲置的Xvnc进程:
一、查看现运行的Xvnc进程
ps ef |grep Xvnc
查看目前在线用户
who
关闭不在线用户的Xvnc进程
vncserver -kill :$端口号
当然,执行该命令前必须切换至开启该端口号的用户下
Talk is cheap:
#!/bin/bash
## To kill the vnc process not using...
ps -ef|grep Xvnc|awk '{print $1 $9}' > userport_map
while read LINE
do
USER=$(echo $LINE | awk -F ':' '{print $1}') #取用户名赋予USER变量
PORT=$(echo $LINE | awk -F ':' '{print $2}') #取相应的端口号赋予PORT变量
w|grep $USER
case $? in #通过上条命令执行结果的返回值来判断该用户是否在线:0——在线;1——不在线
1)
su $USER -c "vncserver -kill :$PORT" #不在线的话,切换至该用户并执行vncserver -kill 命令
echo "killing $USER \'s Xvnc process"
esac
done < userport_map
rm userport_map