Por quanto tempo o GNU kill (1) aceitou um argumento de nome?

2

Descobrimos recentemente que o GNU mata, indo além da especificação , terá um nome como seu argumento e tentará matar todos os processos com esse nome , na mesma linha que pkill (1) ou algumas implementações do killall.

Eu não consegui encontrar o changelog do GNU para matar. Quando esse "recurso" foi adicionado?

    
por kojiro 28.11.2011 / 23:25

1 resposta

8

Você pode procurar a fonte do Gnu coreutils no Savannah (ou clonar o repositório em sua máquina), e em Em particular, olhe para a fonte e a changelog do utilitário kill . Não existe e nunca foi uma característica dessas.

do {
      intmax_t n = (errno = 0, strtoimax (arg, &endp, 10));
      …
      if (errno == ERANGE || pid != n || arg == endp || *endp)
        {
          error (0, 0, _("%s: invalid process id"), arg);
          status = EXIT_FAILURE;
        }
      …
} while ((arg = *++argv));

A página de mangá com a qual você está vinculado é para o comando kill do coleção util-linux . Como você pode ver na data da página do manual, esse recurso é muito antigo. Muitos sistemas Linux enviam o comando kill do GNU coreutils, ou o do pacote procps , e na maioria das vezes você veja o builtin do seu shell em vez do comando externo de qualquer maneira. Nenhum desses permite passar um nome de comando simples como argumento.

Em uma nota relacionada, no bash, ksh e zsh, você pode passar qualquer especificação de trabalho como um argumento para kill . As especificações do trabalho começam com % e podem ser seguidas por um número de trabalho ou por uma parte do nome do comando desse trabalho.

$ jobs
[3] +  Running                 sleep 9999 &
[2] - Stopped                  vim foo
[1]    Running                 xterm &
$ kill %sleep
[3] + Terminated               sleep 9999 &
$ jobs
[2] + Stopped                  vim foo
[1] -  Running                 xterm &
    
por 29.11.2011 / 00:08

Tags