我遇到了问题,我有用户login到客户帐户下的服务器,以该用户打开屏幕会话,然后从不closures它。 通常这不是一个问题,但是我们遇到了一个问题,即如果客户在服务器上删除他们的用户帐户,并且在他们的用户名下使用活动的屏幕会话,屏幕会话就处于空闲状态。 虽然这还不算什么问题,但是这个丛集中还有另一个步骤。
如果先前驻留在服务器上的客户端(该服务器的旧屏幕会话仍处于活动状态)被迁移回服务器屏幕,则拒绝启动,因为/var/run/screen/S-username仍然存在,并由旧UID拥有,并且[用新的UID打屁股]的用户不允许触摸其指定目录中的任何这些文件。
我试过了:
/var/run/screen/S-username 。 screen参数的组合,让我优雅地杀掉这些会话,但是屏幕并不想让我触摸当前用户的会话,即使我以root身份login。 sudo -u '#uid' screen -r但sudo不会让你做任何事情,如果你指定一个sudo -u '#uid' screen -r UID。 如何让屏幕正常closures,并在用户不存在时清除所有文件?
如果你将它们closures并且确实只想要一种方法来处理坐在/ var / run / screen中的无主套接字,那么我只需使用带-nouser标志的find来设置一个cron作业来清理旧的文件:
# touch owned notowned && chown 12345:54321 notowned # ls -l total 0 -rw-r--r-- 1 12345 54321 0 Sep 27 21:59 notowned -rw-r--r-- 1 root root 0 Sep 27 21:59 owned # find . -nouser ./notowned #
screen -wipe做你想要的东西吗? 它适用于删除不存在的屏幕进程。
# screen --help |grep wipe -wipe Do nothing, just clean up SockDir.