我试图在Ubuntu上使用以下命令重新启动SSH:
sudo /etc/init.d/ssh restart
但这只是给了我:
使用service(8)工具,例如service ssh restart,而不是通过/etc/init.d调用init脚本
然而,运行,给出:
重启:未知实例:
运行:
ps -A | grep ssh
给3个实例。
题
我怎么知道哪个是我的实例,并杀死其他人? 这将允许我重新启动吗?
有人可以帮我吗?
调用init.d脚本仍然应该重新启动服务:
dermot@porkboy:~$ sudo /etc/init.d/ssh restart [sudo] password for dermot: Rather than invoking init scripts through /etc/init.d, use the service(8) utility, eg service ssh restart Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the stop(8) and then start(8) utilities, eg stop ssh ; start ssh. The restart(8) utility is also available. ssh stop/waiting ssh start/running, process 4877 dermot@porkboy:~$
'service ssh restart'在这里正常工作(11.04)。 值得注意的是,重新启动sshd 不会终止现有的SSH会话 。 当你通过SSHlogin到一个盒子时,sshd衍生出新的进程来处理会话。 重新启动sshd会终止主sshd守护进程(并且明显地启动它),但保留sshd的其他生成的实例不变。 你需要这种行为,因为当你在遥远的数据中心使用无头服务器时,它会使生活变得更加简单!
现在,回答你的问题的其余部分。 而不是运行'ps -A',试试这个:
dermot@porkboy:~$ ps -ef | grep ssh root 2522 1 0 Aug29 ? 00:00:00 sshd: dermot [priv] dermot 2615 2522 0 Aug29 ? 00:00:04 sshd: dermot@pts/0 root 4655 1 0 10:52 ? 00:00:00 sshd: dermot [priv] dermot 4756 4655 0 10:52 ? 00:00:00 sshd: dermot@pts/1 root 4887 1 0 10:55 ? 00:00:00 /usr/sbin/sshd -D
这可能是你看到的三个sshd进程 – 一个用于主sshd守护进程,然后是每个进程两个(root父进程,dermotsubprocess)。 我从两个地方SSH进来,我有五个进程。 pts / X位与会话连接的虚拟terminal有关
dermot@porkboy:~$ who dermot pts/0 2011-08-29 21:32 (williams-mb.local) dermot pts/1 2011-08-30 10:52 (192.168.253.109)
给我们一些想法哪个会话是哪个。 所以如果我想从我的MacBook杀死会话,我会'杀死-9 2522'。
当你重新启动SSH守护进程
sudo /etc/init.d/ssh restart
要么
service ssh restart
侦听守护进程重新启动新的configuration选项(我认为,你重新启动新的configuration生效)。 已经打开的所有会话都以旧configuration继续运行。 要了解哪些ssh会话是你的,请尝试执行:
ps -ef | egrep '(ssh|PID)'
您将得到一个带有PPID 1和UID root的 / usr / sbin / sshd 。 这是监听守护进程。 所有其他sshd:user @ pts / 0logging是用户会话。 通过用户名查找适当的会话并终止该会话。
我会build议在GNU屏幕会话中做所有这些,所以如果你犯了一个错误,你将能够重新连接并重新连接这个屏幕会话。
或者我不明白这个问题。