Saya mulai curiga bahwa Ubuntu tidak memberi tahu aplikasi yang sedang berjalan bahwa ia dimatikan untuk membiarkannya keluar dengan benar tetapi sebaliknya memaksa mereka untuk berhenti.
Jika saya membiarkan chrome terbuka ketika mematikannya mengatakan bahwa itu tidak menutup dengan benar terakhir kali ketika saya membukanya lagi setelah boot, LibreOffice tidak bertanya apakah saya ingin menyimpan dokumen saya dan saya membuat aplikasi yang perlu menjalankan beberapa kode saat keluar tetapi tidak diizinkan untuk melakukannya saat komputer dimatikan.
Seperti yang saya pahami, SIGTERM pertama-tama dikirim ke semua proses untuk memungkinkan mereka keluar dengan bersih dan jika mereka tidak keluar, SIGKILL dikirim untuk memaksa mereka keluar. Tampaknya Ubuntu tidak mengirim SIGTERM sama sekali atau tidak memberikan aplikasi cukup waktu sebelum mengirim SIGKILL.
Apakah ada cara saya bisa memperbaikinya?
Saya menjalankan Ubuntu 16.04 tetapi masalahnya ada di 15.10 juga. Saya tidak tahu apakah itu ada di sana sejak saya mulai menggunakan Ubuntu ketika 15.10 adalah versi terbaru.
Sunting: Saya menggunakan Unity dan mematikan komputer saya dengan menekan roda gigi di sudut kanan atas dan memilih mematikan, meskipun masalahnya sama jika berjalan sudo halt
di terminal.
Sunting: Saya mengamati perilaku yang sama ketika hanya keluar. Dugaan saya adalah bahwa sinyal seharusnya dikirim pada saat logout dan karena itu masalah timbul pada shutdown dan log out.
Jawaban:
Sayangnya, cara ini tidak cukup. Banyak dari program-program yang benar-benar memiliki pengendali sinyal, tidak memblokir sinyal untuk menampilkan dialog konfirmasi. Penanganan sinyal seringkali minimal atau hilang.
Anda dapat dengan mudah mencobanya tanpa harus mematikan. Cukup kirim SIGTERM ke proses Firefox atau LibreOffice Anda yang sedang berjalan:
Biasanya, Firefox mungkin bertanya apakah Anda benar-benar ingin menutupnya. Selain itu, biasanya perlu beberapa saat untuk menutup, terutama ketika itu sudah berjalan untuk waktu yang lama dan menggunakan lebih dari 1 GB RAM - sering membutuhkan waktu satu menit untuk proses untuk mengakhiri setelah jendela terakhir telah ditutup. Tak satu pun dari ini terjadi ketika Anda mengirim SIGTERM, proses dihentikan begitu saja secara instan.
Namun, beberapa lingkungan desktop menutup semua jendela yang terbuka sebelum dimatikan. Tidak seperti SIGTERM, menutup jendela secara terprogram seperti mengeklik tombol X pada jendela itu, atau Alt+ F4. Ini juga yang dilakukan script pada jawaban lain - ia menggunakan wmctrl untuk menutup semua jendela yang terbuka dengan anggun.
Ketika jendela ditutup, program tidak terburu-buru dan dapat menutup segala sesuatu di dalam jendela itu, misalnya tab terbuka, dan itu juga dapat menampilkan jendela dialog jika ada pekerjaan yang belum disimpan. Setelah semua jendela aplikasi dibuka, proses biasanya berakhir tidak lama setelah itu.
Jadi itu tergantung pada lingkungan desktop Anda (dengan asumsi Anda menggunakan lingkungan desktop Anda untuk mematikan dan tidak
sudo poweroff
). Sebagai contoh, KDE harus menunggu jendela terbuka ditutup sebelum dimatikan, sedangkan MATE tidak.Intinya: Tutup semua jendela yang terbuka secara manual sebelum mematikan. Atau gunakan lingkungan desktop yang menunggu semua jendela ditutup.
sumber
Untuk apa nilainya, beberapa waktu lalu, saya telah menemukan prosedur ini di forum Manjaro:
}
Anda dapat menyebutnya dalam skrip Anda sendiri untuk menutup semua aplikasi yang terbuka sebelum mematikan (atau memulai ulang).
Satu-satunya masalah adalah, ia dibuat untuk Xfce jadi, perlu perubahan yang diterapkan Unity DE. Sedikit bantuan dari seseorang yang lebih berpengetahuan akan datang dengan baik di sini untuk membantu menyelesaikan masalah OP.
sumber
Sebenarnya, bagian skrip yang menutup semua jendela dan tidak bergantung pada DE tertentu tersedia di Ask. Jawaban kedua dan ketiga sangat berguna. Dengan hanya beberapa baris lagi, dan dengan membuat peluncur di panel atau di desktop Anda dapat mencapai shutdown anggun yang bekerja di DE yang Anda gunakan.
Cara menutup semua jendela yang terbuka dengan anggun
sumber