Como abrir o programa a partir do id do processo?

0

Existe alguma maneira de abrir o programa que está sendo executado em segundo plano. Eu desenvolvi um aplicativo em java para o Ubuntu e quero abrir esse aplicativo através do seu pid se ele já está sendo executado como o skype, skype não é criar nova instância se ele já está rodando o que clica no launcher (menu) insted de nova instância, reabrir o mesmo processo.

    
por anondren 21.09.2014 / 11:16

2 respostas

1

De acordo com @ Peter.O's answer e pergunta por @Omid no link , se você pegar o PID do programa que você sabe qual programa é, então com o comando follow você pode mudar para o programa desejado:

por exemplo, se você tomar o PID do firefox com o comando pidof , como pidof firefox , você obtém o resultado é algo como 3547 , então passe este PID para o comando abaixo e mude para o seu programa que você está usando seu PID:

wmctrl -ia $(wmctrl -lp | awk -vpid=$PID '$3==3547 {print $1; exit}')
    
por sddgob 21.09.2014 / 21:25
2

Se você já digitou um comando e esqueceu de usar o & , pode colocar um trabalho de primeiro plano em segundo plano digitando ^ Z ( Ctrl - Z ) para suspender o trabalho, seguido por bg para colocá-lo em segundo plano:

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

Você pode colocar um job em segundo plano em primeiro plano, para que o shell espere novamente, usando fg :

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

Você pode listar os trabalhos do shell atual usando o comando jobs.

$ jobs
[1]+  Running                 sleep 99 

[fonte]

Se você deseja executar um trabalho espacial em primeiro plano / segundo plano, use o ID do processo para movê-lo para primeiro plano / segundo plano. veja este exemplo:

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

Ambos os trabalhos estão sendo executados em segundo plano.

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

  sleep 1000      #sleep 1000 is now running in foreground

Nota: você precisa matar esses trabalhos usando kill %processID .

exemplo: kill %2 (mate o segundo trabalho com o ID do processo # 2)

    
por sddgob 21.09.2014 / 11:51