Apakah aman untuk menutup shell hanya dengan mengklik "X" atau menggunakan "ctrl + d"?

11

Apakah aman untuk menutup shell hanya dengan mengklik "X" atau menggunakan "ctrl + d" saat login sebagai root dengan su atau lebih aman untuk menutupnya dengan mengetikkan "keluar"? Apakah ada perbedaan (keamanan-bijaksana) sama sekali atau apakah itu sama dan tidak masalah cara yang Anda gunakan?

pootzko
sumber

Jawaban:

13

Ctrl-D atau exitsama.

Jika Anda menggunakan "X", manajer jendela mengirimkan sinyal terminasi ke shell. Yang pada akhirnya memiliki hasil yang sama. Jika shell tidak bereaksi, pengguna biasanya mendapat peringatan dan kemudian dapat memaksa shell untuk mengakhiri (sama dengan kill -9 $PID).

Ada satu perbedaan kecil antara "X" - dan keluar-metode jika Anda menggunakan zshshell: Jika Anda memiliki proses latar belakang berjalan, exit/ ctrl-D menghasilkan pertama kalinya hanya pesan peringatan "Anda telah menjalankan pekerjaan", kedua kalinya shell ditutup. Dengan tombol "X", shell segera berakhir tanpa peringatan apa pun.

Jofel
sumber
5
Juga ada perbedaan dalam bash juga. Jika Anda ctrl + d, maka setiap proses yang dilatar belakangi &akan tetap berjalan. Jika Anda "X", maka mereka akan dihentikan.
Patrick
3
@ Patrick trik ini tampaknya tergantung pada terminal emulator daripada shell. Kecuali emulator secara eksplisit membunuh proses latar belakang, sejauh yang saya tahu bash tidak akan mengirim mereka SIGHUP tidak peduli bagaimana Anda keluar. Saya baru saja mencoba ini di Mac OS X 10.7.3. Terminal tidak membunuh proses latar belakang, tetapi Xterm (berjalan di X11) tidak. Saya tidak tahu apakah itu perilaku Xterm secara khusus atau X11 secara umum.
Chris Page
@ jofel ini tidak benar, lihat jawaban saya.
Patrick
@ Patrick terima kasih telah menunjukkan ini. Saya akan mengedit atau menghapus jawaban saya.
jofel
@jofel nah, jangan hapus, info zsh masih berguna. Saya hanya noob di zsh, jadi saya tidak bisa berkomentar di sana. Tapi itu memunculkan poin yang baik, jadi saya mengedit jawaban saya untuk mencatat bahwa shell yang berbeda dapat berperilaku berbeda, dan perilaku default yang saya jelaskan adalah bash dependen, sedangkan OP tidak menentukan shellnya.
Patrick
4

Menutup emulator terminal tidak sama dengan menekan CTRL + D(kecuali jika opsi huponexitdisetel).

  • Ketika Anda menutup terminal (mengklik "X"), emulator terminal mengirimkan SIGHUP ke shell. Ketika bash menerima SIGHUP, itu juga mengirimkan SIGHUP ke semua pekerjaan Anda.

  • Saat Anda keluar dari terminal dengan CTRL+Datau logoutatau exit, shell keluar tanpa mengirim SIGHUP ke semua pekerjaan. Ini adalah perilaku default, tetapi dapat diubah dengan menetapkan bash shoptpengaturan huponexit.

Jadi pada akhirnya jika tujuan Anda adalah untuk memastikan tidak ada yang berjalan di latar belakang, lebih aman untuk mengklik "X".

.

Info yang diberikan oleh jofel dalam komentarnya salah (maaf jofel). Terminal emulator tidak memiliki petunjuk pekerjaan apa yang berjalan di bawah shell, sehingga tidak dapat menghentikannya.

CATATAN :
Perilaku ini sepenuhnya tergantung pada shell. Sangat mungkin bahwa cangkang yang berbeda memiliki perilaku default yang berbeda.

Patrick
sumber
Ketika Ctrl+dproses diwarisi oleh PPID 1 = systemd
EdiD
1

Tidak ada perbedaan. Jadi, ketika Anda menekan ^ D, Anda melakukan hal yang sama dengan mengetikkan 'keluar':

$ su -
Password:
# [press ^D]
logout
Renan
sumber
Ya, CTRL+Ddan exitsama, pertanyaannya adalah tentang mengklik "X" manajer jendela untuk menutup jendela, tidak mengetik exit:-)
Patrick