Quando me deparo com uma questão como essa, costumo seguir o mantra de Sherlock Holmes e considerar o que resta, por implausível, quando o impossível é eliminado. É claro que com os computadores nada é impossível, no entanto, algumas coisas são tão improváveis que podemos ignorá-las a princípio. (Isso faz mais sentido com o título original, " command; command; echo $?
- valor de retorno não está correto, por quê?")
Nesse caso, se
sudo systemctl start x; sudo systemctl is-active --quiet x; echo $?;
mostra que $?
é 0, o que significa que systemctl is-active
realmente indica sucesso. O fato de um systemctl is-active
separado mostrar que o serviço não está ativo sugere strongmente que há uma corrida entre o serviço e o operador humano que digita os comandos. basicamente, que o serviço é iniciado, em uma extensão suficiente para que systemctl start
seja concluído e systemctl is-active
seja executado e encontre o serviço ativo, mas, em seguida, o serviço falha, portanto, um systemctl is-active
inserido pelo usuário o considera inativo. / p>
Adicionar um pequeno intervalo entre systemctl start
e systemctl is-active
deve evitar o falso positivo.