Как открыть программу из идентификатора процесса?

Есть ли способ открыть программу, которая работает в фоновом режиме. Я разработал приложение на Java для Ubuntu и хочу открыть это приложение через его pid, если оно уже работает так же, как Skype, скайп не создает новый экземпляр, если он уже запущен, когда щелкает щелчок из панели запуска (меню) из новый экземпляр вновь открыть тот же процесс.

2 ответа

Решение

Согласно ответу @Peter.O и вопросу @Omid на http://unix.stackexchange.com/, если вы получаете PID программы, о которой вам известно, что это за программа, то с помощью следующей команды вы можете переключиться на нужную вам программу.:

например, если вы берете PID Firefox с помощью команды pidof, например pidof firefox, вы получите результат что-то вроде 3547, затем передайте этот PID команде ниже и переключитесь на вашу программу, которая использует его PID:

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

Если вы уже ввели команду и забыли использовать &Вы можете поместить задний план на задний план, набрав ^ Z (Ctrl-Z), чтобы приостановить задание, а затем bg поставить его на задний план:

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

Вы можете перенести фоновое задание на передний план, чтобы оболочка ожидала его снова, используя fg:

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

Вы можете перечислить задания текущей оболочки, используя команду jobs.

$ jobs
[1]+  Running                 sleep 99 

[источник]

Если вы хотите запустить пространственное задание на переднем плане / фоне, просто используйте идентификатор процесса, чтобы переместить его на передний план / фон. посмотрите этот пример:

$ 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)

Другие вопросы по тегам