Призупинення тривалої програми в терміналі?


17

Чи є комбінація клавіш клавіатури, яку я можу використовувати для призупинення програми, що працює в терміналі? У випадку, якщо це має значення, я не збираюся запускати щось інше в цьому терміналі, поки програма призупинена. Я просто хочу призупинити виконання програми та відновити її пізніше. Як я можу це зробити?


Яка програма саме?
jobin

@Jobin Програма, яку я написав на C ++. Але я не хочу змінювати вихідний код.
беско

Ви хочете відновити процес після перезавантаження чи чогось іншого?
приєднатися

@Jobin Ні, я не хочу перезавантажувати. Хочу відновити пізніше, але я не буду перезавантажувати систему посередині.
беско

Відповіді:


17

Натисніть Control+ Z.

Це призупинить процес і поверне вас до оболонки. Ви можете робити інші речі зараз, якщо хочете, або можете повернутися до фонового процесу, увійшовши %за ним Return.

Зауважте, що якщо ви робите це з чимось, на що потрібно реагувати, ви збираєтеся заправити систему, але якщо це просто щось на зразок nanoекземпляра, все повинно бути добре.


Чи безпечно призупиняти термінальний процес?
Пандія

@Pandya: Чому ні?
jobin

@Pandya Я впевнений, що це залежить від процесу ... Якщо щось дуже чутливе до часу, його, можливо, не очікують, що це буде призупинено, але більшість речей має бути добре.
Олі

16

Це баш контроль роботи

Використовуйте CTL-Z, щоб зупинити роботу.

Тоді ви можете ввести bg, щоб запустити його у фоновому режимі, якщо там є лише робота, вона робить саме це.

Якщо у вас є декілька, ви можете використовувати завдання для списку, а потім використовувати fg% N і bg% N до потрібного ефекту.

Приклад:

ubuntu @ ip-10-170-59-120: ~ $ find / usr -name "* .so"
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] + Зупинено ім'я пошуку / usr-імені 

ubuntu @ ip-10-170-59-120: ~ $ завдання
[1] + Зупинено find / usr -name "* .so"

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
find / usr -name "* .so"
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

Для всього іншого, що не додається до TTY, ви можете використовувати SIGSTOP та SIGCONT . Так, наприклад, якщо ви думаєте, що демон викликає проблеми, але ви не знаєте, що це таке, ви можете надіслати PID SIGSTOP, це як натиснути паузу, потім перевірити зміни, гаразд це не так, і промийте та повторіть, поки ви знайти проблему.

Сподіваюсь, це допомагає.


1
Гарна відповідь! Чи можу я лише додати, що це не лише штука? Оболонка Korn працює так само.
Сергій Колодяжний

4

Я знаю, що ця відповідь трохи запізнюється, але ви можете скористатися ярликом, Ctrl+sщоб зупинити свою програму (якщо ви хочете прочитати вихід або щось подібне), тоді ви можете продовжити використовувати ярлик Ctrl+q.

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