Se você ^ Z de um processo, ele é “parado”. Como você volta a entrar?

83

Eu acidentalmente "parei" meu telnetprocesso. Agora eu não posso "voltar" para ele, nem posso matá-lo (ele não responderá kill 92929, onde 92929 é o processo).

Então, minha pergunta é: se você parou um processo na linha de comando do linux, como voltar a ele ou matá-lo sem ter que recorrer kill -9?

bobobobo
fonte

Respostas:

92

A maneira mais fácil é executar fgpara trazê-lo para o primeiro plano:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

Como alternativa, você pode executar bgpara continuar em segundo plano:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

Se você acabou de pressionar Ctrl Z, para retornar o trabalho, execute fgsem argumentos.

terdon
fonte
Obrigado!! Suponho que este seja o eq de Alt + Tab. Você sabe o que aconteceu assim que eu fiz fg telnet. Dizia Terminated, presumivelmente b / c do meu killcmd anterior .
bobobobo
@bobobobo presumivelmente, sim. De qualquer forma, o fgnão precisa de argumentos. Se você acabou de acertar ^Z, corra fgno mesmo terminal e ele trará de volta o 1º emprego.
terdon
48

Você pode usar jobspara listar o processo suspenso. Veja o exemplo. Comece com um processo:

$ sleep 3000  

Então você suspende o processo:

^Z
[1]+  Stopped                 sleep 3000

Você pode listar o processo:

$ jobs
[1]+  Stopped                 sleep 3000

e traga-o de volta ao primeiro plano:

$ fg %1
sleep 3000

O %1corresponde ao [1]listado com o jobscomando

Luis
fonte
19

Você deve poder reiniciar um processo suspenso usando o killcomando para enviar ao processo o sinal CONTINUE, na linha de comando, assim:

kill -CONT 92929
Geeb
fonte
1
Isso fará com que retome a operação, mas não seja trazido para o primeiro plano.
bahamat
1
@ Bahamat Sim, é verdade. Ainda seria necessário fgdentro do terminal original. Eu gosto dos programas GUI -STOP e -CONT para economizar recursos, mas eles estão sendo executados em segundo plano de qualquer maneira.
Geeb
Caso sleepisso aconteça, killo processo que não é o que você deseja ..;)
Timo