Sesi SSH saya tampaknya menurun meskipun itu bukan masalah utama saya - masalah utama adalah sesi saya sebelumnya masih hidup, lebih buruk lagi salah satu dari mereka berjalan visudo
mencegah saya mengaksesnya!
who
menunjukkan sejumlah sesi semua kecuali sesi saya saat ini yang saya tahu telah terputus, bagaimana saya bisa mengakhiri yang lama sehingga melepaskan sumber dayanya?
fuser -k /dev/pts/0
atau terminal apa pun yang muncul diwho
output. Agak aneh semua SIGHUP yang diabaikan itu. Apakah mereka menjalankanscreen
sesi atau sesuatu?who
lagi), terima kasih!Jawaban:
Untuk mengatasi masalah langsung, bahwa file sudoers dikunci, Anda cukup menghapus file kunci. Biasanya akan menjadi `/etc/sudoers.tmp"; periksa halaman manual untuk visudo untuk memverifikasi. Jika Anda menghapus file kunci, Anda dapat menjalankan visudo lagi.
Untuk menghapus semua sesi yang masih menggantung, pertama-tama cari tahu pid dari sesi Anda saat ini. Kemudian, jika pid Anda sendiri adalah 12345, lakukan
Anda mungkin ingin melakukannya tanpa final
| sh
terlebih dahulu hanya untuk memeriksa PID yang Anda rencanakan untuk dibunuh.Jika Anda menggunakan Linux, Anda bisa menggunakannya
untuk membunuh sesi SSH tertua Anda. Terus lakukan itu sampai sesi Anda saat ini adalah satu-satunya yang tersisa.
Anda mungkin juga ingin mengatur agar
ServerAliveInterval 15
Anda.ssh/config
mengirim pesan keepalive setiap 15 detik ketika tidak ada data yang dikirim.man ssh_config
untuk informasi lebih lanjut.sumber
grep -v 12345
sebagian dari sintaks? lulus semua yang tidak mengandung12345
?grep -v 12345
berarti "menghapus baris apa pun yang cocok12345
dari pertandingan". Karenanya, pertama-tama Anda harus mengidentifikasi PID dari sesi Anda sendiri, dan gunakan PID itu sebagai ganti12345
.who
atautop
masih menunjukkan jumlah pengguna yang ditandatangani lama, bahkan harus menunjukkan hanya 1. Bagaimana itu bisa dipaksa untuk disegarkan?Jika Anda daftar proses sehingga Anda melihat perintah dan argumen mereka (seperti misalnya
ps -f
dari procps tidak), Anda harus melihat kemudian proses sshd disebut misalnya:Terminal (
pts/7
) adalah bagian kunci di sini - jika Anda membandingkannya dengan terminal Anda saat ini (tty
), Anda dapat melihat mana sesi aktif Anda. Tentu saja ada cara lain untuk melakukan itu (seperti melihat PID dari shell yang sedang berjalan dan menemukan yang ada di pohon proses), tetapi ini kemungkinan yang paling mudah. Anda kemudian dapat menggunakan sesuatu di sepanjang baris ini:Anda kemudian dapat memberi makan PID untuk dibunuh
xargs
tetapi selalu pastikan Anda tidak membunuhsshd
proses utama yang menangani koneksi baru .Pada catatan terkait, maklum bahwa
ps
keluaran parsing yang cukup umum adalah rawan kesalahan (terutama di berbagai sistem) karena variabilitas format outputnya (di sini dimitigasi secara luas oleh penggunaan-o pid= -o command=
).sumber
Ini akan membunuh sesi yang menggantung selama 2+ hari. Itu bisa dimasukkan sebagai cron.
Ini akan membunuh semua kecuali Anda (sesi aktif terakhir). Jalankan ini dari terminal.
sumber