Na stronie podręcznika kill
jest napisane następująco
STRESZCZENIE
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.
Ale jak wiele razy próbowałem zarówno w RH, jak i RHEL, polecenie jak kill -s SIGHUP |-p 123
nigdy nie działało, a błąd jest zawsze zgłaszany
bash: -p: nie znaleziono polecenia
Czy popełniłem jakieś błędy?
shell
kill
man
documentation
użytkownik43312
źródło
źródło
[
]
wsporniki i zastąpionesignal
zSIGHUP
ipid
ze123
? Dlaczego to zrobiłeś? Bo wiesz, że symbole[
,signal
ipid
są meta-syntaktyczna, raczej niż dosłowna. Wskazują, jaka jest składnia. Cóż,|
symbol jest taki sam: inny meta-syntaktyczny wskaźnik składni.[a | b]
oznacza: element opcjonalny składniowym, które mogą byća
albob
(ale nie oba, ponieważ musi to być jeden element).[a | b]
?Odpowiedzi:
Ta składnia na stronie podręcznika oznacza:
Potok (
|
) oznacza (wyłączny) lub w dokumentacji, nie jest częścią polecenia.Kiedy piszesz
w skorupkach, będzie próbować uruchomić
foo
ibar
, a rura wyjściefoo
zbar
programu. (Jest to powłoka, która to robi, a niefoo
(lubbar
),|
nie jest przekazywana do żadnego z procesów.) W twoim przypadku druga część jest-p 123
, więc powłoka próbuje znaleźć plik wykonywalny o nazwie-p
i nie powiedzie się z tym komunikatem o błędzie.źródło
kill -p 123
. To mówibash: kill: p: invalid signal specification
. Ikill -p SIGINT 123
mówi to samo. Nie sądzę, aby było miejsce na umieszczenie sygnału zgodnie ze składnią. Czy masz coś przeciwko, jeśli po prostu zademonstrujesz użycie tej-p
opcji?Myślę, że denerwujesz się faktem, że Bash ma wbudowane polecenie
kill
, a także poleceniekill
.Strona podręcznika, którą czytasz, odnosi się do
kill
polecenia znajdującego się pod/bin
. Przywołaj pełną ścieżkę:Nawiasem mówiąc,
/usr/bin/kill
jest to tylko link do/bin/kill
.źródło