ฉันจะเพิ่มบัฟเฟอร์การเลื่อนในเซสชันหน้าจอที่ทำงานอยู่ได้อย่างไร


237

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

มีวิธีทำเช่นนี้หรือไม่?


เพียงในกรณีที่มีคนต้องการที่จะเพิ่มบัฟเฟอร์ scrollback เมื่อเริ่มต้นเซสชันใหม่:screen -h <numlines>
SCZ

คำตอบ:


180

หน้าคนอธิบายว่าคุณสามารถเข้าสู่โหมดบรรทัดคำสั่งในเซสชั่นการทำงานโดยการพิมพ์Ctrl+ A, :แล้วออกscrollback <num>คำสั่ง


4
คุณจะต้องทำสำหรับแต่ละหน้าต่างของหน้าจอปัจจุบันทีละรายการ
Matthew Wilcoxson

2
โดยที่<num>จำนวนบรรทัดของ scrollback
rakslice

หากคุณพบว่าคุณถึงบัฟเฟอร์สูงสุดที่เป็นค่าเริ่มต้นจะไม่สามารถแสดงประวัติได้มากขึ้นและการตั้งค่าโดยscrollback <num>จะไม่ช่วยให้คุณขยายบัฟเฟอร์อีกต่อไปคุณจะต้องทำซ้ำคำสั่งสุดท้ายเพื่อรับบัฟเฟอร์ประวัติทั้งหมด
Kamil

362

กดCtrl-aจาก:นั้นพิมพ์

scrollback 10000

เพื่อรับบัฟเฟอร์ 10,000 บรรทัดตัวอย่างเช่น

นอกจากนี้คุณยังสามารถตั้งค่าจำนวนบรรทัดเริ่มต้นของ scrollback ได้โดยการเพิ่ม

defscrollback 10000

ไปยัง~/.screenrcไฟล์ของคุณ

ในการเลื่อน (หากเทอร์มินัลไม่อนุญาตให้คุณตามค่าเริ่มต้น) ให้กดCtrl-a ESCแล้วเลื่อน (ตามปกติCtrl-fสำหรับหน้าถัดไปหรือCtrl-aหน้าก่อนหน้าหรือเพียงแค่ใช้ล้อเมาส์ / สองนิ้ว) ESCเพื่อออกจากโหมดการเลื่อนเพียงแค่กด

เคล็ดลับอื่น: Ctrl-a iแสดงการตั้งค่าบัฟเฟอร์ปัจจุบันของคุณ


9
+1 สำหรับคำใบ้พร้อม defscrollback ซึ่งตั้งค่าเป็น 1024 ใน Ubuntu 12.10 (ซึ่งฉันต้องใช้ในที่ทำงาน)
erik

2
byobu-screenบน Ubuntu 12.04 ดูเหมือนว่าจะตั้งค่า defscrollback เป็น 10,000
chronospoon

4
ฉันอยากจะชี้ให้เห็นว่าถ้า screenrc ของคุณเปิดข้อกำหนดเพิ่มเติมสำหรับคุณคุณต้องใส่ defscrollback ก่อนที่จะเปิดหน้าต่างมิฉะนั้นพวกเขาจะได้รับค่าเริ่มต้น 1024
majikman

มันไม่ทำงานบน mac ฉันใส่startup_message off' and 'defscrollback 5000' into my newly created ~ / .screenrc` และมันจะได้บรรทัดแรก แต่อันที่สองดูเหมือนจะถูกเพิกเฉย
เบ็น

9

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

การตั้งค่าจำนวนเริ่มต้นของบรรทัดการเลื่อนกลับโดยเพิ่มไฟล์defscrollback 10000 ของคุณ~/.screenrcเป็นวิธีแก้ไขที่ถูกต้อง

อย่างไรก็ตามฉันใช้ "defscrollback 200000" ใน./screenrcไฟล์ของฉัน


4

ดังที่ได้กล่าวไปแล้วเรามีสองวิธี!

 การตั้งค่าแบบโต้ตอบต่อเซสชัน (เซสชัน)

และมันก็ทำแบบโต้ตอบ! และมีผลทันที!

CTRL + Aตามด้วย:และเราพิมพ์scrollback 1000000และตีENTER

คุณแยกออกจากหน้าจอและกลับมา! มันจะเหมือนเดิมเสมอ

คุณเปิดอีกหน้าจอใหม่! และค่าจะถูกรีเซ็ตอีกครั้งเป็นค่าเริ่มต้น! ดังนั้นจึงไม่ใช่การตั้งค่าระดับโลก!

 และการตั้งค่าเริ่มต้นอย่างถาวร

ซึ่งจะทำโดยการเพิ่มdefscrollback 1000000การ.screenrc(ในบ้าน)

defscrollbackและไม่scrollback(def ยืนสำหรับการเริ่มต้น)

สิ่งที่คุณต้องรู้คือถ้าไฟล์นั้นไม่ได้ถูกสร้างขึ้น! คุณสร้างมันขึ้นมา !

> cd ~ && vim .screenrc

และคุณเพิ่มdefscrollback 1000000มัน!

หรือในคำสั่งเดียว

> echo "defscrollback 1000000" >> .screenrc

(ถ้ายังไม่ได้สร้าง)

มีผลบังคับใช้

เมื่อคุณเพิ่มค่าเริ่มต้นเป็น.screenrc! หน้าจอที่รันอยู่ที่แนบใหม่จะไม่มีผล! การ.screenrcทำงานในการสร้างหน้าจอ! และมันก็สมเหตุสมผล! เช่นเดียวกับคอนโซลปกติและการเปิดตัวเชลล์!

