Pertanyaan Saya tidak bisa menggunakan terminal saat perintah gedit sedang berjalan


Saya baru-baru ini menginstal 12.04.
Saat saya mencoba mengedit file dengan geditSaya tidak bisa menggunakan terminal sampai saya menutup file pengeditan atau saya harus membuka terminal baru. Tapi saya pikir saya tidak memiliki masalah ini dengan 11.04, namun saya tidak yakin.
Apakah ada pula untuk menghindari ini dan menggunakan terminal yang sama saat mengedit file.


40
2017-07-14 07:14


asal




Jawaban:


Jawaban singkat

Di terminal tidak responsif:

  1. Memukul Ctrl+Z.
  2. Mengetik bg dan masuk.
  3. Mengetik disown dan masuk.

Jawaban panjang

Di terminal yang tidak responsif, tekan Ctrl+Z, ini akan "menghentikan" proses (atau "pekerjaan") dan mengembalikan kontrol konsol kepada Anda. Namun, Anda akan memperhatikan itu gedit menjadi tidak responsif dan Anda tidak dapat menggunakannya.

Tambahan: jika Anda ingin, Anda dapat menjalankan perintah jobs, Anda akan melihat bahwa itu akan membaca Berhenti Untuk gedit perintah, itu sebabnya kamu tidak bisa menggunakannya.

Untuk membuat pekerjaan berhasil berjalan di latar belakang (yaitu untuk membuat gedit responsif kembali), jalankan perintah bg (berarti latar belakang). Sekarang Anda akan dapat menggunakannya gedit, dan pada saat yang sama memiliki dorongan untuk diri sendiri.

Tambahan: sekarang, jika Anda mengeksekusi jobs, Anda akan melihat bahwa itu akan membaca Lari.

Anda dapat mengatasi semua ini sejak awal. Ketika Anda meluncurkan gedit dari terminal, tambahkan & sampai akhir komando, jadi sesuatu seperti ini gedit /path/to/file &. Ini akan diluncurkan gedit di latar belakang dari tempat pertama (Anda mungkin perlu menekan Memasukkan beberapa kali untuk mendapatkan kontrol konsol kembali).

Tambahan: jika Anda mengikuti catatan tambahan ini, Anda mungkin memperhatikan bahwa kedua kalinya Anda melakukannya jobs, Anda bisa melihat bash itu menambahkan & sampai akhir gedit perintah.

Setelah Anda terbiasa dengan sistem ini, Anda mungkin memperhatikan bahwa jika Anda menutup terminal, gedit juga akan berhenti, bahkan tanpa dialog konfirmasi. Untuk mencegah hal ini terjadi, jalankan disown, yang akan melepaskan proses gedit dari terminal, menghapusnya dari daftar yang dikembalikan oleh jobs.


76
2017-07-14 07:38



Selalu mengejutkan saya bahwa tidak ada cara untuk langsung mem-latar belakang proses yang berjalan di latar depan. Kamu memiliki untuk menghentikannya terlebih dahulu, yang terkadang tidak layak. - detly
@hati membaca bagian "Kamu bisa mengatasi ..." lagi! - guntbert
@guntbert - Tidak membantu jika prosesnya sudah berjalan ... - detly


Ketik saja:

gedit <filename-to-edit> &

Ini akan segera mengembalikan command prompt kepada Anda.


41
2017-07-14 09:48



Ini adalah idiom unix yang penting, dan patut diketahui. Perintah apa pun dapat dijalankan di latar belakang dengan cara ini. Alat-alat yang interaktif jelas akan dikacaukan oleh perlakuan ini, tetapi misalnya bubblesort war_and_peace.txt% akan memungkinkan penyortir Anda untuk menyimpang jauh di mahakarya (untuk waktu yang sangat lama) saat Anda melanjutkan pekerjaan Anda (misalnya, menerapkan quicksort atau sesuatu) - Jon Kiparsky
@JonKiparsky Amusing contoh - tidak membuat titik. - Joe


Anda bisa menggunakan nohup untuk mencegah GUI untuk dilampirkan ke terminal:

nohup mupdf some.pdf &

Ini akan memungkinkan Anda untuk menutup terminal yang Anda luncurkan, tanpa program ditutup.

Anda juga harus memperhatikan, bahwa perintah nohup akan membuat file dengan stdout dan stderr dari perintah yang Anda jalankan. Jika Anda ingin mencegahnya, tambahkan &>/dev/null sebelum &.

nohup mupdf some.pdf &>/dev/null &

25
2017-08-11 23:21



