In der Manpage kill
steht wie folgt geschrieben
ZUSAMMENFASSUNG
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.
Aber da ich es sowohl in RH als auch in RHEL oft versucht habe, hat der Befehl wie kill -s SIGHUP |-p 123
nie funktioniert und es wird immer ein Fehler gemeldet
bash: -p: Befehl nicht gefunden
Habe ich Fehler gemacht?
shell
kill
man
documentation
user43312
quelle
quelle
[
]
Klammern und ersetztsignal
mitSIGHUP
undpid
mit123
? Warum hast du das getan? Weil Sie wissen , dass die Symbole[
,signal
undpid
sind Meta-syntaktische, anstatt wörtlich zu nehmen . Sie geben die Syntax an. Nun, das|
Symbol ist dasselbe: ein weiterer metasyntaktischer Indikator für die Syntax.[a | b]
bedeutet: optionales syntaktisches Element, das entwedera
oder sein kannb
(aber nicht beide, da es ein Element sein muss).[a | b]
?Antworten:
Diese Syntax in einer Handbuchseite bedeutet:
Die Pipe (
|
) steht für (exklusiv) oder ist in der Dokumentation nicht Teil des Befehls.Wenn Sie tippen
In Ihrer Shell wird versucht, die Ausgabe von zu starten
foo
und an das Programm weiterzuleiten. (Das ist die Shell, die das tut, nicht (oder ), die wird an keinen der Prozesse übergeben.) In Ihrem Fall ist der zweite Teil , also versucht die Shell, eine aufgerufene ausführbare Datei zu finden, und schlägt mit dieser Fehlermeldung fehl.bar
foo
bar
foo
bar
|
-p 123
-p
quelle
kill -p 123
. Es heißtbash: kill: p: invalid signal specification
. Undkill -p SIGINT 123
sagt das Gleiche. Ich glaube nicht, dass es Platz gibt, um das Signal gemäß der Syntax zu setzen. Stört es Sie, wenn Sie nur die Verwendung der-p
Option demonstrieren ?Ich denke, Sie werden über die Tatsache gestolpert, dass es einen eingebauten Befehl für Bash gibt
kill
, der zusammen mit dem Befehl aufgerufen wirdkill
.Die Manpage, die Sie lesen, bezieht sich auf den
kill
Befehl unter/bin
. Verwenden Sie den vollständigen Pfad, um ihn zu beschwören:Das ist übrigens
/usr/bin/kill
nur ein Link zu/bin/kill
.quelle