และหน้าจอที่สร้างขึ้นใหม่ทั้งหมดจะมีค่าที่ตั้งไว้!

ตรวจสอบขนาดบัฟเฟอร์หน้าจอที่มีประสิทธิภาพ

เพื่อตรวจสอบประเภทCTRL + Aตามด้วยi

และผลที่ได้จะเป็น

ป้อนคำอธิบายรูปภาพที่นี่

ที่สำคัญขนาดบัฟเฟอร์คือตัวเลขหลังเครื่องหมาย +
(ในภาพประกอบที่ฉันตั้งไว้ที่ 1 000 000)

โปรดทราบด้วยว่าเมื่อคุณเปลี่ยนการโต้ตอบ! ผลที่ได้คือทันทีและรับช่วงค่าเริ่มต้น!

เลื่อน

CTRL+ Aตามด้วยESC(เพื่อเข้าสู่โหมดคัดลอก)

จากนั้นไปด้วยUp, DownหรือPgUp PgDown

และESCอีกครั้งเพื่อออกจากโหมดนั้น

(ข้อมูลเพิ่มเติม: เพื่อคัดลอก hit ENTERเพื่อเริ่มเลือก! จากนั้นENTERอีกครั้งเพื่อคัดลอก! เรียบง่ายและเย็น)

ตอนนี้บัฟเฟอร์ใหญ่กว่า!

และนั่นคือการสรุปรายละเอียดที่สำคัญ!


ดีใจที่ได้ทราบขั้นตอนการเลื่อน!
skytree

ขอบคุณ เรียนรู้เคล็ดลับใหม่ในการตรวจสอบขนาดบัฟเฟอร์ของหน้าจอโดยใช้: CTRL + A ตามด้วย i
alphaGeek

3

คำเตือน: การตั้งค่านี้สูงเกินไปอาจทำให้ระบบของคุณมีอาการสะอึก ยิ่งคุณตั้งค่าไว้สูงหน่วยความจำเสมือนจะถูกจัดสรรให้กับกระบวนการหน้าจอมากขึ้นเมื่อเริ่มต้นเซสชันหน้าจอ ฉันตั้งค่า ~ / .screenrc เป็น "defscrollback 123456789" และเมื่อฉันเริ่มต้นหน้าจอระบบทั้งหมดของฉันจะแข็งตัวเป็นเวลา 10 นาทีก่อนกลับมาถึงจุดที่ฉันสามารถฆ่ากระบวนการหน้าจอได้ (ซึ่งกินเนื้อที่ 16.6GB จาก VIRT mem จากนั้น)


-3

สำหรับลูกหลานคำตอบนี้ไม่ถูกต้องตามที่ระบุไว้โดย Steven Lu ออกจากข้อความต้นฉบับอย่างไรก็ตาม

คำตอบเดิม:

สำหรับผู้ที่มาถึงผ่านการค้นหาเว็บ (หลายปีต่อมา) ...

เมื่อใช้หน้าจอบัฟเฟอร์การเลื่อนของคุณเป็นการรวมกันของทั้งสอง screenเลื่อนบัฟเฟอร์ตามคำตอบก่อนหน้านี้สองคำตอบรวมถึงบัฟเฟอร์การเลื่อนกลับของคุณ

ตรวจสอบให้แน่ใจว่าคุณกำลังเพิ่มบัฟเฟอร์ของ putty scrollback เช่นเดียวกับ buffer scrollback ของหน้าจอมิฉะนั้นหน้าต่างของคุณ putty เองจะไม่ยอมให้คุณเลื่อนกลับไปดูscreenประวัติ scrollback ของคุณ (เอาชนะด้วยการเลื่อนภายในหน้าจอด้วยctrl+a->ctrl+u)

คุณสามารถเปลี่ยนขีด จำกัด การเลื่อนสีโป๊วของคุณได้ภายใต้หมวดหมู่ "หน้าต่าง" ในการตั้งค่า การออกและเปิดเซสชัน putty อีกครั้งบนหน้าจอของคุณจะไม่ปิดหน้าจอ (สมมติว่าคุณเพิ่งปิดหน้าต่างโป๊วและไม่พิมพ์exit) ตามที่ OP ขอ

หวังว่าจะช่วยระบุสาเหตุที่การเพิ่มบัฟเฟอร์การเลื่อนหน้าจอไม่ช่วยแก้ปัญหาของใครบางคน


17
สิ่งนี้ไม่ถูกต้อง หน้าจอเก็บบัฟเฟอร์ของตัวเอง เมื่อคุณเลื่อนขึ้นด้วยหน้าจอโดยใช้โหมดการคัดลอกหน้าจอกำลังป้อนประวัติของหน้าจอให้คุณผ่านทางคำสาป เมื่อเทอร์มินัลมัลติเพล็กเซอร์เช่นหน้าจอถูกใช้บัฟเฟอร์ของเทอร์มินัลเทอร์มินัลอีมูเลเตอร์ไม่ได้ถูกใช้ (จริง ๆ แล้วมันอาจหรืออาจจะไม่สะสมขยะเป็นผลข้างเคียง)
สตีเวนลู

จุดที่ดีและฉันเชื่อว่าคุณถูกต้อง ... ฉันสงสัยว่าฉันควรลบคำตอบของฉัน?
แบรดพี

ฉันไม่แน่ใจ. ตามที่จะลบความคิดเห็นของฉันที่คนดูเหมือนจะชอบ
Steven Lu

3
ฮ่าฮ่าค่อนข้างถูก ฉันคิดว่าฉันจะแก้ไขให้ทราบว่ามันไม่ถูกต้อง แต่ทิ้งข้อความดั้งเดิมไว้
แบรดพี

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