Screen um processo em execução

22

Às vezes, esqueço de executar um programa em uma sessão de tela e não posso pará-lo no meio, e sei que vai demorar muito.

Existe uma maneira de filtrar um processo já em execução sem reiniciá-lo?

    
por LiraNuna 24.08.2009 / 08:11

3 respostas

7

Encontrou um duplicado em ServerFault .

Outra solução não encontrada nesse post é usar retty depois de iniciar uma sessão de tela.

    
por 24.08.2009 / 08:44
11

Encontrou esta resposta no serverfault de earl :

However, for your actual problem, there's another thing you could try: after having launched your job from the terminal, background it by typing ctrl-z and then bg.
After that, detach the job from it's parent shell - in bash: disown -h %<jobid>. After that, you can safely close the terminal and the job will continue running.

E esse da mesma pergunta de Rob Wells :

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

    
por 29.04.2010 / 19:37
5

Dê uma olhada no reptyr , que faz exatamente isso. A página do github tem todas as informações.

reptyr - A tool for "re-ptying"

programs.

reptyr is a utility for taking an existing running program and attaching it to a new terminal. Started a long-running process over ssh, but have to leave and don't want to interrupt it? Just start a screen, use reptyr to grab it, and then kill the ssh session and head on home.

USAGE

reptyr PID

"reptyr PID" will grab the process with id PID and attach it to your current terminal.

After attaching, the process will take input from and write output to the new terminal, including ^C and ^Z. (Unfortunately, if you background it, you will still have to run "bg" or "fg" in the old terminal. This is likely impossible to fix in a reasonable way without patching your shell.)

    
por 28.06.2011 / 11:26