Saya perhatikan bahwa ketika saya mengeluarkan reboot
perintah, koneksi SSH saya langsung ditutup pada CentOS 7. Itu tidak berarti server telah reboot, karena saya masih bisa melakukan ping.
Tampaknya systemd membunuh sshd terlalu dini. Terkadang layanan macet atau hanya lambat, dan saya tidak bisa masuk lagi untuk memverifikasi apa yang salah meskipun server sudah mati.
Apakah ada cara untuk memberitahu systemd untuk hanya membunuh sshd setelah semua layanan lain mati?
Jawaban:
Bahkan jika Anda dapat memastikan bahwa SSH adalah layanan terakhir yang ditutup, itu tidak ada gunanya, karena Anda akan kehilangan koneksi segera setelah layanan jaringan dihentikan.
Mesin Linux yang melakukan boot memulai semua layanan dalam urutan yang telah ditentukan: pertama layanan yang paling vital, syslog, firewall, kemudian jaringan, dan akhirnya aplikasi yang membutuhkan akses jaringan (server web, server SSH, dll.). Saat dimatikan, layanan ini dihentikan dalam urutan terbalik. Jadi Anda akan segera kehilangan koneksi SSH.
Fakta bahwa SSH sudah turun saat Anda masih bisa melakukan ping ke mesin remote adalah normal.
sumber
Ini sedikit meretas, tetapi bagaimana dengan menambahkan sesuatu seperti:
ke bagian "[Layanan]"
/usr/lib/systemd/system/sshd.service
? Itu tidak akan menjamin pemesanan shutdown, tetapi jika Anda bisa mentolerir waktu shutdown yang lebih lama, itu mungkin memungkinkan Anda untuk menjaga shell Anda aktif cukup lama untuk memverifikasi bahwa semuanya dihentikan ok, atau untuk melakukan pencarian cepat. Tidak yakin apakah ini membantu dalam kasus umum, karena mungkin sudah terlambat untuk membatalkan shutdown yang bermasalah pada tahap ini, tetapi ini bisa berguna dalam situasi di mana Anda memiliki masalah berulang selama shutdown yang Anda coba debug.sumber
Saya tidak yakin apa yang Anda kejar di sini, tetapi hal pertama yang akan dipikirkan orang adalah mengubah prosesnya.
Jadi dalam kasus Anda, Anda dapat mengganti proses induk sshd:
sumber