如何根据进程 ID 打开程序?

如何根据进程 ID 打开程序?

有什么方法可以打开在后台运行的程序。我已经用 Java 为 ubuntu 开发了一个应用程序,如果它已经在运行,我想通过它的 pid 打开它,就像 skype 一样,如果它已经在运行,skype 不会创建新实例,无论是从启动器(菜单)单击还是新实例,它都会重新打开相同的进程。

答案1

如果您已经输入了命令但忘记使用,则可以通过输入 ^Z ( - ) 暂停&前台作业,然后将其置于后台,将前台作业置于后台:CtrlZbg

$ sleep 99
^Z
[1]+  Stopped                 sleep 99
$ bg
[1]+ sleep 99 &

您可以将后台作业带到前台,以便 shell 再次等待它,使用fg

$ jobs
[1]+  Running                 sleep 99 
$ fg
sleep 99

您可以使用 jobs 命令列出当前 shell 的作业。

$ jobs
[1]+  Running                 sleep 99 

[来源]

如果您想在前台/后台运行空间作业,只需使用进程 ID 将其移动到前台/后台。看这个例子:

$ sleep 99     # run first job
^Z
[1]+  Stopped                 sleep 99
$ bg
[1]+ sleep 99 &
$ sleep 1000   # run second job
^Z
[2]+  Stopped                 sleep 1000
$ jobs         # view all jobs
[1]-  Running                 sleep 99 &
[2]+  Stopped                 sleep 1000
$ bg %2        # move jobs number 2 to run in background
[2]+ sleep 1000 &
$ jobs         # view all jobs
[1]-  Running                 sleep 99 &
[2]+  Running                 sleep 1000 &

这两项作业都在后台运行。

$ fg %2      #switch to second job and run it in foreground

  sleep 1000      #sleep 1000 is now running in foreground

注意:您需要使用 来终止这些作业kill %processID

例如:(kill %2终止进程 ID 为 #2 的第二个作业)

答案2

根据@Peter.O 的回答并提出问题@Omidhttp://Unix.stackexchange.com,如果你获得了程序的 PID,你就知道它是哪个程序,然后使用以下命令你可以切换到你想要的程序:

例如如果你使用以下方式获取 Firefox 的 PID皮多夫命令,例如pidof firefox,您将获得类似的结果3547,然后将此 PID 传递给以下命令并切换到您使用其 PID 的程序:

wmctrl -ia $(wmctrl -lp | awk -vpid=$PID '$3==3547 {print $1; exit}')

相关内容