
Я пишу скрипт оболочки, который запускает процесс PHP. Но он не запущен в фоновом режиме. Могу ли я завершить скрипт оболочки, не завершая процесс PHP, который запущен?
решение1
Да, но сначала нужно отделить его. Чтобы отделить дочерний процесс от родительского, выполните:
kill -20 PID
kill -18 PID
Смотрите также:https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup
Если вы находитесь на том же терминале, что и процесс, введите , ctrl-z
чтобы остановить родительский процесс, и используйте , ps -ef
чтобы найти PID дочернего процесса php. Используйте строки kill выше, чтобы эффективно отделить дочерний процесс от родительского. Затем fg
вернитесь в свой скрипт оболочки, и он должен завершиться нормально, или вы можете вызвать kill -9
скрипт оболочки по PID или имени напрямую, пока вы находитесь в командной строке. В противном случае, завершение родительского процесса (в конечном итоге) уничтожит дочерний процесс.