คำถามติดแท็ก gnu-screen

screen (GNU Screen) เป็นตัวจัดการหน้าต่างแบบเต็มหน้าจอที่มัลติเทอร์มินัลฟิสิคัลระหว่างกระบวนการต่าง ๆ (โดยทั่วไปคือเชลล์แบบโต้ตอบ) สำหรับจอภาพคอมพิวเตอร์ดูแท็ก / จอภาพ

3
ส่งข้อความไปยังหน้าจอเดี่ยว
ฉันพยายามเรียกใช้เซิร์ฟเวอร์ minecraft บนเซิร์ฟเวอร์ unRAID ของฉัน เซิร์ฟเวอร์จะทำงานในเปลือกแล้วนั่งรอการป้อนข้อมูล ในการหยุดมันฉันต้องพิมพ์ 'หยุด' และกด Enter จากนั้นมันจะช่วยโลกและออกอย่างสง่างามและฉันกลับมาที่เปลือก ทั้งหมดนี้ใช้งานได้หากฉันเรียกใช้ผ่าน telnetting ในช่อง NAS แต่ฉันต้องการเรียกใช้โดยตรงบนกล่อง นี่คือสิ่งที่ฉันเคยลองเป็นครั้งแรก: #define USER_SCRIPT_LABEL Start Minecraft server #define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first cd /mnt/disk/sde2/MCunraid screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar MCunraid เป็นโฟลเดอร์ที่ฉันมี Craftbukkit.jar และไฟล์ทั้งหมดของโลกเป็นต้นหากฉันพิมพ์บรรทัดหน้าจอนั้นลงในหน้าจอโดยตรงหน้าจอจะทำการติดตั้งและเซิร์ฟเวอร์จะเปิดขึ้น หากฉันดำเนินการบรรทัดนั้นจากภายในสคริปต์ดูเหมือนจะไม่ได้ตั้งค่าหน้าจอ สำหรับการหยุดเซิร์ฟเวอร์ฉันต้อง 'พิมพ์' …
44 linux  gnu-screen 

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

6
ฉันจะวนรอบบานหน้าต่างภายในหน้าต่างใน tmux เหมือนในหน้าจอได้อย่างไร
ฉันคิดว่าการย้ายบานหน้าต่าง tmux ไปที่หน้าต่างเป็นคำถามเดียวกัน แต่ดูเหมือนจะไม่เป็นเช่นนั้น มาจากการใช้หน้าจอ GNU เป็นประจำฉันกำลังมองหา tmux ทำสิ่งเดียวกัน ในสิ่งที่ฉันทำอย่างสม่ำเสมอคือมีหน้าต่างเปิดอยู่สองสามหน้าต่างหนึ่งเปิดด้วยบางโค้ดในกลุ่มและสองหน้าต่างเทอร์มินัลเปิดเพื่อทดสอบรหัสและบางครั้งหน้าต่างหรือสองสำหรับสิ่งอื่น ๆ ฉันแบ่งหน้าจอในแนวตั้งและมักจะมีหน้าต่างเป็นกลุ่มในบานหน้าต่างด้านบนแล้วหน้าต่างอื่น ๆ ในบานหน้าต่างด้านล่าง คำสั่งหลักจากนั้นผมก็ใช้งานCtrla, Tabการหมุนในหมู่บานหน้าต่างและCtrla, nการหมุนระหว่างหน้าต่างภายในบานหน้าต่าง ตัวอย่างเช่นด้วยเสียงเรียกเข้าในบานหน้าต่างด้านบนฉันสลับไปที่บานหน้าต่างด้านล่างแล้วหมุนผ่านเทอร์มินัลอื่นทำสิ่งที่ฉันต้องการ หน้าจอยังคงแบ่งตลอดเวลา ปัญหาคือผมไม่สามารถหาความสามารถเทียบเคียงได้กับหน้าจอCtrla, nใน tmux การสลับหน้าต่างดูเหมือนจะไม่ทำงานภายในบานหน้าต่าง แต่จะกระโดดอย่างสิ้นเชิง หากหน้าจอถูกแบ่งดูเหมือนว่ามีเพียงสองตัวเลือกที่จะข้ามไปยังหน้าต่างบางส่วนที่ไม่ได้แยกจากนั้นแยกหรือเพื่อแยกย่อยของบานหน้าต่าง ไม่ใช่สิ่งที่ฉันกำลังมองหา ข้อเสนอแนะ (นอกเหนือจากเพียงแค่ติดกับหน้าจอ)?

