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