Якщо ви запускаєте оболонку в терміналі, наприклад, емуляторі терміналу або типовому сеансі ssh, ваша оболонка майже напевно включила контроль роботи. У більшості випадків це дуже легко отримати відповідь на ваше запитання.
Введіть, Ctrl+Zщоб призупинити процес, а потім bg
продовжити його у фоновому режимі, а потім введіть порожній рядок у оболонку, щоб він перевірив, чи зупинилась програма сигналом.
Якщо процес намагається прочитати з терміналу, він негайно отримає SIGTTIN
сигнал і зупиниться. (Коли ввімкнено контроль за роботою, система дозволяє одночасно зчитувати з терміналу лише один процес.) Оболонка повідомить про це. Потім ви можете ввести, fg
щоб продовжити процес на передньому плані, а потім наберіть введення, щоб прочитати програму як звичайне.
mp@ubuntu:~$ sleep 30 # a program that is not reading from the terminal
^Z
[1]+ Stopped sleep 30
mp@ubuntu:~$ bg
[1]+ sleep 30 &
mp@ubuntu:~$
mp@ubuntu:~$
mp@ubuntu:~$ cat - # a program that is reading from the terminal
^Z
[1]+ Stopped cat -
mp@ubuntu:~$ bg
[1]+ cat - &
mp@ubuntu:~$
[1]+ Stopped cat -
mp@ubuntu:~$ jobs -l
[1]+ 3503 Stopped (tty input) cat -
mp@ubuntu:~$ fg
cat -
hi
hi
Деякі програми, такі як редактори, або захоплюють або ігнорують сигнал, що генерується, Ctrl+Zабо переводять термінал у режим, коли символи управління навіть не генерують сигнали. Ви повинні будете використовувати більш складні методи , в цьому випадку, наприклад, з використанням , strace
щоб побачити , якщо процес робить read
, select
, poll
і т.д.
PS1
підказки.