我有以下问题:许多用户创buildVNC会话之后,他们忘记了他们。 一段时间后,这些会议崩溃,并开始消耗大约100%的权力。 然后有人不得不手动杀死他们。
我的问题是,有没有办法find那些崩溃的会议,并自动杀死他们?
您可以设置一个cron作业,每运行一分钟运行一个基本上运行“ps aux | grep vnc”的脚本,并且对于每个实例,如果proc util超过了某个阈值,则终止该pid。
您可以从xinetd运行VNC会话,当客户端断开连接时,会终止vncserver。 这具有不允许用户closures他们的查看器并稍后重新连接的缺点。
用户是否需要重新连接到会话,或者他们的会话在断开连接时是否结束? 如果他们不需要重新连接,Jeff McCune的答案是一个好方法。 如果他们确实需要重新连接,我会build议search“netstat -an”的输出,以查看正在监听但没有build立连接的任何VNC端口。 那么对于这些端口,你可以grep'ps ax'输出匹配的VNC屏幕号的进程ID,并将其按到列表中。 最后,你将通过列表并杀死那些PID。
我不确定构build一个自动化的解决scheme是否可行,这个解决scheme不必依靠启发式的方法来观察/parsing/ proc和/ sys的各个位。
我/我们在RHEL4上使用RealVNC(Xvnc),免费版本的RealVNC倾向于按照您的描述(我还没有看到商业/付费RealVNC做到这一点)。 看来(我没有什么比轶事支持这个更好的了),对于我们来说,(古代)侏儒/元城与Xvnc之间的互动有时会触发这一点,因为我说服一些用户转用XFCE, t以来一直困扰着这个。
我目前正在做的(快速和肮脏的解决scheme)是通过python查找/ proc / <pid> / exe指向Xvnc二进制文件的过程的魔法,parsing由进程指向fd 2的日志文件以确定用户实际使用会话之后的时间(以及在删除日志文件的情况下,假定进程启动并通知),然后closures几周内未使用的Xvnc进程。
我正在考虑的是做这个更有状态的,偶尔采样/ proc / <pid> / stat来寻找Xvnc进程,这个进程在更长的时间内保持接近壁时间的utime增长,并使用它作为我的启发而不是。
理想情况下,我想find这个的根本原因,但是没有时间(和意志)潜入Xvnc的胆量,目前我只是缓解症状。
离开或停止VNC会话1.要离开您的VNC会话,只需在本地计算机上终止客户端窗口。 这将终止您与VNC服务器的连接,但会使您的VNC服务器会话保持不变,以便以后可以连接到它。
2.要终止您的VNC服务器会话,请login到旋律并发出以下命令:runvnc -kill:xx其中xx是您的显示号码。
3.如果您忘记了您的显示号码(或者检查您可能正在运行多less个VNC服务器会话),请键入ps ax | grep Xvnc命令'ps'将会生成你正在运行的进程列表。 '|' 符号会将ps命令的输出“pipe道化”到“grep”命令,该命令将search并显示包含expression式“Xvnc”的那些行。 在这些行上,你会看到Xvnc后跟:x,其中x是你的显示号码。 Xvnc是运行VNC服务器会话的unix进程。 现在你有了显示号码,你可以杀掉你的Xvnc会话或者从你的VNC客户端连接到它。
你可以进一步缩小Xvnc进程的名单,只显示你的名字
ps ax | grep Xvnc | grep的
你的loginID在哪里?