PID de comandos ejecutados como diferentes usuarios


0

Siendo una raíz, quiero iniciar un servicio como usuario específico y escribir su archivo PID. Ejemplo mínimo no laborable:

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

Después de la ejecución del archivo mypid.pid está vacío, $! también está vacío, pero hay un proceso de suspensión para mi usuario con un pid asignado (obviamente). Supongo que se debe a que se genera un nuevo shell y de alguna manera no rastrea su historia. ¿Hay alguna manera de que pueda hacer que funcione?

Respuestas:


0

Porque alimentas el shell invocado por su(1) de un guión, $! es interpretado por el script llamando su(1). La forma de prevenir esto es escapar. $!, entonces $! se alimenta al shell invocado por su(1) y no el script de llamada:

if [ $UID -eq 0 ]; then  
su myuser <<EOF 
sleep 30 &  
echo \$! >mypid.pid  
EOF
fi  
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.