我打开了一个终端,正在运行Java服务器。我可以轻松获取此JAR进程的进程ID(PID)。从另一个终端,我想向此过程发出信号,以在当前正在运行的同一终端中停止并重新启动。使用bash可以吗?我可以向PID发送任何信号以使其停止并重新启动吗?
从另一个终端,我想向此过程发出信号,以在当前正在运行的同一终端中停止并重新启动。使用bash可以吗?
您可以通过kill
命令向进程发送信号。 您可能需要是特权用户,或者具有与要发出信号的进程相同的 UID。
但是请继续阅读...
我可以向PID发送任何信号以使其停止并重新启动吗?
如果您的意思是"停止"(如终止)和"[重新]启动"(如从头开始运行,就好像一个新进程一样),那么没有信号是默认处理。 进程可以提供此类行为来响应其选择的信号,但不能从任意进程中唤起它。
另一方面,如果您想在暂时暂停操作的意义上"停止",而在从这种停止恢复的意义上"启动",那么有SIGSTOP
和SIGCONT
,默认处理应该就足够了。 但是,请注意,从这个意义上说,停止进程可能不会将其从前台(如果它在前台)中取出,并且进程可以阻止、忽略或为这些信号提供自己的处理。
您可以使用kill
发送信号。
kill -s <SIGNAL> <PID>
将使用 PID<PID>
将信号<SIGNAL>
发送到进程。
要停止并继续,您可以使用SIGSTOP
和SIGCONT
,其作用基本上类似于按 Ctrl-Z 暂停终端上的程序。