Якщо ви ^ Z від процесу, він стає «зупиненим». Як ви переходите назад?


81

Я випадково "зупинив" свій telnetпроцес. Тепер я не можу ні «переключитися назад» на нього, ні я не можу його вбити (він не відповість на це kill 92929, де 92929 - це процесід.)

Отже, моє запитання полягає в тому, що якщо у вас є зупинений процес у командному рядку Linux, як ви переключитесь на нього назад чи вбити його, не вдаючись до цього kill -9?

Відповіді:


90

Найпростіший спосіб - запустити fgйого на перший план:

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

Крім того, ви можете запустити, bgщоб він продовжувався у фоновому режимі:

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

Якщо ви тільки що потрапили Ctrl Z, то для повернення завдання просто запустіть fgбез аргументів.


Дякую!! Я думаю, це еквівалент Alt + Tab. Чи знаєте ви, що сталося, як тільки я це зробив fg telnet. Він сказав Terminated, імовірно, б / с мого попереднього killcmd.
бобобобо

@bobobobo імовірно, так. У fgбудь-якому випадку аргументи не потребують. Якщо ви тільки що потрапили ^Z, запустіть fgв тому ж терміналі, і він поверне перше завдання.
terdon

48

Ви можете використовувати jobsдля списку призупиненого процесу. Візьмемо приклад. Почніть з процесу:

$ sleep 3000  

Потім ви призупиняєте процес:

^Z
[1]+  Stopped                 sleep 3000

Ви можете перелічити процес:

$ jobs
[1]+  Stopped                 sleep 3000

і поверніть його на перший план:

$ fg %1
sleep 3000

У %1відповідає [1]перерахованого з jobsкомандою.


18

Ви повинні мати можливість запустити призупинений процес, використовуючи killкоманду для надсилання процесу КОНТРОЛЬНИЙ сигнал з командного рядка, таким чином:

kill -CONT 92929

Це призведе до відновлення роботи, але не буде винесено на перший план.
Багамат

@bahamat Так, цілком правда. Потрібно все-таки fgвсередині оригінального терміналу. Мені подобається -STOP і -CONT gui програми для економії ресурсів, але вони все одно ефективно працюють у фоновому режимі.
Геб

У випадку sleepцього буде killпроцес, який не є тим, чого ви хочете ..;)
Тимо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.