有什么方法可以打开在后台运行的程序。我已经用 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 的回答并提出问题@Omid在http://Unix.stackexchange.com,如果你获得了程序的 PID,你就知道它是哪个程序,然后使用以下命令你可以切换到你想要的程序:
例如如果你使用以下方式获取 Firefox 的 PID皮多夫命令,例如pidof firefox
,您将获得类似的结果3547
,然后将此 PID 传递给以下命令并切换到您使用其 PID 的程序:
wmctrl -ia $(wmctrl -lp | awk -vpid=$PID '$3==3547 {print $1; exit}')