Imagine que você está tentando executar um script complexo com nohup. Você pode detectar se ele tenta ler stdin redirecionando stdin para um descritor de arquivo que não pode ser lido. Veja estes dois exemplos: primeiro 0</dev/null
:
rm nohup.out
nohup sh -c 'head -1' 0</dev/null
echo $?
cat nohup.out
O arquivo nohup.out está vazio e o código de retorno ( $?
) do script é 0, ou seja, ok, já que o script acabou de ler o fim do arquivo. Agora tente o mesmo script com 0>/dev/null
ie 0 aberto apenas para a saída :
rm nohup.out
nohup sh -c 'head -1' 0>/dev/null
echo $?
cat nohup.out
Isso fornece a mensagem de erro em nohup.out de
head: error reading 'standard input': Bad file descriptor
e o código de saída é 1, falha. Isto é presumivelmente mais útil para você. Você também pode obter o mesmo efeito fechando stdin com 0<&-
:
rm nohup.out
nohup sh -c 'head -1' 0<&-
echo $?
cat nohup.out