PID de comandos executados como usuário diferente

0

Apesar de ser uma raiz, quero iniciar um serviço como um usuário específico e gravar seu arquivo PID. Exemplo mínimo de não trabalho:

if [ $UID -eq 0 ]; then  
su myuser <<EOF 
sleep 30 &  
echo $! >mypid.pid  
EOF
fi  

Após o arquivo de execução mypid.pid está vazio, $! está vazio também, mas há um processo de suspensão para o meu usuário com pid atribuído (obviamente). Pressiono que é porque uma nova shell é gerada e de alguma forma não rastreia sua história. Existe alguma maneira de fazer isso funcionar?

    
por S. Murawski 13.01.2016 / 11:58

1 resposta

0

Como você alimenta o shell chamado por su(1) de um script, $! é interpretado pelo script que chama su(1) . A maneira de evitar isso é escapar de $! , então $! é alimentado para o shell invocado por su(1) e não o script de chamada:

if [ $UID -eq 0 ]; then  
su myuser <<EOF 
sleep 30 &  
echo \$! >mypid.pid  
EOF
fi  
    
por 13.01.2016 / 19:35

Tags