2
วิธีเปลี่ยนไดเร็กทอรีหน้าต่างใหม่ที่เป็นค่าดีฟอลต์จากภายใน tmux
ฉันเพิ่งย้ายจากหน้าจอ GNUเพื่อtmux ฉันพบว่ามันค่อนข้างคล้ายกัน แต่มีการสนับสนุนที่ใหญ่กว่า (ฉันเปลี่ยนเนื่องจากปัญหาเวลาหลบหนีใน neovim - ความละเอียดเป็นเพียง tmux) น่าเสียดายที่ใน tmux ฉันไม่สามารถหาคำสั่งที่คล้ายกันนี้: screen -X eval "chdir $(some_dir)" คำสั่งข้างต้นเปลี่ยนไดเรกทอรีเริ่มต้นสำหรับหน้าต่างใหม่ / หน้าจอ / บานหน้าต่างจากภายในหน้าจอ GNU ดังนั้นเมื่อฉันกดCtrl+ a(คล้ายกับ tmux Ctrl+ b) - หน้าต่างใหม่เปิดใน$(some_dir)ไดเรกทอรี มีสิ่งที่คล้ายกันใน tmux? คำตอบ: ฉันได้ใช้ @Lqueryvg คำตอบและรวมกับคำแนะนำ @Vincent Nivoliers จากความคิดเห็นและที่ให้ฉันผูกพันใหม่สำหรับคำสั่งattach -c "#{pane_current_path}"ที่ตั้งไดเรกทอรีปัจจุบันของฉันเป็นค่าเริ่มต้น ขอบคุณ
41 linux  tmux  gnu-screen 

4
nohup เทียบกับหน้าจอ
ก่อนหน้านี้ฉันเคยnohupทำงานที่มีพื้นหลังใหญ่ แต่ฉันสังเกตเห็นว่ามีผู้คนจำนวนมากที่ใช้งานscreenในบริบทนี้ ไม่screenให้ชนิดของความได้เปรียบการทำงานบางอย่างที่ผมไม่รู้หรือมันเป็นเพียงเรื่องของการตั้งค่าหรือไม่?

4
วิธีการเปลี่ยนชื่อเซสชันหน้าจอ gnu
ฉันใช้เซสชั่นหน้าจอและฉันต้องการเปลี่ยนชื่อ ฉันรู้ว่าเมื่อเริ่มเซสชันหน้าจอใหม่ฉันสามารถใช้ตัวเลือก '-S' เพื่อตั้งชื่อ ฉันจะเปลี่ยนชื่อเมื่อเซสชันเริ่มต้นแล้วได้อย่างไร
39 gnu-screen 

4
มีคำสั่ง“ log” ของ GNU Screen เทียบเท่าใน tmux หรือไม่?
ฉันใช้คำสั่ง "log" ของหน้าจออย่างหนักเพื่อบันทึกผลลัพธ์ของเซสชันไปยังไฟล์เมื่อฉันทำการเปลี่ยนแปลงในสภาพแวดล้อมที่กำหนด ฉันค้นหาผ่านหน้า man ของ tmux แต่ไม่พบสิ่งที่เทียบเท่า ใครรู้คุณสมบัติคล้ายกันใน tmux หรือฉันต้องเขียนสคริปต์เสื้อคลุมของตัวเองเพื่อทำ แก้ไข: ฉันตระหนักถึง 'สคริปต์' และโปรแกรมอรรถประโยชน์อื่น ๆ ที่อนุญาตให้ฉันเข้าสู่ระบบเซสชั่น เหตุผลที่ฟังก์ชั่นการใช้งานของหน้าจอมีประโยชน์มากคือความสามารถในการกำหนดตัวแปร logfile ซึ่งใช้การยกเว้นสตริงเพื่อระบุแต่ละเซสชันโดยไม่ซ้ำกัน เช่นฉันมีฟังก์ชั่นเชลล์ซึ่งกำหนดชื่อโฮสต์จะ SSH ไปยังโฮสต์นั้นในหน้าต่างหน้าจอใหม่และตั้งชื่อหน้าต่างเป็นชื่อโฮสต์ เมื่อฉันเริ่มบันทึกของเซสชั่นนั้นจะมีคำนำหน้าชื่อหน้าต่าง หากฟังก์ชันนี้ไม่มีอยู่ใน tmux ฉันจะต้องสร้างชุดเชลล์ฟังก์ชันใหม่เพื่อตั้งค่า 'สคริปต์' ของเซสชันที่ฉันต้องการบันทึก นี่ไม่ใช่เรื่องยากอย่างมาก แต่อาจไม่คุ้มค่ากับความพยายามที่หน้าจอทำสิ่งที่ฉันต้องการอยู่แล้ว
35 gnu-screen  logs  tmux 

