После выполнения следующих команд (bash) от имени пользователя root через SSH:
pkill --help
pkill -h
pkill /?
Первые две команды не предоставили мне никакой информации, поэтому запустила третью (как бы инстинктивно ...).
Далее произошло то, что мой сеанс SSH с сервером закрылся, и он не смог подключиться повторно. Я предполагаю, что он остановил все (или большую часть) запущенных процессов, включая демона, отвечающего за такие сеансы.
Я бы хотел понять Зачем это произошло: какова точная оценка (пошаговая) моего вклада и к чему это привело.
Я предполагаю, что это как-то связано с оценкой оболочки '?' символ, который, вероятно, преобразовался в список из нескольких односимвольных выражений, которые были переданы в pkill, который, в свою очередь, закрыл эти PID.
В CentOS 5.2 страница руководства предоставляется при запуске man pkill
говорит, что интерпретирует /? как расширенное регулярное выражение для имен процессов или командных строк.
Так что ? означает, что предыдущий символ может появиться, а может и не появиться. Поскольку был только один другой символ, /, то pkill убивал все процессы, которые мог.
В системах Linux постарайтесь запомнить команду man, чтобы сначала получить документацию.
Бегать pgrep /?
...
Это вернет PID процессов, соответствующих этому шаблону оболочки. Бег pkill
с тем же параметром убьет все перечисленное в pgrep /?
вывод.
Я думаю, что вы убивали свою собственную сессию, а также ряд других процессов (в данном случае все PID).
Синтаксис выражений командной строки /switch1 /switch2
это вещь Windows / DOS. В Linux и всех известных мне UNIX синтаксис аргументов командной строки --switch -s
. /?
рассматривается как регулярное выражение. Регулярное выражение /?
, по крайней мере, насколько я могу судить по grep
страница руководства, будет соответствовать 0 или 1 /
es. Это, кажется, не объясняет, почему это убило SSH, но объясняет, что произошло.