在 bash shell 中,为了创建nohup mycommand &
一个孤立进程,我在运行命令后关闭了 bash shell。是否可以在不终止父外壳的情况下完成?我想知道是否有一些类似于系统调用 fork() 和 exit() 的 shell 命令用于守护进程。
答案1
要创建孤儿进程,父进程必须死亡。如果你不想让你的 shell 死亡,那么 shell 一定不能是孤儿的父级。最简单的方法是让 shell 派生出一个子进程,该子进程又派生出要成为孤儿的进程。这个双分叉是守护进程的启动方式,如维基百科文章的介绍。
在 shell 中,您已经知道如何创建子进程:使用&
.要拥有一个子进程(它是同一个 shell 的分支)并让它依次分支一个后台进程,您只需要让解析器理解您的意思即可。
{ nohup mycommand & } &