$! определенно является частью ksh и ksh93.
echo $SHELL
покажет вам, какую оболочку вы используете.
Пример разумного использования &
#!/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
Ждание заявление делает паузу для любого еще запущенного процесса ребенка. Обычно вы не выкладываете процесс на задний план, ожидаете, что он будет работать вечно, а затем полностью забудет его.
Если вы хотите полностью отсоединить процесс, который работает вечно, рассмотрите демон. Некоторые люди пишут демона в оболочке - не лучшая практика, но это делается. Обычно демоны UNIX написаны на C.
Глава 13 расширенного программирования Стивенса в среде UNIx '2ed - все о демонах.
Спасибо. Могу ли я использовать что-либо другое, кроме/var/run и/tmp like/home? – learner135
Yup, все, что лучше всего подходит для вас. –
Обратите внимание: PID иногда используются повторно (чаще всего на ОС без сильной случайности или на системах с большим количеством недолговечных процессов). Параноид может захотеть проверить, что процесс имеет правильный родительский ($$), или же дочерний скрипт удаляет файл myscript.pid при выходе (что-то вроде '' trap 'rm /var/run/myscript.pid EXIT' ') Или оба. – pra