Использование bg и fg с заданным PID - PullRequest
0 голосов
/ 01 марта 2020

Я использую Ubuntu.

Если мне дают PID задания, как я могу перевести приостановленную работу в фоновое / переднее и рабочее состояние?

Я знаю bg/fg, но они требуют job id, а не PID.

Кроме того, я приостанавливаю работу с

kill -STOP <PID>

, и я знаю, что могу возобновить его с

kill -CONT <PID>

, но я не знаю, как я могу использовать Команды bg и fg с этим PID.

Редактировать: Я хочу прояснить это:

Сценарий: у меня приостановленная работа, я знаю ее PID. Как мне вернуть его обратно и заставить работать в фоновом режиме?

Ответы [ 2 ]

5 голосов
/ 01 марта 2020

Вы не можете использовать fg и bg с pid. Это встроенные оболочки, которые требуют jobspec, а не pid.

2 голосов
/ 01 марта 2020

вы можете использовать команду top или ps, чтобы увидеть все ваши PID, а также вы можете использовать команду pidof, чтобы получить PID

, например, я хочу проверить PID из bash команды, поэтому я напишу:

pidof bash

или с помощью команды ps вы можете написать

ps -C bash 

или с помощью ps и grep вы можете написать :

ps aux | grep bash

или просто напишите top и проверьте, что вам нужно.

для отправки команды на bg или background вы должны добавить & на например, в конце вашей команды я хочу отправить xeyes на bg, поэтому я напишу:

xeyes &

, если вы хотите довести его до foreground или fg, вы напишите:

fg xeyes

вы также можете просмотреть все свои задания с помощью команды jobs -l.

например, я хочу выполнить команду xeyes, поэтому я напишу:

xeyes 

пожалуйста, обратите внимание на глаза при перемещении мыши, теперь, если я хочу отправить ее на bg, я могу использовать CTRL+Z на своей клавиатуре. Если вы хотите проверить это, вы можете написать jobs, вы увидите, что xeyes остановлено!

Слева от каждого процесса есть число вроде этого:

[1]-  6331 Running                 xeyes &
[2]+  Stopped                 xeyes

, например, для меня 2, вы можете снова запустить свой PID следующим образом:

bg %2

или вы можете найти PID с -l в jobs, чтобы увидеть PIDs тоже

[1]-  6331 Running                 xeyes &
[2]+  6332 Stopped                 xeyes

вместо bg %2 я могу написать bg 6332, чтобы изменить состояние на Running!

, а также вы увидите + или - в этом случае, если знак + был рядом с этим процессом, остановившись, вы можете просто написать bg без всего этого, например:

bg # attention to + 

, если вы хотите довести команду до fg, точно так же, как bg, что означает, что вы можете использовать один из тех способов, которыми я уже упоминалось!

Я думаю о вашем вопросе, это означает, что процесс получил сигнал STOP и не будет ничего делать, пока не получит сигнал CONT, даже не прекратит работу.

На самом деле самый распространенный источник STOP сигналов - пользователь нажимает CTRL+Z, пока процесс находится в * 10 84 *, и общий способ отправить CONT впоследствии - набрать fg или bg, которые продолжают процесс в foreground и background соответственно, другой способ отправить STOP процессу kill -STOP PID. Аналогично, CONT можно отправить процессу с помощью kill -CONT PID. Поскольку вы отправили TERM сигналы процессам, я предполагаю, что вы хотите, чтобы они прекратились. Для этого процессы должны получать CONT сигналов. Вы можете отправить их, набрав kill -CONT 6331 6332 в окне терминала. пожалуйста, знайте, что эти PIDs принадлежат мне, и вы должны изменить его на свой!

...