Como posso verificar a existência de um processo sem que um código de saída com falha seja retornado?

2

Estou usando o Amazon Linux. Quero começar um processo desde que já não esteja em execução. Este é um script bash que eu incluo em um trabalho do Jenkins Maven. Então eu tenho

pids=$(pidof /usr/bin/Xvfb)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

Infelizmente, se não houver nenhum processo, a linha "pids = $ (pidof / usr / bin / Xvfb)" retornará um código de saída com falha e nenhuma das outras linhas seguintes será executada. Existe uma maneira que eu possa escrever acima, de modo que nenhum código de saída com falha seja retornado?

    
por Dave 28.04.2016 / 03:47

1 resposta

1

Se você estiver executando com set -e , adicione || true após um comando para ignorar uma falha desse comando.

pids=$(pidof /usr/bin/Xvfb || true)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

Mas como pidof retorna um status diferente de zero se nenhum processo for encontrado, você poderá testar diretamente seu status de retorno, em vez de verificar se a saída está vazia.

if ! pidof /usr/bin/Xvfb; then
    Xvfb :0 -screen 5 1024x768x8 &
fi
    
por 29.04.2016 / 01:02