Jadi saya menjalankan apt-get upgrade
server ketika router memutuskan itu sudah terlalu lama sejak terakhir membuat saya marah: Itu memutuskan semua koneksi. Moral dari cerita ini adalah menggunakan screen
banyak hal saat Anda menggunakan router gelandangan.
Ngomong-ngomong, saya login kembali dan menemukan di htop bahwa prosesnya masih tergantung di sana, masih menunggu Y / n saya untuk di-upgrade (belum sempat, untungnya). Apakah ada cara saya bisa kembali ke sesi yang telah terputus? Saya akhirnya hanya membunuhnya karena itu bukan di tengah-tengah manajemen paket tetapi akan lebih baik untuk mengetahui referensi di masa depan.
apt-get
prosesnya masih berjalan. Seharusnya mati bersama dengan seluruh rantai proses hingga SSH. Saya perhatikan bahwado-dist-upgrade
secara otomatis dimulai pada sesiscreen
/byobu
: mungkin dalam beberapa keadaan,apt-get
apakah sama?Jawaban:
Jawaban untuk pertanyaan Anda yang tepat adalah: Anda tidak bisa . Saya pikir masalah utamanya adalah prosedur otentikasi tidak sinkron. Itu Tidak Bekerja Seperti Itu.
Seperti yang Anda perhatikan sendiri, solusinya adalah menggunakan layar jika memungkinkan (omong-omong, tmux adalah alternatif untuk layar).
sumber
byobu
adalah ujung depan yang bagus, lebih mudah digunakan untukscreen
(atautmux
) - pasti patut dilihat (:Untuk menjalankan proses yang tahan lama, saya menggunakan layar , atau byobu jika Anda ingin antarmuka yang lebih ramah.
Untuk layar, Anda dapat menggunakan:
Ini akan menjalankan [program] dan [argumennya] di dalam sesi layar . Setelah program selesai, sesi ditutup secara otomatis. Jika Anda ingin mempertahankan sesi setelah program Anda berjalan, jalankan saja layar tanpa argumen dan prompt baru akan muncul di dalam sesi. CTRL + A + D melepaskan terminal dari sesi saat ini.
Untuk melampirkan kembali ke sesi sebelumnya:
Jika hanya ada satu sesi yang terbuka, itu akan segera dipasang kembali. Jika beberapa sesi sedang berlangsung, ia akan menanyakan yang mana yang ingin Anda lampirkan. Jika Anda tahu nama sesi, Anda bisa menambahkannya sebagai argumen ke baris perintah ini.
Byobu adalah peningkatan yang bagus. Ini didasarkan pada layar , tetapi menyediakan bilah di bagian bawah yang menampilkan semua sesi saat ini sebagai tab dan memberikan pintasan yang lebih mudah untuk bergerak di sekitar itu. Kamu bisa:
KATA NASIHAT : hindari membiarkan sesi dibuka dengan root pengguna . Jika ada yang mendapatkan akses ke terminal Anda (lokal atau jarak jauh), mereka dapat dengan mudah melampirkan kembali ke sesi yang sedang berlangsung dan menggunakan sistem Anda sebagai root. Jika diperlukan, yang terbaik untuk memulai sesi menggunakan pengguna umum dan sudo baris perintah indivudual yang diperlukan.
sumber
Meskipun Anda tidak dapat memasang kembali ke sesi SSH yang rusak, Anda dapat melakukan proses yang berjalan di dalam SSH - yang secara fungsional setara dengan apa yang Anda inginkan.
Instruksi
Dalam kasus Anda, Anda akan mengambil alih
apt-get
proses untuk dikendalikan dari sesi SSH baru ,screen
sesi atau sejenisnya. Favorit saya untuk ini adalahreptyr
perintah:Kemudian, dengan pid yang Anda temukan untuk proses Anda:
Atau jika itu tidak berhasil, coba:
Setelah tahap ini, semua input keyboard Anda masuk ke program yang Anda ambil. Sayangnya Anda tidak akan melihat output lama dari sesi SSH, seperti
apt-get
output yang meminta Anda untuk konfirmasi.Penjelasan
Ada beberapa alat lain yang pada dasarnya bekerja sama dengan
reptyr
(yaitu, melaluiptrace
lampiran debug). Lihat pertanyaan dan jawaban berikut di mana mereka dibahas:Dalam instruksi di atas,
reptyr 10626
menggunakanptrace
lampiran debug sementarasudo reptyr -T 10626
perintah menggunakan mencuri TTY dan lebih disukai ( detail ).Akhirnya, alasan mengapa Anda tidak dapat mengambil alih sesi SSH dengan cara ini adalah karena suatu
sshd
proses tidak dikontrol oleh terminal host, alih-alih memberikan bagian slave dari terminal -pts
perangkat - sedangkan bagian master yang mengendalikannya berada pada mesin klien, di sini dengan sesi SSH yang rusak di antaranya. Saat Anda memaksa mengambil alihsshd
proses semacam itureptyr -s <pid>
, input keyboard Anda mengarah ke proses itu, bukan proses anak yang aktif. Jadi "Ctrl + Z" hanya akan mematikan itusshd
.sumber
Saya melakukan
do-dist-upgrade
via ssh dari laptop yang ditangguhkan, karenanyaBroken pipe
. Saat kembali ke mesin, saya melihat proses terkait pembaruan masih berjalan, di antaranyawhiptail
meminta saya untuk input (yang harus dipilih manajer tampilan) dan, yang relevan, milik rootSCREEN
. Saya dapat melakukansudo su -
danscreen -r
melampirkan sesi dan, lihatlah, saya memiliki dialog whiptail di depan saya dapat mengambil input. Saya dapat melanjutkan upgrade dengan mulus.Catatan: ini merupakan peningkatan dari Ubuntu 14.04 ke 16.04.
sumber