Bagaimana cara melanjutkan fungsionalitas terminal setelah mengeluarkan perintah "menangguhkan"?


8

Saya mengetik suspenddi terminal saya, dan itu menunda eksekusi.

Bagaimana cara saya kembali ke terminal berfungsi normal? Saya sudah mencoba Ctrl+ C, Ctrl+ D, Ctrl+ Q( seperti yang disarankan di sini ), dan Ctrl+ Z, tetapi tidak ada yang berhasil. Tentu saja saya dapat menutup terminal dan membuka yang baru, tetapi apakah tidak ada cara untuk "melanjutkan" fungsi terminal?

Saya menjalankan Ubuntu GNOME 16.04, dengan shell default (bash).


Maaf untuk itu saya bertanya di sini, tetapi apa tujuan dari perintah ini?
pa4080

1
Untuk berhenti mengeksekusi skrip dan melanjutkannya nanti;)
Rinzwind

Jawaban:


10

Dari tautan Anda:

sampai menerima sinyal SIGCONT.

Jadi itu akan terjadi kill -SIGCONT {pid}

  • killall -CONT bash akan melanjutkan semua.
  • kill -18 {pid} akan sama.
  • dan begitu juga kill -s CONT {pid}

Menurut daftar ini, seharusnya kontrol-z tetapi Anda harus menggunakan control-z untuk menghentikan proses:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

Anda memerlukan {pid} sesi shell yang berjalan di terminal


Dan ada juga perintah kontrol pekerjaan :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

Seharusnya juga Ctrl + Q, tapi itu tidak berfungsi karena suatu alasan. Saya berasumsi karena karena shell ditangguhkan, tidak dapat menerima Ctrl + Q (SIGCONT) dari sesi yang ditangguhkan. Ini berfungsi jika, seperti yang Anda katakan, Anda gunakan kill -SIGCONT PIDtetapi saya tidak dapat menemukan cara sederhana untuk mendapatkan PID sesi yang ditangguhkan ketika saya memiliki banyak terminal terbuka.
terdon

Ini tidak berfungsi. Saya menggunakan ps aux | istilah grep untuk mendapatkan pid dari terminal, mencoba semua 3 variasi SIGCONT tetapi tidak ada yang berhasil. Ketika saya baru saja membunuh pid terminalnya ditutup, jadi saya memang memiliki pid yang benar.
Cerberus

@Cerberus Anda menginginkan PID sesi shell berjalan di terminal, bukan terminal itu sendiri. Jika Anda hanya memiliki satu terminal terbuka, itu seharusnya mudah ditemukan pgrep bash. Jika tidak, gunakan pstree -p, temukan PID terminal di sana dan lihat PID anak-anaknya, salah satunya harus menjadi sesi bash Anda.
terdon

Saya perlu memiliki dua sesi terminal setidaknya dalam skenario, satu ditangguhkan dan yang lainnya untuk mengirim SIGCONT.
Cerberus

1
SIGCONT biasanya diabaikan, jadi mengapa tidak menembak saja killall -CONT bash? :-)
Jonas Schäfer
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.