$! es definitivamente parte de ksh y ksh93.
echo $SHELL
le mostrará qué shell está ejecutando.
Ejemplo de uso razonable de &
#!/bin/ksh
nohup ./myscript.sh argument1 2>&1> mylogfile &
# do some other task
cnt=0
while [ $cnt -le 100 ]
do
# work on another task here
cnt=$(($cnt + 1))
done
wait
La declaración de espera se detiene por cualquier proceso hijo todavía en funcionamiento. Normalmente no se envía un proceso al fondo, se espera que se ejecute para siempre, y luego se olvida por completo.
Si desea un proceso completamente independiente que se ejecute para siempre, considere un daemon. Algunas personas escriben daemons en shell, no es la mejor práctica, pero ya está hecho. Normalmente los demonios de UNIX están escritos en C.
Capítulo 13 de la Programación Avanzada de Stevens en el Ambiente UNI '2ed se trata de daemons.
Gracias. ¿Puedo usar algo que no sea/var/run y/tmp like/home? – learner135
Sí, lo que funcione mejor para usted. –
Nota de precaución: Los PID a veces se vuelven a usar (más a menudo en sistemas operativos sin fuerte aleatoriedad o en sistemas con muchos procesos de corta duración). El paranoico podría querer verificar que el proceso tenga el padre correcto ($$), o hacer que el script secundario elimine el archivo myscript.pid al salir (algo así como '' trap '' rm /var/run/myscript.pid EXIT '') O ambos. – pra