LINUX.ORG.RU
ФорумTalks

Посоны, нашёл баг в команде kill

 


0

2

Следую ману:

✘ kek@archlinux  ~  kill -l
HUP INT QUIT ILL TRAP IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

тут верно, краткая таблица. А вот если хочу с кодами, то большая -L

-L, --table

Similar to -l, but it will print signal names and their corresponding numbers.
 ✘ kek@archlinux  ~  kill -L
kill: unknown signal: SIGL
kill: type kill -l for a list of signals

Не готов!

Ответ на: комментарий от SpaceRanger

Кстати, я использую Арч.

Нет, не используешь:

~ $ /usr/bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     6 IOT      7 BUS      8 FPE      9 KILL    
10 USR1    11 SEGV    12 USR2    13 PIPE    14 ALRM    15 TERM    16 STKFLT  17 CHLD    17 CLD     18 CONT    
19 STOP    20 TSTP    21 TTIN    22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH   
29 IO      29 POLL    30 PWR     31 SYS     34 RTMIN   64 RTMAX   
~ $ pacman -Qo /usr/bin/kill
/usr/bin/kill принадлежит util-linux 2.40.1-1

ratvier ★★
()

Не в курсе kill, но в свое время пришлось nslookup из freebsd портировать. Что характерно, его так и не пофиксили и запилили какой-то dig

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 2)
Ответ на: комментарий от CrX

Добавлю, что отменить использование kill, встроенного в zsh, можно с помощью disable kill (аналогично для любых других builtin-команд), прописанного в ~/.zshrc, или где там у тебя конфиг.

Тогда будет использоваться системный, от которого man, в котором ты про -L вычитал.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от SpaceRanger
 △ ~ which kill
kill: shell built-in command
 ▲ ~ kill -L
kill: unknown signal: SIGL
kill: type kill -l for a list of signals
 △ ~ which -p kill
/run/current-system/sw/bin/kill
 ▲ ~ /run/current-system/sw/bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     6 IOT     
 7 BUS      8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE    
14 ALRM    15 TERM    16 STKFLT  17 CHLD    17 CLD     18 CONT    19 STOP    
20 TSTP    21 TTIN    22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  
27 PROF    28 WINCH   29 IO      29 POLL    30 PWR     31 SYS     34 RTMIN   
64 RTMAX  

Но вообще да, от этих алиасов сложнее избавиться чем в них пользы. Особенно когда скрипты пишешь, которые будут запускаться хз каким шеллом на самом деле.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
$ kill -L
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

Готов!

skiminok1986 ★★★★★
()
Ответ на: комментарий от skiminok1986

Так а баш тоже не готов получается?

$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

$ kill -L
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

$ /usr/bin/kill -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM
TERM STKFLT CHLD CLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF
WINCH IO POLL PWR SYS RT<N> RTMIN+<N> RTMAX-<N>

$ /usr/bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     6 IOT      7 BUS      8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE    
14 ALRM    15 TERM    16 STKFLT  17 CHLD    17 CLD     18 CONT    19 STOP    20 TSTP    21 TTIN    22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  
27 PROF    28 WINCH   29 IO      29 POLL    30 PWR     31 SYS     34 RTMIN   64 RTMAX   
u5er ★★
()
Ответ на: комментарий от firkax

Всмысле? #!/bin/sh в начале не пишешь?

Это может оказаться симлинком на йухню какую-нибудь. Хотя и редко…

her_s_gory
()
which kill
/usr/bin/kill
/usr/bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     7 BUS
 8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE    14 ALRM
15 TERM    16 STKFLT  17 CHLD    18 CONT    19 STOP    20 TSTP    21 TTIN
22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH
29 POLL    30 PWR     31 SYS

Дебиан 12

hateWin ★☆
()
Ответ на: комментарий от firkax

Как раз-таки в этом случае, будет выполняться хз каким шеллом :)

$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 мар 13 22:01 /bin/sh -> dash
u5er ★★
()
Ответ на: комментарий от u5er

Всегда бесила в дебиане эта хрень

