Apakah ide yang bagus untuk meletakkan "screen -r" di .bashrc saya?

17

Saya ingin menggunakan layar untuk menjaga sesi ssh tetap hidup di server saya. Akan lebih baik jika saya dapat secara otomatis melanjutkan sesi berjalan untuk pengguna saya ketika saya masuk. Cara mudah untuk melakukan ini adalah menambahkan "layar -r" ke .bashrc saya, dan ini sepertinya berfungsi dengan baik. Saya hanya ingin tahu apakah ini akan merusak sesuatu dalam kondisi yang belum saya uji. Adakah yang punya pengalaman di sini yang dapat memberi tahu saya apakah ini yang harus saya lakukan?

marcusw
sumber

Jawaban:

20

Anda harus screen -R -dmelampirkan sesi yang ada secara otomatis jika ada dan membuat sesi sebaliknya.

Pastikan Anda hanya melakukan ini pada shell interaktif . Sumber Bash ~/.bashrcbahkan 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 screenalih-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 .bashrckesalahan 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.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sempurna. Seharusnya ada di halaman manual.
marcusw
Bukankah lebih baik bagi ssh untuk menjalankan screen -D -Ratau bahkan screen -D -RR?
niutech
2

Skrip startup X server Anda sering memulai shell baru, mis. Jika Anda masuk menggunakan gdm menggunakan "Sesi Yang Ditentukan Pengguna".

Saya pikir apa pun yang tidak keluar dapat menyebabkan startup X Anda hang. Itu termasuk screen -r.

Mikel
sumber
Skrip startup server X tidak akan berjalan .bashrc. Tetapi ada keadaan lain di mana ini akan menjadi masalah, misalnya saat menjalankan ssh host.example.com somecommand(anehnya, bash memang berjalan .bashrcsaat itu).
Gilles 'SO- stop being evil'
Ada pada beberapa distro jika Anda memilih "Sesi yang Ditetapkan Pengguna". Di Ubuntu, sumber .profile secara eksplisit, yang lain memanggil .xsession dari dalam shell login, yang biasanya berarti .bash_profile, dan sebagian besar pengguna sumber .bashrc dari dalam .bash_profile mereka.
Mikel