เป็นไปได้ไหมที่จะตรวจสอบว่าตอนนี้ฉันอยู่ในเซสชั่นหน้าจอหรือไม่ ฉันต้องการมันเพื่อตรวจสอบว่ากดปุ่ม ctrl + d จะตัดการเชื่อมต่อฉันจากเซิร์ฟเวอร์หรือเพียงแค่ปิดหน้าจอปัจจุบัน ขอบคุณ
เป็นไปได้ไหมที่จะตรวจสอบว่าตอนนี้ฉันอยู่ในเซสชั่นหน้าจอหรือไม่ ฉันต้องการมันเพื่อตรวจสอบว่ากดปุ่ม ctrl + d จะตัดการเชื่อมต่อฉันจากเซิร์ฟเวอร์หรือเพียงแค่ปิดหน้าจอปัจจุบัน ขอบคุณ
คำตอบ:
คุณสามารถดู$STY
ตัวแปร (ตัวแปรที่กำหนดโดยคำสั่งหน้าจอ ) ถ้าไม่ใช่ "" แสดงว่าคุณอยู่ในเซสชันหน้าจอ
ฉันอยู่ในหน้าจอ
$ echo $STY
29624.pts-1.iain-10-04
$
ฉันไม่ได้อยู่ในหน้าจอ
$ echo $STY
$
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
คุณสามารถดูตัวแปร $ TERM
echo $TERM
หากเป็นscreen
เซสชั่นตัวแปรคำควรกลับ "หน้าจอ"
root@deore:/volumes# echo $TERM
screen
Ctrl-a -d (เพื่อออกจากหน้าจอ)
root@deore:/volumes# echo $TERM
xterm
ตรวจสอบด้วย: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen
"$TERM" = "screen"
ดูเหมือนว่าจะถูกรักษาไว้เมื่อเข้าสู่sudo
สภาพแวดล้อมซึ่งแตกต่างจาก$STY
ตัวเลือก
หากคุณไม่ได้เปลี่ยนการเชื่อมโยงคีย์เริ่มต้นคุณสามารถทำCtrl+ a-> Ctrl+ tซึ่งจะแสดงเวลาหากคุณอยู่ในหน้าจอ สิ่งนี้จะใช้ได้แม้ว่าคุณจะมี ssh: d อยู่ที่อื่นไม่เหมือนกับคำแนะนำอื่น ๆ
caption
คำสั่งใน~/.screenrc
เป็นวิธีที่ดีที่จะแยกความแตกต่างเซสชั่นหน้าจอ
ฉันใช้สิ่งนี้เป็นการส่วนตัว:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
มันเพิ่มบรรทัดเช่นนี้ที่ด้านล่างของหน้าจอ:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
ด้วยส่วนแรก (ชื่อระบบ + โหลด) เป็นสีเขียวและวันที่เป็นสีชมพู มีประโยชน์และยากที่จะพลาด!
ฉันพบวิธีแก้ไขปัญหาอื่นแล้ว:
แก้ไขของคุณ.screenrc
ดังนั้นเซสชันหน้าจอของฉันจึงดูแตกต่างจากเทอร์มินัลปกติอย่างสิ้นเชิง
.screenrc
ไฟล์ตัวอย่าง
screen -ls
เพื่อดูเซสชันของคุณและ
screen -r sessioninfo
เพื่อเชื่อมต่อกับอีกครั้งหากไม่ได้เชื่อมต่อ
screen -D -r sessioninfo
เพื่อเชื่อมต่อกับอีกครั้งที่ไม่ได้เชื่อมต่อ
screen -ls
ทำ มันจะระบุอย่างชัดเจนAttached
เมื่อเทียบกับDetached
สถานะ
ตัวอย่างที่แนบมา:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
ตัวอย่างที่แยกออก:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)