Приостановка долго работающей программы в терминале?

17

Существует ли комбинация клавиш клавиатуры, которую я могу использовать для приостановки работы программы в терминале? В случае, если это имеет значение, я не собираюсь запускать что-либо еще внутри этого терминала, пока программа находится в режиме паузы. Я просто хочу приостановить выполнение программы и возобновить ее позже. Как я могу это сделать?

becko
источник
Какая именно программа?
Jobin
@Jobin Программа, которую я написал на C ++. Но я не хочу менять исходный код.
becko
Вы хотите возобновить процесс после перезагрузки или еще чего-нибудь?
работа
@ Джобин Нет, я не хочу перезагружаться. Я хочу возобновить позже, но я не буду перезагружать систему в середине.
becko

Ответы:

17

Нажмите Control+ Z.

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

Обратите внимание, что если вы делаете это с чем-то, что должно быть отзывчивым, вы собираетесь улучшить систему, но если это просто что-то вроде nanoэкземпляра, все должно быть в порядке.

Оли
источник
Безопасно ли останавливать терминальный процесс?
Пандя
@Pandya: почему бы и нет?
работа
@Pandya Я уверен, что это зависит от процесса ... Если что-то очень чувствительно ко времени, оно не может быть приостановлено, но большинство вещей должно быть в порядке.
Оли
16

Это контроль работы Bash

Используйте 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 -name 

ubuntu @ ip-10-170-59-120: ~ $ jobs
[1] + Остановлен поиск / usr -name "* .so"

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
найти / 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 . Так, например, если вы думаете, что демон вызывает проблемы, но вы не знаете, какой именно, вы можете отправить pig SIGSTOP, это все равно, что нажать pause, затем проверить изменения, ОК, это не так, и промыть и повторять, пока вы найти проблему.

Надеюсь это поможет.

ppetraki
источник
1
Хороший ответ! Могу ли я просто добавить, что это не только вещь Бэша? Оболочка Корн работает так же.
Сергей Колодяжный,
4

Я знаю, что этот ответ немного запоздал, но вы можете использовать ярлык Ctrl+sдля остановки вашей программы (если вы хотите прочитать вывод или что-то в этом роде), тогда вы можете продолжить использовать ярлык Ctrl+q.

Sidahmed
источник