|
|
1
9
你考虑过这个问题吗
|
|
|
2
9
您可以将它放在inittab中,让init担心在进程因任何原因退出时重新启动进程。如果您的进程发生崩溃或assert()或意外退出,这也会自动重启。 然后,为了处理您的用例,该过程将自行终止。 |
|
3
5
fork()后跟exec()怎么样? |
|
|
4
2
考虑实施
这通常通过向过程发送SIGHUP信号来完成; 并重新加载任何配置。 如果进程知道它需要重新加载,它就可以自己发出信号。
如果您确实需要重新启动以获取新的库,那么请使用
|
|
|
5
1
结合到目前为止的两个答案,使用 fork-exec |
|
|
6
1
除了Ori已经说过的,一些Linux发行版仍然使用initab,但Ubuntu和其他可能的发行版已经切换到/etc/event.d。您将一个文件放入其中(复制并编辑其中一个现有文件),然后使用“sudo start ssh_tunnel”或任何您的文件调用启动守护进程。 然后,当您需要它重新启动时,您可以用一个信号终止它,系统将重新启动它。或者,它也可以通过调用“exit(0);”或其他命令,自行决定是时候重新启动了。 |
|
|
7
1
但也要看inittab和event.d,这取决于您的发行版,看看它是否能更好地满足您的需要。 |
|
|
8
1
Ori和Paul建议的第三种可能性是使用daemontools。它更便于携带,但不太可能提供。创建一个名为/service/foo/run的脚本,daemontools将在服务退出时重新启动服务。 |
|
9
0
查看inittab的手册页。 它描述了如果进程死亡(重生),系统将如何自动重启进程。 正确设置后,您的服务所要做的就是退出,系统将神奇地为您重新启动(重生)。 |
|
|
Nikhil Kolte · 返回时重新加载/刷新活动(初学者) 8 年前 |
|
|
Saul97 · 无法回调我所在方法的名称 8 年前 |
|
|
Axil · 自动重启或正确处理插座。linux中的io服务器异常 9 年前 |
|
|
gmemstr · 如何重新启动节点。js子进程 10 年前 |