Anda harus screen -R -d
melampirkan sesi yang ada secara otomatis jika ada dan membuat sesi sebaliknya.
Pastikan Anda hanya melakukan ini pada shell interaktif . Sumber Bash ~/.bashrc
bahkan untuk cangkang non-interaktif ketika proses induknya adalah rshd atau sshd (ini disebutkan dalam dokumentasi, tetapi mudah untuk dilewatkan). Anda dapat mengatakan bahwa shell bersifat interaktif karena $-
mengandung i
.
case $- in
*i*) screen -Rd;;
esac
Ini tidak akan dengan mudah membiarkan Anda menjalankan sesi layar yang berbeda di terminal yang berbeda.
Anda harus melepaskan dari layar, lalu keluar dari shell induk untuk keluar. Ini dapat diatasi dengan menggunakan exec screen
alih-alih screen
.
Jika Anda memulai shell selain shell login, Anda akan dimasukkan ke dalam layar, yang bukan yang paling Anda inginkan. Saya setidaknya akan membatasi ini ketika Anda menjalankan langsung dalam sesi ssh interaktif, dengan sesuatu seperti berikut ini di ~/.bash_profile
:
case "/$(ps -p $PPID -o comm=)" in
*/sshd) screen -R -d;;
esac
Berhati-hatilah saat Anda melakukan hal-hal rumit dengan .bashrc
kesalahan Anda yang menyebabkan shell keluar akan membuat Anda sulit masuk.
Apa yang saya sarankan adalah untuk tidak memodifikasi file inisialisasi shell Anda di server, tetapi menjalankan layar secara eksplisit dari klien, seperti pada
ssh -t host.example.com screen -R -d
(Anda mungkin akan membuat alias shell atau pintasan lingkungan desktop pada klien.) Dengan cara itu Anda dapat dengan mudah memilih untuk tidak menjalankan layar, tentukan nama sesi alternatif dan sebagainya.