你如何向一个进程 (PID) 发出信号,使其在运行它的同一个 shell 中重新启动,使用 bash 从另一个 shel



我打开了一个终端,正在运行Java服务器。我可以轻松获取此JAR进程的进程ID(PID)。从另一个终端,我想向此过程发出信号,以在当前正在运行的同一终端中停止并重新启动。使用bash可以吗?我可以向PID发送任何信号以使其停止并重新启动吗?

从另一个终端,我想向此过程发出信号,以在当前正在运行的同一终端中停止并重新启动。使用bash可以吗?

您可以通过kill命令向进程发送信号。 您可能需要是特权用户,或者具有与要发出信号的进程相同的 UID。

但是请继续阅读...

我可以向PID发送任何信号以使其停止并重新启动吗?

如果您的意思是"停止"(如终止)和"[重新]启动"(如从头开始运行,就好像一个新进程一样),那么没有信号是默认处理。 进程可以提供此类行为来响应其选择的信号,但不能从任意进程中唤起它。

另一方面,如果您想在暂时暂停操作的意义上"停止",而在从这种停止恢复的意义上"启动",那么有SIGSTOPSIGCONT,默认处理应该就足够了。 但是,请注意,从这个意义上说,停止进程可能不会将其从前台(如果它在前台)中取出,并且进程可以阻止、忽略或为这些信号提供自己的处理。

您可以使用kill发送信号。

kill -s <SIGNAL> <PID>

将使用 PID<PID>将信号<SIGNAL>发送到进程。

要停止并继续,您可以使用SIGSTOPSIGCONT,其作用基本上类似于按 Ctrl-Z 暂停终端上的程序。

最新更新