Как завершить родительский процесс скрипта оболочки, не завершая дочерний процесс?

Как завершить родительский процесс скрипта оболочки, не завершая дочерний процесс?

Я пишу скрипт оболочки, который запускает процесс 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 или имени напрямую, пока вы находитесь в командной строке. В противном случае, завершение родительского процесса (в конечном итоге) уничтожит дочерний процесс.

Связанный контент