В справочной странице kill
написано следующее
СИНТАКСИС
kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals.
Но, как я много раз пробовал и в RH, и в RHEL, команда like kill -s SIGHUP |-p 123
никогда не работала, и всегда сообщалось об ошибке
bash: -p: команда не найдена
Я сделал какие-нибудь ошибки?
shell
kill
man
documentation
user43312
источник
источник
[
]
скобки, и заменитьsignal
сSIGHUP
иpid
с123
? Почему ты это сделал? Потому что вы знаете , что символы[
,signal
иpid
являются мета-синтаксический, а не буквально. Они указывают, что такое синтаксис. Ну,|
символ это то же самое: еще один метасинтаксический индикатор синтаксиса.[a | b]
означает: необязательный синтаксический элемент, который может быть однимa
илиb
(но не обоими, поскольку это должен быть один элемент).[a | b]
?Ответы:
Этот синтаксис на странице руководства означает:
Трубка (
|
) обозначает (эксклюзив) или в документации она не является частью команды.Когда вы печатаете
в вашей оболочке, она будет пытаться начать
foo
иbar
, и трубу выходаfoo
кbar
программе. (Это делает оболочка, а неfoo
(илиbar
), и|
не передается ни одному из процессов.) В вашем случае вторая часть такова-p 123
, поэтому оболочка пытается найти вызываемый исполняемый файл-p
и завершается с этим сообщением об ошибке.источник
kill -p 123
. Это говоритbash: kill: p: invalid signal specification
. Иkill -p SIGINT 123
говорит то же самое. Я не думаю, что есть место для размещения сигнала в соответствии с синтаксисом. Вы не возражаете, если вы просто продемонстрируете использование этой-p
опции?Я думаю, вы сбиты с толку тем фактом, что в Bash есть встроенная команда
kill
вместе с командойkill
.Страница man, которую вы читаете, ссылается на
kill
команду, расположенную под/bin
. Используйте полный путь, чтобы вызвать его:Между прочим,
/usr/bin/kill
это просто ссылка на/bin/kill
.источник