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


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.