Simpan status sesi layar GNU lengkap

32

Apakah mungkin untuk tetap "keadaan" dari jendela layar GNU (atau hanya shell standar) sehingga saya dapat memuat kembali semuanya setelah reboot:

  • Jumlah kerang yang dibuka
  • Nama setiap shell
  • Direktori saat ini dari setiap shell
  • Sejarah setiap shell
  • Jika memungkinkan, variabel lingkungannya
Barthelemy
sumber

Jawaban:

19

Sangat tidak mungkin untuk menyimpan sesi layar yang lengkap.

Yang dapat Anda lakukan adalah membuat hak .screenrcyang akan mengatur beberapa hal setelah Anda me-restart sistem Anda.

Berikut adalah beberapa komentar untuk hal-hal yang Anda daftarkan:

  • Jumlah kerang yang dibuka
  • Nama setiap shell
  • Direktori saat ini dari setiap shell

Saya menggunakan sesuatu seperti ini di saya .screenrcuntuk membuka beberapa shell tertentu pada startup:

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

Anda akan mendapatkan string antara '' sebagai nama jendela Anda dan perintah setelah nama akan dieksekusi pada shell default Anda. Sertakan skrip apa pun yang Anda inginkan, misalnya ubah dalam direktori tertentu dan buka beberapa log.

  • Sejarah setiap shell

Pernahkah Anda berpikir untuk membagikan sejarah shell di seluruh sesi Anda? IMHO ini membuat segalanya lebih mudah. Di ZSH dilakukan dengan setopt SHARE_HISTORYdi Anda.zshrc

  • Jika memungkinkan, variabel lingkungannya

Jika Anda benar-benar membutuhkan ini dan tidak ingin pertukaran, Anda dapat berpikir tentang skrip shell, yang membaca kondisi layar saat ini, menyimpan jumlah shell, variabel lingkungan, dll. Dan menempatkan informasi ini dalam skrip startup dipanggil oleh Anda .screenrc. Bagi saya ini tidak akan sepadan dengan usaha karena saya menghargai lingkungan yang bersih setelah reboot, jika saya dapat menyesuaikan windows default untuk layar.

echox
sumber
Terima kasih atas saran Anda. Saya menemukan cara untuk berbagi sejarah saya di bash (tidak semudah dengan zsh) jadi saya punya satu aliran perintah yang bertahan. Mengenai .screenrc, saya harus memikirkannya. Sayangnya, sepertinya Anda hanya dapat menjalankan skrip tertentu (perintah seperti 'cd' tidak berfungsi), tetapi itu tidak masalah. Saya tidak keberatan dengan variabel lingkungan jika saya dapat menginisialisasi shell dengan skrip.
Barthelemy
cd adalah fungsi bawaan dari shell Anda, perintah cd tidak akan masuk akal di luar "shell" :-) Tetapi Anda cukup memasukkan skrip yang berisi cd / foo / bar setelah shebang. Maka shell baru Anda akan berubah ke direktori ini.
echox
ya saya mengerti perbedaan ini, saya hanya berpikir bahwa perintahnya entah bagaimana diteruskan ke shell dan kemudian dieksekusi di shell. Tapi saya tidak punya masalah menulis skrip inisialisasi :-) Sejarah yang dibagikan itu ide yang hebat btw, saya sangat menyukainya.
Barthelemy
10

Saya menemukan sebuah proyek bernama screen-session . Ini memungkinkan Anda untuk menyimpan dan memuat kembali sesi Layar GNU sampai batas tertentu.

BUGHUNTER
sumber
2

Ada alat untuk membekukan keadaan proses yang disebut cryopid . Namun, saat ini tidak berfungsi dengan layar GNU karena tidak mendukung penciptaan kembali hierarki sub-proses. Mereka menyatakan bahwa mereka ingin mencapai ini di masa depan tetapi proyek tersebut tampaknya tidak terlalu aktif saat ini. Meskipun demikian, Anda mungkin ingin melacak kemajuan mereka.

fschmitt
sumber
0

Saya membangun hal serupa pada solaris tahun yang lalu. Bahkan tidak berhubungan dengan layar; itu terkait sesi. "jika $ TTY = apa pun". echox memiliki ide yang tepat.

tip: jika Anda melakukan ini di beberapa mesin, ketahuilah bahwa setiap mesin layak mendapatkan definisi sendiri tentang apa yang harus dilakukan ketika Anda login di sana, daripada semuanya sama per nfs Anda terpasang / home atau serupa.

HTH, -pbr

pbr
sumber