П.С. если раньше можно было выпилить и вернуть нормальный шел, то теперь даш прибит гвоздями крепко.

utanho ★★★★★
()
Последнее исправление: utanho (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Особенно когда скрипты пишешь, которые будут запускаться хз каким шеллом на самом деле.

А ты пиши на POSIX Shell, без башизмов и прочего. Ну или явно указывай желаемый шелл в шебанге.

CrX ★★★★★
()
Ответ на: комментарий от CrX

То, что я указываю /bin/sh, не всегда означает что запускать его будет /bin/sh. Это почти всегда симлинк на что-то более интересное.

cc @firkax

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от u5er

Это не хз какой шелл, это дебиановская реализация posix-стандарта, то есть как раз то что там и должно быть. Впрочем kill там тоже builtin. Ну, в скриптах kill -L не нужно как раз.

firkax ★★★★★
()
Ответ на: комментарий от hateyoufeel

Если ты указываешь /bin/sh, не используй башизмов и прочих расширений поверх обычного POSIX, и скрипт будет работать в любом шелле. Если ты используешь башизмы, указывай чётко баш. И т.д.

CrX ★★★★★
()

Все вроде нормально. В posix

The following options shall be supported:

-l
    (The letter ell.) Write all values of signal_name supported by the implementation, if no operand is given. If an exit_status operand is given and it is a value of the '?' shell special parameter (see Special Parameters and wait) corresponding to a process that was terminated by a signal, the signal_name corresponding to the signal that terminated the process shall be written. If an exit_status operand is given and it is the unsigned decimal integer value of a signal number, the signal_name (the symbolic constant name without the SIG prefix defined in the Base Definitions volume of POSIX.1-2017) corresponding to that signal shall be written. Otherwise, the results are unspecified.
-s  signal_name
    Specify the signal to send, using one of the symbolic names defined in the <signal.h> header. Values of signal_name shall be recognized in a case-independent fashion, without the SIG prefix. In addition, the symbolic name 0 shall be recognized, representing the signal value zero. The corresponding signal shall be sent instead of SIGTERM.
-signal_name

В help zsh

kill [ -s signal_name | -n signal_number | -sig ] job ...
kill -l [ sig ... ]
arrecck ★★★
()
Ответ на: комментарий от utanho

Но это в воиде. Полагаю, что в других дистрах тоже таким же образом реализовано.

u5er ★★
()
Ответ на: комментарий от firkax

Нормальный это какой?

В контексте дебиан и даш - любой.

utanho ★★★★★
()
Ответ на: комментарий от CrX

Причём тут башизмы? Я написал буквально что от встроенных в шелл замен многим командам больше геморроя чем пользы, особенно при скриптинге. А какие именно команды будут заменены встроенными, зависит от того, куда ссылается /bin/sh.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)

у меня что маденькая l что большая L выхлоп одинаковый

amd_amd ★★★★★
()
Ответ на: комментарий от CrX

эвона какой кринж! Так недолго и в лужу сесть!)

SpaceRanger ★★★
() автор топика
Ответ на: комментарий от hateyoufeel

В рамках спецификации POSIX встроенные команды будут иметь те же функции, что и гнутые, бсднутые и любые другие, встречающиеся в реальной жизни. Если ты завязываешься на поведение команды, конкретно встроенной в bash, то его и надо прописывать в шебанг. Что тут непонятного? Ну от например встроенная [ aka test в баше сильно расширена, и многие этим пользуются. Когда пользуешься, не надо писать в шебанге /bin/sh, потому что например в дебиане это будет dash. Вот их тоже не стоит использовать, если хочешь, чтоб работало везде, вот и всё. Если дело наоборот в том, что ты хочешь использовать именно конкретно бинарник из /bin, в котором добавлены фичи поверх POSIX, то можно же в скрипте абсолютный путь написать, чтоб встроенная шелловская точно не юзалась, ну и в зависимостях у тебя тогда будет utils-linux, а портабельность ниже. Проверять вообще, наверное, лучше всего на системах с busybox. Ну и есть shellcheck, который выдаст многие подобные ошибки.

CrX ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)