307

Как я могу возобновить остановленную работу в Linux?


Как я могу возобновить остановленную работу в Linux? Я использовал emacs и случайно нажал Ctrl-Z, что вернуло меня обратно в консоль. Я вижу это, когда набираю «работа»

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

На самом деле это довольно обычный рабочий процесс для Vim: если вы хотите сохранить свои команды в своей истории bash, тогда вы нажимаете Ctrl-z , вводите свои команды и затем возобновляете. Очевидно, что вы можете запускать команды, не выходя из Vim, через команду :! ed (11 июля '18 в 2:32)

Ответов: 5

342

Команда fg - это то, что вы хотите использовать. Вы также можете указать номер задания, если остановлено несколько заданий.

для справки, fg - "передний план". Вы также можете продолжить работу в фоновом режиме с помощью «bg». (8 апреля '11 в 11:05)
235

Общие команды управления заданиями в Linux:

  • jobs - список текущих работ
  • fg - возобновить работу, которая следующая в очереди
  • fg% [число] - возобновить работу [номер]
  • bg - переместить следующее задание в очереди в фоновый режим
  • bg% [число] - отодвинуть задание [число] на задний план
  • kill% [число] - убить задание с номером [число]
  • kill - [сигнал]% [номер] - отправить сигнал [сигнал] на номер задания [номер]
  • disown% [число] - отключить процесс (терминал больше не будет владельцем), поэтому команда будет работать даже после закрытия терминала.

Это почти все из них. Обратите внимание на% infront номера задания в командах - это то, что говорит kill, вы говорите о заданиях, а не процессах.

Я избегаю «kill% 1», потому что опечатка как «kill 1» действительно очень плохая :) (8 апреля '11 в 14:05)

@ barrycarter Это очень верно. Я обычно делаю fg и Ctrl-C ;) (8 апреля 11 в 14:08)

@barry: Именно поэтому init в Upstart по умолчанию игнорирует SIG {TERM, KILL}. (19 апреля '11 в 2:26)

И, конечно же, «никогда не запускайте как root»;) (19 апреля '11 в 3:04)
44

Вы также можете ввести %<process_name> ; то есть вы нажимаете Ctrl-Z в emacs, затем вы можете набрать %emacs в консоли и вернуть его на передний план.

Очень хорошо знать (22 октября 15 в 21:42)
29

Просто чтобы добавить к другим ответам, Bash позволяет пропустить fg если вы указали номер работы.

Например, они эквивалентны и возобновляют последнюю работу:

%
%%
fg
fg %

Это резюме работы № 4:

%4
fg 4

Хотя это круто, мне все же легче набрать fg , чем % . (10 октября '14 в 17:10)

% это здорово, спасибо! Как машинистка на ощупь, я нахожу fg очень раздражающим (тот же палец). Но так же, как и cd . (15 апреля '15 в 13:45)

И вы можете запустить его в фоновом режиме с помощью bg% или просто % & amp; . (16 августа '16 в 18:43)
15

Если вы не запускали его с текущего терминала, используйте ps aux | grep <process name> ps aux | grep <process name> чтобы найти номер процесса (pid), затем возобновите его с:

kill -SIGCONT <pid>

Это также работает, если вы откажетесь от остановленного процесса (6 декабря 17 в 1:21)

Вы также можете получить доступ к его вводу/выводу, как это происходит, когда вы говорите fg ? (2 октября '18 в 9:39)

Дополнить ответ