Na página do manual kill
está escrito da seguinte maneira
SINOPSE
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.
Mas, como tentei várias vezes no RH e no RHEL, comandos como kill -s SIGHUP |-p 123
nunca funcionaram e um erro é sempre relatado
bash: -p: comando não encontrado
Eu cometi algum erro?
shell
kill
man
documentation
user43312
fonte
fonte
[
]
colchetes e substituiusignal
porSIGHUP
epid
com123
? Porque você fez isso? Porque você sabe que os símbolos[
,signal
epid
são meta-sintática, e não literal. Eles indicam qual é a sintaxe. Bem, o|
símbolo é a mesma coisa: outro indicador meta-sintático da sintaxe.[a | b]
significa: item sintático opcional, que pode ser uma
oub
(mas não ambos, pois deve ser um item).[a | b]
?Respostas:
Essa sintaxe em uma página de manual significa:
O pipe (
|
) significa (exclusivo) ou na documentação, não faz parte do comando.Quando você digita
na sua concha, ele tentará iniciar
foo
ebar
, e canalizar a saída defoo
aobar
programa. (É o shell que faz isso, não éfoo
(oubar
),|
não é passado para nenhum dos processos.) No seu caso, a segunda parte é-p 123
, portanto, o shell tenta encontrar um executável chamado-p
e falha com essa mensagem de erro.fonte
kill -p 123
. Dizbash: kill: p: invalid signal specification
. Ekill -p SIGINT 123
diz a mesma coisa. Acho que não há lugar para colocar o sinal de acordo com a sintaxe. Você se importa se você apenas der uma demonstração do uso da-p
opção?Acho que você está tropeçando no fato de que existe um comando interno para o Bash chamado
kill
, junto com o comandokill
.A página de manual que você está lendo se refere ao
kill
comando localizado em/bin
. Use o caminho completo para evocá-lo:Aliás, o
/usr/bin/kill
é apenas um link para/bin/kill
.fonte