kill: SIGSTOP: erro de especificação de sinal inválido no script bash

6

Quando eu uso o kill na linha de comando, ele funciona.

kill -SIGSTOP 1234

Mas se eu usar no arquivo de script bash eu recebo este erro:

kill: SIGSTOP: invalid signal specification

o arquivo sh é

#!/bin/sh
kill -SIGSTOP 1234

Como posso usar kill no script bash? Eu tentei isso:

#!/bin/sh
/bin/bash -c "kill -SIGSTOP 1234"

mas não funciona.

    
por user4757345 29.04.2015 / 11:26

3 respostas

1

Para começar: SIGSTOP interromperá temporariamente o processo, mas continuará na memória para que possa continuar mais tarde usando a chamada de sistema SIGCONT . Você pode usar o pequeno snippet a seguir para ver o que acontece

#!/bin/bash

set -x

sleep 100 &
pid=$!
kill -s SIGSTOP "$pid"
sleep 2
kill -s SIGCONT "$pid"

Você verá o que o script faz interativamente.

Então, para fazer seu script funcionar usando #/bin/sh shebang, você faria algo como

#!/bin/sh

set -x
set +o posix
sleep 100 &
pid=$!
kill -s SIGSTOP "$pid"
sleep 2
kill -s SIGCONT "$pid"
set -o posix
    
por 29.04.2015 / 11:46
12

A sintaxe padrão (POSIX) é:

kill -s STOP "$pid"

Ou seja, sem o prefixo SIG . Algumas implementações de shell suportam kill -s SIGSTOP ou kill -SIGSTOP como uma extensão, mas isso não é padrão nem portátil.

A especificação do UNIX (POSIX + XSI) também permite:

kill -STOP "$pid"

e

kill -19 "$pid"

Apesar de qual número de sinal é SIGSTOP não especificado e pode mudar entre sistemas e até mesmo arquiteturas para um mesmo sistema, então deve ser evitado.

    
por 29.04.2015 / 13:00
1

Estou enfrentando o mesmo problema. Todas as respostas aqui não abordaram a verdadeira causa do problema. Dentro do script, o kill usado é o interno do shell, e é por isso que você está com o erro. Enquanto no seu terminal, o kill usado é o executável separado localizado em /bin/kill . Para corrigir o problema, dentro do seu script você deve usar o /bin/kill e não a versão interna do shell. Portanto, você escreve assim:

#!/bin/sh
/bin/kill -s SIGHUP 14344
    
por 14.01.2018 / 19:43