在使用bash作为默认
shell的
Linux系统上,我想使用以下条件配置自动注销:
>在指定的时间段后注销控制台会话(VGA,串行,远程KVM等)
>即使在运行“非空闲”进程(如top)时,也会注销控制台会话
> SSH会话不会以这种方式注销
目的是确保无论是通过VGA还是远程KVM或串行,都不会意外登录控制台会话.我希望在我们的网站上确保这一点.
由于第二个项目符号,TMOUT环境变量并不能完全满足我的需求.
我可以找到一个快速的解决方案来杀死某个年龄段的登录过程,但这似乎很脆弱,容易产生副作用.我可以查找/ proc / $PID / fd / 0链接到/ dev / tty *的shell.
这似乎是一个必须已经解决的问题.关于如何实现这一点的任何指示都非常感谢.
解决方法
您可以在crontab中运行此脚本,以便每隔几分钟消除除ssh之外的会话:
pkill -t $(ps aho tty,command | egrep -v ssh | cut -d" " -f1 |sort |uniq | paste -sd",")
ps aho tty,命令会列出procceses及其TTY.
egrep -v ssh将从列表中删除ssh会话.
cut -d“” – f1只会选择ps的TTY部分.
排序& uniq会删除重复项.
paste -sd“,”会使逗号形成的列表与pkill命令一起运行.
pkill -t TTY
would kill the proccess owned by TTY
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。