在bash作为默认shell的Linux系统上,我想用下列条件configuration自动注销:
top控制台会话也会被注销 目的是确保无论是通过VGA还是通过远程KVM或串口进行的控制台会话都不会被意外login。 我想确保我们的网站。
由于第二个项目符号, TMOUT环境variables并不完全满足我的需求。
我可以制定一个快速的解决scheme来杀死某个年龄段的login进程,但这似乎很脆弱,容易产生副作用。 我可以寻找shell的/proc/$PID/fd/0链接到/dev/tty* 。
不过,这似乎是一个必须已经解决的问题。 任何指针如何实现这一点非常感谢。
你可以在crontab中运行这个脚本来每隔几分钟清除除ssh以外的会话:
pkill -t $(ps aho tty,command | egrep -v ssh | cut -d" " -f1 |sort |uniq | paste -sd",")
ps aho tty,command会列出procceses和他们的TTY。
egrep -v ssh会从列表中删除ssh会话。
cut -d" " -f1将只selectps的TTY部分。
sort和uniq会删除重复。
paste -sd","将使逗号forms的列表兼容与pkill命令运行。
pkill -t TTY会杀死TTY拥有的进程