Как открыть программу из идентификатора процесса?
Есть ли способ открыть программу, которая работает в фоновом режиме. Я разработал приложение на 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)