การตั้งค่าชื่อสำหรับเซสชันหน้าจอ


44

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


ไม่ใช่คำถามการเขียนโปรแกรม ควรไปที่ SuperUser หรือ Unix
0xC0000022L

คำตอบ:


54

คุณสามารถตั้งชื่อเซสชันเมื่อเริ่มต้นด้วย-S nameตัวเลือก CTRL-a, :sessionname nameจากภายในหน้าจอทำงานคุณสามารถเปลี่ยนมันได้ด้วยการพิมพ์ คุณสามารถดูการทำงานการประชุมหน้าจอที่มีและเชื่อมต่อไปยังหนึ่งในชื่อที่มีscreen -lsscreen -xS name

ภายในเซสชันเดียวคุณสามารถตั้งชื่อแต่ละหน้าต่าง ทำได้โดยพิมพ์CTRL-a, Aชื่อที่คุณต้องการ คุณสามารถดูรายการแบบโต้ตอบของ windows ที่มีชื่อโดยการพิมพ์CTRL-a, "และเลือกหน้าต่างที่คุณต้องการเปลี่ยนจากรายการนั้น

การตั้งชื่อทั้งหน้าจอและหน้าจอเทอร์มินัลภายในหน้าจอมีประโยชน์อย่างมากสำหรับการจดจำสิ่งที่เป็นและทำไมคุณถึงเริ่มใช้งานตั้งแต่แรก


การเปลี่ยนเซสชั่นหน้าจอหลังจากที่เริ่มต้นเป็นไปได้ (โดยใช้:sessionname NEWNAME) แต่มันเป็น "ท้อแท้โดยทั่วไป" $STYตัวแปรสภาพแวดล้อมยังคงหมายถึงชื่อเดิม ดูscreenคู่มือ: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson

22

มีสองแนวคิดอยู่ที่นี่และฉันไม่แน่ใจว่าคุณมีแนวคิดใด:

  • คุณสามารถมีหลายหน้าต่างหน้าจอ แต่ละหน้าต่างรันเชลล์หรือโปรแกรมอื่น หน้าต่างทั้งหมดโฮสต์โดยกระบวนการเดียวกัน C-a cสร้างหน้าต่างC-a nและC-a pสลับไปยังหน้าต่างถัดไป / ก่อนหน้าและอื่น ๆ
  • คุณสามารถมีเซสชันได้หลายหน้าจอ แต่ละเซสชันถูกโฮสต์โดยกระบวนการของตัวเองและไม่ขึ้นอยู่กับเซสชันอื่นทั้งหมด หน้าจอเริ่มต้นที่ไม่มีตัวเลือกreattach ( -rหรือ-R) ใด ๆจะสร้างเซสชันใหม่

Windows มีหัวเรื่องซึ่งสามารถตั้งค่าผ่าน-tตัวเลือกบรรทัดคำสั่งการC-a Aเชื่อมโยงคีย์titleคำสั่งหรือ\ekลำดับการยกเว้น ดูคำตอบของ shellterสำหรับรายละเอียดเพิ่มเติม

เซสชั่นสามารถมีชื่อ โดยทั่วไปคุณจะตั้งชื่อบนบรรทัดคำสั่งด้วย-Sตัวเลือก หากคุณไม่ระบุชื่อหน้าจอจะสร้างขึ้น หากคุณใช้หลายเซสชันบนหน้าจอโดยทั่วไปคุณจะตั้งชื่อเซสชันต่างกัน คุณสามารถแสดงรายการเซสชันหน้าจอที่กำลังรันด้วยscreen -ls; คำแรกในแต่ละบรรทัดเซสชั่นคือ12345.sessionnameที่ 12345 เป็น ID กระบวนการหน้าจอ ใช้screen -r sessionnameหรือscreen -r 12345เพื่อดำเนินการเซสชันต่อที่ระบุผ่านชื่อหรือ ID กระบวนการ


1
ในการเชื่อมโยงคีย์เริ่มต้นเพื่อเปลี่ยนชื่อคุณต้องใช้ Ca A.
enzotib

11

อ่า ... หน้าจอมันพาฉันกลับ ;-)

สำหรับหนึ่งหน้าต่าง

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

สำหรับเซสชัน mutliple เริ่มต้นจาก. screenrc ของคุณ

screen -t top 2 nice top
screen -t ....

นี่คือลิงค์ไปยังสำเนาออนไลน์ของสำเนาหน้าคนสำหรับหน้าจอ

แก้ไข: เพิ่มแล้ว

หากต้องการเปลี่ยนชื่อหน้าจอปัจจุบันให้สร้างเครื่องมือเชลล์สคริปต์เช่น

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

ไม่ได้ทดสอบฉันไม่มีหน้าจอที่พร้อมใช้งานบนระบบที่ฉันกำลังทำงาน


ขอบคุณสิ่งนี้ช่วยได้มาก มีการเปลี่ยนชื่อเซสชันหน้าจอที่มีอยู่แล้วหรือไม่
จริง ๆ แล้ว

@Charlotte: ดูการแก้ไข ขอบคุณสำหรับการโหวต!
shellter

คำตอบที่ดี @shellter! ฉันอยากรู้อยากเห็นคุณว่า "พาฉันกลับไป" หมายความว่าคุณใช้อย่างอื่นวันนี้ (เช่น tmux) หรือเพียงแค่ว่ามันอายุมากกว่า 32 ปี ?
tutuDajuju

1
@tutuDajuju: อึกตอนนี้ที่ฉันคิดเกี่ยวกับมันฉันใช้screenเวลาอย่างน้อย 25 ปี screenฉันจะใช้เวลากลับมาเพราะตอนนี้มันเป็นกรณีการใช้งานพิเศษที่จะพาฉันไป ปกติฉันจะเปิดต่อX-Termsไป แต่ฉันจำได้ว่าเมื่อมันเป็นไปไม่ได้ที่จะทำงานXบนพีซี 486 ;-) ไชโย!
shellter

@shellter FYI ฉันรัน X บนพีซี 486 เครื่องที่มี RAM 8Mb ย้อนกลับไปในปี 1992 ...
Eno

4

ในขณะที่ทำงานscreen:

Ctrl+a(หรือscreenลำดับการหลบหนีของคุณคืออะไร)A


3

คำตอบข้างต้นได้บอกวิธีตั้งชื่อหน้าจอเมื่อคุณเริ่มใช้งาน พวกเขายังชี้ให้เห็นว่าหน้าจอไม่สามารถเปลี่ยนชื่อได้หลังจากที่เริ่มต้นแล้ว สามารถตั้งชื่อหน้าต่างได้ แต่ชื่อที่ใช้แนบกับหน้าจอยังคงเป็น pid.pty.host

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

ตัวอย่าง:

alias goncompile='screen -r 2354'

การออกคำสั่ง alias ด้วยตัวเองจะเตือนคุณว่าหน้าจอที่คุณมีและหน้าจอที่คุณตั้งไว้เพื่อแนบกับพวกเขา

ใช้unaliasเพื่อลบออก

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