2
ป้องกันหน้าจอ GNU จากการยกเลิกเซสชันเมื่อสคริปต์ทำงานสิ้นสุดลง
ฉันพยายามบังคับให้หน้าจอ GNU สร้างเทอร์มินัล "เสมือน" โดยไม่ต้องเชื่อมต่อกับมันรันสคริปต์ภายในและไม่หยุดเซสชันเมื่อสคริปต์สิ้นสุดลง ฉันลองชุดค่าผสมมากมายรวมถึง: screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh หรือ screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh และไม่มีใครทำงาน ฉันได้รับเซสชันโดยไม่มีสคริปต์ที่ดำเนินการสคริปต์จะดำเนินการ แต่เซสชันจะสิ้นสุดลงเมื่อเสร็จสิ้นหรือฉันได้รับข้อผิดพลาด "ไม่พบเซสชันหน้าจอ" สิ่งที่ฉันพยายามทำอยู่ก็คือรัน UDP listener ที่เขียนด้วย PHP และทำให้มันทำงานใน infinte loop (อย่าหยุดฟัง) ใช่ - ฉันสามารถเรียกใช้สคริปต์ PHP ด้วย&ในตอนท้ายบังคับให้ PHP CLI ทำงานเป็น daemon ปัญหาคือว่าฉันกำลังใช้ชิ้นส่วนของขยะที่เรียกว่าเซิร์ฟเวอร์ (QNAP - ไม่เคยซื้อขยะนี้!) ซึ่งดูเหมือนจะไม่สนใจสิ่งนี้ ทันทีที่ฉันออกจากเซสชัน SSH สคริปต์จะหยุดทำงาน ดังนั้นscreenดูเหมือนจะเป็นตัวเลือกเท่านั้น แต่ฉันไม่เข้าใจว่าทำไมมันถึงเลิกเซสชันเมื่อคำสั่งหรือสคริปต์สิ้นสุดลง แก้ไข : …
34 gnu-screen 

5
ค้นหาข้อความบนเอาต์พุตเทอร์มินัล
ฉันใช้งานแอพพลิเคชั่นที่มีคำสั่ง$ grails run-appที่จะพิมพ์เข้าสู่ระบบเทอร์มินัลเหมือนด้านล่าง สิ่งที่ฉันต้องการคือค้นหาข้อความเฉพาะ (พูดuser authorities) ในบันทึกนี้เพื่อให้ฉันสามารถตรวจสอบเพิ่มเติมได้ วิธีหนึ่งในการใช้ Logging Apis เพื่อเขียนไฟล์ข้อความ แต่ฉันต้องการค้นหาในเทอร์มินัลในขณะนี้ ฉันพบคำถามที่คล้ายกันเกี่ยวกับวิธีค้นหาข้อความบนเทอร์มินัลโดยตรงซึ่งแนะนำscreenคำสั่ง แต่ฉันไม่รู้ว่าscreenทำงานอย่างไรในกรณีนี้ ฉันพยายาม $ screen grails run-app แต่ไม่สามารถเดินหน้าต่อไปได้ ฉันสามารถดูรายการหน้าจอด้วย prayag@prayag:~/zlab/nioc2egdelonk$ screen -list There is a screen on: 8076.pts-2.prayag (10/06/2013 12:13:25 PM) (Attached) 1 Socket in /var/run/screen/S-prayag.

2
วิธีการรับเอาท์พุทภายใน "screen" ออกไปยังสคริปต์
ฉันมีscreenอินสแตนซ์กำลังทำงานอยู่และฉันจะต้องเรียกใช้รหัสบางอย่างภายในscreenและรับผลลัพธ์จากสคริปต์ของฉัน screen -S session_name -X eval 'stuff "$cmd"\015'ส่วนแรกเป็นเรื่องง่ายมากผมก็ (ฉันแก้ไขบรรทัดที่พบในสคริปต์ ) ส่วนที่สองออกไปทางเอาท์พุทยากกว่า ฉันจะได้รับผลงานทั้งหมดได้ขนาดเท่าไหร่

3
บังคับให้หน้าจอ GNU reflow เป็นความกว้างของเทอร์มินัลปัจจุบันบน reattach?
ฉันต้องการบังคับให้หน้าจอ GNU reflow เป็นความกว้างของเทอร์มินัลที่มีอยู่เมื่อฉัน reattach เซสชัน ดูเหมือนว่าฉันจะทำงานอย่างถูกต้องก่อนที่ฉันจะอัพเกรดเครื่องเป็น CentOS 6 แต่ฉันไม่สามารถหาวิธีกู้คืนได้ ( TERM=xterm) เมื่อใดก็ตามที่ฉันแนบเซสชันโดยไม่คำนึงถึงสถานะเมื่อฉันถอดออกมันจะเปิดตัวที่ 80 คอลัมน์ปรับขนาดเทอร์มินัลของฉัน (PuTTY ในกรณีนี้) พร้อมกับมัน ฉันกำลังเปิดตัวและติดตั้งใหม่กับ: screen -aA -R <session> . screenrc ของฉันมีเฉพาะสิ่งต่อไปนี้และการผูกคีย์ที่ไม่เกี่ยวข้อง: term xterm defscrollback 10000 # status line at the bottom hardstatus on hardstatus alwayslastline hardstatus string "${-}%{.0c}%-w%{.y0}%f%n %t%{-}%+w %=%{..G}[%H] %{..Y} %D %M %d, %Y …

