วิธีกำหนดชื่อสำหรับหน้าจอ [ปิด]


471

ฉันใช้screenเครื่องมือมัลติเพล็กเซอร์บนเชลล์คำสั่งและเปิดหน้าจอเป็นจำนวนมาก ฉันลืมกระบวนการ ID ที่เชื่อมโยงกับงานใด

ฉันต้องการตั้งชื่อหน้าจอ แต่ไม่พบตัวเลือกใน manpage

ขณะนี้รายการหน้าจอมีลักษณะดังนี้:

There are screens on:
    5422.pts-1.aws1 (Detached)
    5448.pts-1.aws1 (Detached)
    5027.pts-1.aws1 (Detached)
3 Sockets in /var/run/screen/S-sb.

และฉันต้องการที่จะเห็นสิ่งนี้:

There are screens on:
    5422.logCleanWorker (Detached)
    5448.overNightLongTask(Detached)
    5027.databaseOverNightLongTask (Detached)
3 Sockets in /var/run/screen/S-sb.

ฉันจะทำสิ่งนี้ได้อย่างไร


4
คำถามดูเหมือนจะถามว่า "วิธีเปลี่ยนชื่อเซสชันที่มีอยู่" แทนที่จะเป็น "วิธีเริ่มเซสชันใหม่ด้วยชื่อ" ในบริบทนั้นคำตอบที่เลือกในปัจจุบันไม่เหมาะสมจริงๆ คำตอบที่ถูกต้องควรเป็นคำตอบของuser164176- stackoverflow.com/a/3309696/636762
Rakib

ชื่อเซสชันหน้าจอของคุณแนะนำให้คุณสร้างเซสชันหน้าจอใหม่สำหรับแต่ละงาน (อาจเป็นคำสั่งเดียว) หน้าจอรองรับหลายหน้าต่างดังนั้นคุณสามารถเรียกใช้งานเหล่านี้ทั้งหมดในหน้าจอเดียว
Melebius

3
สามารถย้ายข้อมูลไปที่ SuperUser (หรือไซต์ StackExchange อื่น ๆ ) ได้หรือไม่ เห็นได้ชัดว่ามันค่อนข้างมีประโยชน์สำหรับผู้คนจำนวนมากแม้ว่าจะอยู่นอกขอบเขตของไซต์นี้โดยเฉพาะ
Patrick Sanan

1
หากคุณพบตัวเลือกในไซต์นี้เพื่อย้ายไปที่นั่นด้วยประวัติทั้งหมดฉันจะตกลงย้ายมัน
spankmaster79

คำตอบ:


652

เพื่อเริ่มเซสชันใหม่

screen -S your_session_name

เพื่อเปลี่ยนชื่อเซสชันที่มีอยู่

Ctrl+ a, ชื่อ:เซสชัน YOUR_SESSION_NAMEEnter

คุณต้องอยู่ในเซสชั่น


14
นี่เป็นโซลูชันที่เหมาะสมเนื่องจากจะมุ่งเน้นที่การเปลี่ยนชื่อเซสชันที่มีอยู่แทนการสร้างเซสชันใหม่
thanos.a

4
หมายเหตุสั้น ๆ เกี่ยวกับC-a :ไวยากรณ์ .... "คำสั่งหน้าจอทั้งหมดจะมีคำนำหน้าด้วยปุ่ม escape ตามค่าเริ่มต้นC-a(ซึ่งเป็น Control-a บางครั้งเขียน^a) ในการส่งตัวอักษรC-aไปยังโปรแกรมในหน้าจอให้ใช้C-a aสิ่งนี้มีประโยชน์เมื่อทำงานกับ หน้าจอภายในหน้าจอตัวอย่างเช่นC-a a nจะย้ายหน้าจอไปที่หน้าต่างใหม่บนหน้าจอภายในหน้าจอ " (อ้างอิง: aperiodic.net/screen/quick_reference )
Nate Ritter

ชื่นชมมาก แม้ว่าฉันรู้ว่าคุณสามารถเริ่มต้นด้วยชื่อฉันมักจะเริ่มโดยไม่ต้องตั้งชื่อ ขอบคุณ!
Ketzak

2
ตกลงหลังจากดูมันสองสามปีต่อมา: D
spankmaster79

ฉันสามารถผูกC-a :sessionname NEWNAMEสิ่งที่พิมพ์ได้เร็วขึ้นหรือไม่ ฉันพยายามbind $ sessionnameแต่ตอนนี้เมื่อฉันC-a $ไม่ได้แจ้งชื่อใหม่ให้ฉัน เป็นไปได้ไหม?
andreas-h

592

ในการสร้างหน้าจอใหม่พร้อมชื่อfooให้ใช้

screen -S foo

จากนั้นเมื่อต้องการติดตั้งใหม่ให้เรียกใช้

screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)

16
ในโซลูชันของคุณคุณจะอธิบายวิธีสร้างชื่อใหม่ที่ถูกต้องแทนที่จะเปลี่ยนชื่อที่มีอยู่ ไม่มีใครที่ต้องการยกเลิกเซสชันหากเป็นไปได้ที่จะเก็บไว้
thanos.a

