为什么'pkill /?' 杀了我的SSH会话?

通过SSH以root身份运行以下命令(bash)之后:

pkill --help pkill -h pkill /? 

前两个命令没有提供任何信息,这就是为什么跑第三(有点本能…)。

接下来发生的事情是,我的服务器的SSH会话closures,它不会重新连接。 我猜测它停止了所有(或大部分)正在运行的进程,包括负责此类进程的守护进程。

我想了解为什么会发生这种情况:我的input的具体评估(分步)是什么,它是什么原因导致的。

我最好的猜测是,它与贝壳评价'?'有关。 字符,这可能转化为一些单字符expression式的列表,这些expression式被传递给pkill,然后closures这些PID。

在CentOS 5.2上,运行man pkill提供的手册页说它会解释/? 作为进程名称或命令行的扩展正则expression式。

所以 ? 意味着以前的caracter可能会或可能不会出现。 既然只有一个其他的angular色,那么,杀死它的每一个进程。

在linux系统上,尝试记住man命令首先获取文档。

运行pgrep /?

这将返回匹配该shell模式的进程的PID。 用相同的参数运行pkill会杀死pgrep /?列出的所有东西pgrep /? 输出。

我认为你正在杀死你自己的会话,以及其他一些进程(在这种情况下,所有的PID)。

/switch1 /switch2的命令行expression式的语法是Windows / DOS的东西。 在Linux以及我知道的所有UNIX上,命令行参数语法是--switch -s/? 被认为是一个正则expression式。 正则expression式/? ,至less就我从grep的手册中可以看出来的,会匹配0或1 / es。 这似乎并没有解释为什么会杀死SSH,但它确实解释了发生了什么。