Menjeda program yang berjalan lama di terminal?

17

Apakah ada kombinasi tombol keyboard yang dapat saya gunakan untuk menjeda program yang berjalan di terminal? Jika itu penting, saya tidak bermaksud menjalankan apa pun di dalam terminal itu ketika program dijeda. Saya hanya ingin menghentikan sementara pelaksanaan program, dan melanjutkannya nanti. Bagaimana saya bisa melakukan ini?

becko
sumber
Program apa sebenarnya?
jobin
@ Jonobin Program yang saya tulis di C ++. Tetapi saya tidak ingin mengubah kode sumber.
becko
Apakah Anda ingin melanjutkan proses setelah reboot atau sesuatu?
jobin
@ Jon Tidak, saya tidak mau reboot. Saya ingin melanjutkan nanti, tetapi saya tidak akan mem-boot ulang sistem di tengah.
becko

Jawaban:

17

Tekan Control+ Z.

Ini akan menunda proses dan mengembalikan Anda ke shell. Anda dapat melakukan hal-hal lain sekarang jika Anda mau atau Anda dapat kembali ke proses latar belakang dengan memasukkan %diikuti oleh Return.

Perhatikan bahwa jika Anda melakukan ini pada sesuatu yang perlu responsif, Anda akan menambahkan sistem, tetapi jika itu hanya seperti nanocontoh, semuanya harus baik-baik saja.

Oli
sumber
Apakah aman untuk menghentikan sementara proses terminal?
Pandya
@ Pandya: Kenapa tidak?
Pekerjaan di
@ Pandya saya yakin itu tergantung pada prosesnya ... Jika ada sesuatu yang sangat sensitif waktu, mungkin tidak berharap untuk ditangguhkan tetapi kebanyakan hal harus baik-baik saja.
Oli
15

Ini adalah bash job control

Gunakan CTL-Z untuk menghentikan pekerjaan.

Kemudian Anda bisa mengetikkan bg untuk menjalankannya di latar belakang, jika hanya ada pada pekerjaan, ia melakukan hal itu.

Jika Anda memiliki lebih dari satu, Anda dapat menggunakan pekerjaan untuk mendaftar kemudian dan menggunakan fg% N dan bg% N untuk efek yang diinginkan.

Contoh:

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] + Berhenti menemukan / usr -nama 

ubuntu @ ip-10-170-59-120: ~ $ jobs
[1] + Berhenti menemukan / usr -nama "* .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
...

Untuk hal lain yang tidak terlampir pada TTY, Anda dapat menggunakan SIGSTOP dan SIGCONT . Jadi misalnya jika Anda berpikir daemon menyebabkan masalah tetapi Anda tidak tahu yang mana itu, Anda dapat mengirim pid SIGSTOP, itu seperti menekan jeda, lalu periksa perubahan, OK bukan itu, dan bilas dan ulangi sampai Anda temukan masalahnya.

Semoga ini membantu.

ppetraki
sumber
1
Jawaban yang bagus! Bolehkah saya menambahkan bahwa itu bukan hanya hal bash? Shell Korn bekerja dengan cara yang sama.
Sergiy Kolodyazhnyy
4

Saya tahu bahwa jawaban ini sedikit terlambat, tetapi Anda dapat menggunakan pintasan Ctrl+suntuk menghentikan program Anda (jika Anda ingin membaca output atau sesuatu seperti ini), maka Anda dapat terus menggunakan pintasan Ctrl+q.

Sidahmed
sumber