"nohup" adalah singkatan dari "no hang up". Ini tanggal kembali ke awal Unix, ketika (fisik) terminal secara teratur dilampirkan melalui saluran telepon, dan karena itu Anda akan menutup terminal dengan menutup telepon. - MSalters
Informasi tambahan: Perintah nohup akan membuat file nohup.out mengandung keluaran dari perintah. Ini berguna jika Anda ingin melihat pesan kesalahan. Jika Anda tidak ingin file yang dibuat, tambahkan redirection sebagai berikut: nohup mupdf some.pdf &>/dev/null & - Paddy Landau


Anda juga bisa menggunakan disown perintah. Ini sangat berguna ketika Anda sudah memulai proses yang Anda tidak ingin lagi terpasang ke terminal.

Prosedur dasar jika saya ingat dengan benar, adalah sesuatu seperti ini:

$ > firefox      #Oops
Ctrl + z         #Suspend the process
$ > bg           #Push the process to the background
$ > disown       #Detach most recent process started or stopped
$ > exit         #Terminal gone!

Perhatikan bahwa memungkiri adalah bash spesifik.

Posting blog ini menjelaskan kedua metode dengan cukup baik.

Halaman manual untuk disown


19
2017-08-12 03:25



Jalan pintas: firefox & disown - Flimm


Dari man gedit:

-b, --background
         Run gedit in the background.

Jadi, jika Anda lari gedit dengan -bpilihan, itu akan mulai di latar belakang:

gedit -b [FILE-NAME]

Selain itu, selanjutnya Anda dapat membuat alias untuk gedit -b (Lihat sini cara membuat alias permanen):

alias gedit='gedit -b'

Mulai sekarang, di masa depan Anda dapat menggunakan gedit [FILE-NAME] seperti biasa dan akan dimulai di latar belakang.


11
2017-07-15 12:02



Itu ide yang buruk untuk menggunakan alias untuk mendefinisikan kembali perintah umum. Anda akan menemukan banyak untaian tentangnya di stackexchange. Tidak apa-apa untuk menggunakan alias dengan nama yang berbeda. Singkatnya, aliasing perintah yang ada menciptakan perilaku tak terduga pada mesin Anda jika orang lain menggunakannya (seperti ketika mencoba untuk membantu Anda memperbaiki masalah lain) dan itu melakukan hal yang sama kepada Anda ketika Anda menggunakan sistem lain tanpa alias dan perintah Anda tidak bekerja seperti yang Anda harapkan. Salah satu poster anak-anak untuk ini adalah alias rm = 'rm -i'. Itu membuat Anda terbiasa menghapus hal-hal dengan kesempatan kedua yang tidak selalu ada. - Joe


Ketik saja:

gedit FILENAME & disown

Mengakhiri perintah dengan & di bash menjalankan perintah itu di latar belakang. Namun, proses itu masih melekat pada terminal.

Tanpa disown, jika Anda menutup terminal, gedit akan menutup, bahkan tanpa meminta Anda untuk menyimpan file yang diedit. disown lepaskan proses latar belakang dari terminal saat ini, sehingga jika Anda menutup terminal, gedit akan terus berjalan seperti biasa. Ternyata saya salah, ini bukan kasus untuk bash, tetapi itu adalah kasus untuk zsh. Anda masih harus berlari detach setelah melakukannya ctrl-z dan bg, meskipun, bahkan di bash.

Anda dapat mengetahui lebih lanjut tentang built-in jobs, disown dan & metakarakter dalam manpage untuk bash perintah Manpage icon, terutama bagian yang diberi label "kontrol pekerjaan".


10
2017-07-16 21:42



dengan disown Saya bisa menjaga gedit terbuka setelah terminal ditutup. Saya tidak mengerti apa yang Anda katakan tentang "ini bukan kasus untuk bash, tetapi ini adalah kasus untuk zsh" - KrIsHnA


Ini mungkin karena Anda membuka gedit via terminal. Ketika Anda melakukan ini, Anda melihat output baris perintah yang biasanya tersembunyi jika dimulai melalui GUI. Cara terbaik untuk memperbaikinya adalah membuka jendela terminal baru. Yang lainnya akan tersedia setelah gedit ditutup. Anda juga dapat menggunakan tombol yang disarankan pengguna di atas.


0
2017-07-16 19:12



Jendela terminal baru hanya mengotori desktop, meskipun itu diminimalkan. Menggunakan & dengan atau tanpa penolakan jauh lebih sederhana dan lebih bersih. - Joe