4
บันทึกสถานะเซสชันหน้าจอ GNU ที่สมบูรณ์
เป็นไปได้ไหมที่จะคงสถานะ "สถานะ" ของหน้าต่างหน้าจอ GNU (หรือเพียงเปลือกมาตรฐาน) เพื่อให้ฉันสามารถโหลดทุกอย่างใหม่หลังจากรีบูต: จำนวนของเชลล์ที่เปิด ชื่อของแต่ละเชลล์ ไดเรกทอรีปัจจุบันของแต่ละเชลล์ ประวัติของแต่ละเชลล์ ถ้าเป็นไปได้ตัวแปรสภาพแวดล้อมของพวกเขา
32 shell  gnu-screen 

1
คุณจะข้ามหรือข้ามข้อความแนะนำเมื่อหน้าจอเริ่มต้นได้อย่างไร
เมื่อฉันเริ่มscreenฉันจะได้รับข้อความแจ้งรุ่นที่อยู่ลิขสิทธิ์และที่อยู่อีเมลรายงานข้อผิดพลาด screenฉันไม่ต้องการที่จะเห็นนี้ทุกครั้งที่ผมเริ่มต้น ดูเหมือนว่าการค้นหาหน้าคนจะไม่ส่งผลให้เกิดการแก้ปัญหาและฉันหวังว่าผู้เชี่ยวชาญที่นี่รู้วิธีหลีกเลี่ยงหน้าข้อมูลนี้
31 gnu-screen 

5
คุณจะเปลี่ยนบรรทัดสถานะหน้าจอ GNU ตามชื่อโฮสต์ได้อย่างไร
ฉันมีโฮมไดเร็กตอรี่แชร์ที่ติดตั้งอัตโนมัติผ่าน NFS บนเซิร์ฟเวอร์ UNIX ทั้งหมดที่ฉันเข้าสู่ระบบ ฉันต้องการมี. screenrc อันเดียวที่ (ตัวอย่าง) วางชื่อโฮสต์ไว้ในบรรทัด hardstatus ในสีที่ต่างกันเพื่อระบุว่าเมื่อฉันเข้าสู่การผลิตเทียบกับการพัฒนา ชื่อโฮสต์ของเรานั้นสามารถทำได้อย่างง่ายดายผ่านการใช้การจับคู่รูปแบบ มีวิธีการใส่คำสั่งเงื่อนไขลงใน. screenrc หรือไม่ grep ที่รวดเร็วของ man page ดูเหมือนจะไม่เปิดเผยอะไรที่ชัดเจน แก้ไข: เพื่อชี้แจงฉันมีบรรทัดสถานะฮาร์ดที่กำหนดเองแล้ว ฉันต้องการเปลี่ยนสี / ฟิลด์ที่แสดงตามชื่อโฮสต์ที่เรียกใช้หน้าจอ ฉันมีสิ่งนี้สำหรับ PS1 ของฉันอยู่แล้ว แต่ฉันต้องการทำเช่นนี้ในบรรทัดสถานะของหน้าจอเมื่อฉันกระโดดออกจากโฮสต์เหล่านี้ไปยังเราเตอร์ / สวิตช์ซึ่งไม่อนุญาตให้ฉันทำสีที่ฉับพลัน ด้วยวิธีนี้ฉันสามารถมีหน้าต่างเดียวสำหรับการผลิตและอีกหนึ่งหน้าต่างสำหรับการพัฒนาด้วยสีของบรรทัดสถานะหน้าจอที่บอกฉันว่าฉันอยู่บนหน้าจอเพียงใด

2
วิธีปรับขนาดพื้นที่หน้าจอในแนวนอน
ฉันกำลังใช้screenเพื่อแยกเทอร์มินัลของฉัน แต่ฉันต้องการที่จะสามารถปรับขนาดมิติแนวนอนของหน้าจอแยก ถ้าฉันจะC-a :resize 10เปลี่ยนขนาดแนวตั้งเป็น 10 บรรทัดเท่านั้น ฉันจะประสบความสำเร็จเหมือนกัน แต่สำหรับมิติในแนวนอนได้อย่างไร

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