Di halaman manualnya kill
tertulis sebagai berikut
RINGKASAN
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.
Tetapi ketika saya mencoba berkali-kali di kedua RH dan RHEL, perintah seperti kill -s SIGHUP |-p 123
tidak pernah bekerja dan kesalahan selalu dilaporkan
bash: -p: perintah tidak ditemukan
Apakah saya melakukan kesalahan?
shell
kill
man
documentation
pengguna43312
sumber
sumber
[
]
tanda kurung, dan digantisignal
denganSIGHUP
danpid
dengan123
? Kenapa kau melakukan itu? Karena Anda tahu bahwa simbol[
,signal
danpid
meta-sintaksis, daripada literal. Mereka menunjukkan apa itu sintaks. Nah,|
simbol adalah hal yang sama: indikator meta-sintaksis lain sintaks.[a | b]
berarti: item sintaksis opsional, yang dapat berupa salah satua
ataub
(tetapi tidak keduanya karena item tersebut harus satu).[a | b]
?Jawaban:
Sintaks ini dalam halaman manual berarti:
Pipa (
|
) adalah singkatan (eksklusif) atau dalam dokumentasi, itu bukan bagian dari perintah.Saat Anda mengetik
di shell Anda, ia akan mencoba untuk memulai
foo
danbar
, dan menyalurkan outputfoo
kebar
program. (Itulah shell yang melakukan itu, bukanfoo
(ataubar
),|
itu tidak diteruskan ke salah satu proses.) Dalam kasus Anda, bagian kedua adalah-p 123
, jadi shell mencoba menemukan executable yang dipanggil-p
dan gagal dengan pesan kesalahan itu.sumber
kill -p 123
. Dikatakanbash: kill: p: invalid signal specification
. Dankill -p SIGINT 123
mengatakan hal yang sama. Saya tidak berpikir ada tempat untuk meletakkan sinyal sesuai dengan sintaks. Apakah Anda keberatan jika Anda hanya mendemonstrasikan penggunaan-p
opsi tersebut?Saya pikir Anda tersandung pada kenyataan bahwa ada perintah builtin untuk Bash dipanggil
kill
, bersama dengan perintahkill
.Halaman manual yang Anda baca mengacu pada
kill
perintah yang berada di bawah/bin
. Gunakan jalur lengkap untuk memanggilnya:Kebetulan
/usr/bin/kill
itu hanya tautan ke/bin/kill
.sumber