GNU/Linux >> Belajar Linux >  >> Linux

Tidak Dapat Membunuh Proses Gedit Dari Pidnya?

Ini adalah urutan perintahnya, gedit dimulai, tetapi tidak dapat dimatikan dari ID prosesnya

$ gedit&
$ t=$!
$ echo $t
4824
$ kill $t
bash: kill: (4824) - No such process

Ini akan bekerja dengan baik untuk sleep proses, seperti

sleep 999&
[1] 4881
$ t=$!
$ echo $t
4881
$ kill $t
$ ps -p $t
[1]   Terminated              sleep 999

Apa bedanya? Bagaimana cara gedit proses dihentikan?

Jawaban yang Diterima:

gedit proses sudah dihentikan.

Ingat bagaimana aplikasi Windows terutama bekerja kembali di hari-hari Win16 sebelum Win32 datang dan menghapusnya:di mana ada hInstance dan hPrevInstance , mencoba menjalankan instance kedua dari banyak aplikasi hanya menyerahkan semuanya ke instance pertama, dan ini mempersulit alat skrip perintah (seperti Take Command) karena seseorang akan memanggil aplikasi untuk kedua kalinya, itu akan terlihat di sana di screen sebagai jendela tambahan, tetapi sejauh menyangkut penerjemah perintah, proses anak yang baru saja dijalankan segera keluar?

GNOME telah mengembalikan perilaku Win16 untuk Linux.

Dengan aplikasi GIO seperti gedit , aplikasi berperilaku sebagai berikut:

  • Jika tidak ada “server” terdaftar bernama org.gnome.gedit sudah ada di Bus Desktop per-pengguna/per-login, gedit memutuskan bahwa itu adalah contoh pertama. Itu menjadi org.gnome.gedit server dan terus berjalan.
  • Jika ada “server” terdaftar bernama org.gnome.gedit sudah ada di Bus Desktop per-pengguna/per-login, gedit memutuskan bahwa itu adalah contoh kedua atau berikutnya. Itu membangun pesan Bus Desktop ke instance pertama, meneruskan opsi dan argumen baris perintahnya, lalu keluar saja .

Jadi apa yang Anda lihat tergantung dari apakah Anda memiliki gedit server sudah berjalan. Jika belum, Anda akan berada di posisi sebvieira dan bertanya-tanya mengapa Anda tidak melihat perilaku yang dijelaskan. Jika sudah, Anda akan siap dan melihat gedit proses berakhir segera, terutama karena Anda belum memberikan opsi atau argumen baris perintah apa pun untuk dikirim ke "contoh pertama". Oleh karena itu, tidak ada lagi proses dengan ID tersebut.

Banyak kesenangan terjadi ketika, seperti yang disinggung di atas, Bus Desktop per-login dialihkan ke gaya "baru" dari Bus Desktop per pengguna, dan tiba-tiba tidak ada hubungan 1:1 antara Bus Desktop dan tampilan X. lagi. Aplikasi instans satu pengguna di seluruh bus tiba-tiba harus mampu berbicara dengan beberapa tampilan X secara bersamaan.

Kegembiraan lebih lanjut terjadi ketika orang mencoba menjalankan gedit sebagai pengguna super melalui sudo , karena tidak dapat terhubung ke Bus Desktop per pengguna atau terhubung ke Bus Desktop (pengguna super) yang salah.

Terkait:Bagaimana cara chmod tanpa /usr/bin/chmod?

Ada usulan untuk memberikan gedit opsi baris perintah yang membuat proses yang dipanggil hanya menjadi aplikasi editor yang sebenarnya , sehingga gedit akan berguna seperti yang ditunjuk editor oleh EDITOR variabel lingkungan (yang tidak untuk banyak penggunaan umum EDITOR , dari crontab ke git , ketika baru saja keluar segera). Proposal ini belum menjadi kenyataan.

Sementara itu, orang memiliki berbagai cara untuk memiliki instans kedua yang sederhana dari "editor teks ringan", seperti memanggil instans Bus Desktop yang sama sekali baru, pribadi untuk pemanggilan gedit , dengan dbus-run-session . Tentu saja, ini cenderung menjalankan server Bus Desktop GNOME lainnya di bus pribadi ini karena mereka dipanggil oleh gedit , membuatnya tidak “ringan” sama sekali.

Lapisan gula pada kue adalah ketika Anda mengikuti rekomendasi ini atau yang menyukainya dan memasukkan fungsi shell bernama gedit yang segera menghapus gedit proses dari daftar pekerjaan shell. Prosesnya tidak hanya berhenti dengan cepat sehingga Anda tidak melihatnya nanti dengan kill atau ps , tetapi shell bahkan tidak memantaunya sebagai pekerjaan yang dikendalikan oleh shell.

Bacaan lebih lanjut

  • Aplikasi/Gedit/NewSingleInstance. wiki GNOME. 2013.
  • “Deskripsi“. GApplication . Wiki Pengembang GNOME.
  • https://stackoverflow.com/questions/7553452/
  • Stefan Löffler (2011-05-04). tidak menggunakan kembali instance yang sedang berjalan saat dimulai dari nautilus. Bug #777292. Landasan peluncuran.

Linux
  1. Cara mematikan proses zombie di Linux

  2. Proses Keturunan?

  3. Bagaimana Cara Membunuh Proses Dengan Frasa Dalam Namanya??

  1. Bagaimana saya bisa mematikan proses dengan nama, bukan PID?

  2. Bagaimana cara menghitung penggunaan CPU dari suatu proses oleh PID di Linux dari C?

  3. Nama proses dari pidnya di linux

  1. Proses Yang Memiliki Pid 0?

  2. Bagaimana Proses Latar Belakang Mengetahui Pidnya Sendiri?

  3. Bagaimana cara menghentikan proses dari Python menggunakan pid?