10
เลื่อนลงไปที่คำตอบของ user164176 เพื่อดูวิธีเปลี่ยนชื่อเซสชันที่มีอยู่
jlh

1
คำถามดูเหมือนจะถามว่า "วิธีเปลี่ยนชื่อเซสชันที่มีอยู่" แทนที่จะเป็น "วิธีเริ่มเซสชันใหม่ด้วยชื่อ" ในบริบทนั้นคำตอบที่เลือกในปัจจุบันไม่เหมาะสมจริงๆ คำตอบที่ถูกต้องที่เลือกควรเป็นคำตอบที่ได้รับuser164176- stackoverflow.com/a/3309696/636762ด้านล่าง
Rakib

ฉันค้นหา "อูบุนตูสร้างหน้าจอใหม่ด้วยชื่อ" บน google และนี่เป็นผลครั้งแรก สิ่งที่ฉันกำลังมองหา :) ขอบคุณ
Skylord123

หากต้องการเปลี่ยนชื่อเซสชัน: Ctrl + a,: sessionname YOUR_SESSION_NAME Enter
Slake

51

ตามที่ระบุไว้แล้วscreen -S SESSIONTITLEทำงานเพื่อเริ่มต้นเซสชันด้วยชื่อ ( SESSIONTITLE) แต่ถ้าคุณเริ่มเซสชันและภายหลังตัดสินใจเปลี่ยนชื่อ สามารถทำได้โดยใช้การเชื่อมโยงคีย์เริ่มต้น:

Ctrl+ a,A

ซึ่งแจ้งให้:

Set windows title to:SESSIONTITLE

เปลี่ยนSESSIONTITLEโดยย้อนกลับและพิมพ์ในชื่อที่ต้องการ เพื่อยืนยันการเปลี่ยนชื่อและแสดงรายการชื่อเรื่องทั้งหมด

Ctrl+ a,"


40
คุณกำลังปฏิบัติต่อเซสชันข้อตกลงและหน้าต่างแทนกันเมื่อพวกเขาไม่ได้ Ctrl+a, Aไม่ได้ตั้งค่าชื่อเซสชัน ( SESSIONNAME), จะตั้งค่าเฉพาะชื่อหน้าต่างปัจจุบันเท่านั้น screen -listชื่อของหน้าต่างภายในเซสชั่นจะไม่ปรากฏในรายการของการประชุมเมื่อสอบถามกับ คำถามถามว่าจะตั้งชื่อเซสชันอย่างไร
StvnW

5
มีประโยชน์ แต่เปลี่ยนชื่อหน้าต่างปัจจุบันไม่ใช่ชื่อเซสชัน
Znik

13

วิธีใช้หน้าจอที่ง่ายที่สุดพร้อมชื่อ

screen -S 'name' 'application'
  • Ctrl+ a, d= ออกจากโปรแกรมและเปิดทิ้งไว้

กลับไปที่หน้าจอ:

screen -r 'name'

ตัวอย่างเช่นการใช้คมกับหน้าจอ

สร้างหน้าจอ:

screen -S lynx lynx

Ctrl+ a, d= exit

คุณสามารถกลับมาใหม่ได้ในภายหลัง:

screen -r lynx

18
สามปัญหานี้ ก่อนอื่นมีหลายคนโพสต์สิ่งนี้แล้ว ประการที่สองคุณกำลังบอกเขาถึงการใช้งานหน้าจอพื้นฐานที่เขารู้อยู่แล้ว ข้อสามคุณไม่ได้ตอบคำถามเพราะเขาถามวิธีตั้งชื่อเซสชันหน้าจอที่มีอยู่แล้ว
Steely Dan

0

ฉันเป็นผู้เริ่มต้นสู่หน้าจอ แต่ฉันพบว่ามีประโยชน์อย่างมากในขณะที่กู้คืนการเชื่อมต่อที่หายไป คำถามของคุณได้รับการตอบแล้ว แต่ข้อมูลนี้อาจใช้เป็นส่วนเสริม - ฉันใช้ผงสำหรับอุดรูที่มีตัวจัดการการเชื่อมต่อที่ฉาบและตั้งชื่อหน้าจอของฉัน - "tab1", "tab2" ฯลฯ - สำหรับฉันภาพโดยรวมของ 8-10 แท็บสำคัญกว่าชื่อแท็บแต่ละชื่อ ฉันใช้แท็บที่ 8 สำหรับการเชื่อมต่อกับ db, อันดับที่ 7 สำหรับการดูบันทึก ฯลฯ ดังนั้นเมื่อฉันต้องการที่จะแนบหน้าจอของฉันฉันได้เขียน wrapper ง่ายๆที่เขียนว่า:

#!/bin/bash
screen -d -r tab$1

โดยที่อาร์กิวเมนต์แรกคือหมายเลขแท็บ


1
สิ่งนี้อาจทำได้ดีกว่าในฐานะฟังก์ชันทุบตี
ราคาพอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.