"Layar" merujuk ke program yang disebutkan dalam Cara menyambung kembali ke sesi ssh terputus . Itu fasilitas yang bagus.
Tapi ada pertanyaan yang ingin saya ketahui. Bagaimana saya tahu apakah saya menjalankan di dalam "layar"? Perbedaannya adalah:
- Jika ya, saya tahu saya dapat dengan aman menutup jendela terminal saat ini, misalnya, menutup jendela Putty, tanpa kehilangan sesi shell (Bash dll).
- Jika tidak, saya tahu saya harus mengurus semua pekerjaan yang tertunda sebelum saya menutup jendela terminal.
Lebih baik, saya ingin status ini ditampilkan di PS1 prompt sehingga saya bisa melihatnya kapan saja secara otomatis.
linux
gnu-screen
Jimm Chen
sumber
sumber
Jawaban:
(Dicuri dari " Bagaimana saya bisa tahu apakah saya ada di layar? " Di StackOverflow dan ditulis oleh pengguna jho . PS Anda tidak dapat memilih duplikat di seluruh situs StackExchange.)
Periksa
$STY
. Jika nol, Anda berada di terminal "nyata". Jika berisi apa pun, itu adalah nama layar tempat Anda berada.Jika Anda tidak di layar:
Jika Anda berada di layar:
Jika Anda menggunakan tmux sebagai ganti layar, periksa juga
$TMUX
. Untuk menambahkan ini ke prompt Anda, tambahkan berikut ini ke Anda~/.bashrc
:sumber
sudo
default tidak akan mewarisi variabel lingkungan, termasuk$STY
. Tapi ini biasanya disebarkan ke lingkungan sudo, jadi mungkin memeriksa baik atau$TERM
$STY
$TERM=="screen"
Cari
$STY
yang menyediakan detail yangscreen
digunakan untuk berkomunikasi dengan dirinya sendiri;$WINDOW
maka akan menjadiscreen
nomor jendela saat ini .sumber
Pemeriksaan sederhana yang biasanya saya gunakan adalah dengan menekan Ctrl- a:
Jika kursor melompat ke awal baris , saya tidak berada di dalam sesi layar.
Jika tidak ada yang terjadi , saya tahu bahwa saya ada di dalam sesi layar dan saya baru saja menggunakan tombol kontrol layar. Saya kemudian tekan a(lompat ke awal baris), w(tampilkan jendela layar saat ini) atau jalankan perintah layar "tidak berbahaya" lainnya untuk kembali ke command prompt.
(Tentu saja, ini hanya berfungsi jika Anda sedang menjalankan bash atau perangkat lunak lain yang "melompat ke awal baris" atau melakukan sesuatu yang sama sekali tidak berbahaya ketika menekan Ctrl-a.)
sumber
Yah, sebagian besar waktu (absen seseorang berusaha mengacaukan sesuatu) Anda
TERM
akan diatur kescreen
(atau setidaknya menyebutkanscreen
suatu tempat).Solusi mudah untuk masalah ini hanya menjalankan layar di mana-mana. Jangan tinggalkan rumah tanpa itu, kataku.
sumber
$TERM
juga biasanya menyebar melaluisudo
, yang merupakan nilai tambah!Saya menyimpan ini di
.bashrc
:Ini tidak mudah, tetapi setiap kali saya membuat layar baru, ia menempatkan nomor jendela di prompt. Jika saya tidak berlari
screen
, tidak ada nomor.sumber
Saya punya cara yang lebih keren.
Tambahkan berikut ini ke ~ / .screenrc Anda dan Anda akan melihat baris status di bagian bawah (menunjukkan dalam teks terbalik tanggal, waktu dan beban sistem. Kode melarikan diri lebih banyak ditemukan di tautan halaman manual di bawah ini.
Sumber ini ketika dalam sesi layar dengan
ctrl-a:source ~/.screenrc
.Saya harus berterima kasih kepada Kyle Rankin dari Linux Journal untuk ini. Lihat artikelnya yang fantastis di http://www.linuxjournal.com/article/10950 . Bagian halaman manual yang dia maksud dapat ditemukan di http://www.gnu.org/software/screen/manual/screen.html#String-Escapes .
sumber
Anda juga dapat mengulangi pohon proses dari
$$
untuk melihat apakah Anda menemukan contoh layar. rantai yang tepat mungkin akan tergantung pada pengaturan Anda - pada kotak OS X saya,zsh
layar bagian dalam memilikilogin
sebagai induknya,SCREEN
sebagai kakek neneknya, danscreen
sebagai kakek buyutnya.sumber