ฉันจะเข้าถึงเซสชั่น tmux หลังจากที่ฉันออกได้อย่างไร


19

ฉันใช้ tmux กับ EC2 AWS แต่ฉันต้องการดูว่าเกิดอะไรขึ้นในเซสชันเดียวที่ฉันสร้าง

ฉันใช้Ctrl+ bแล้วd ออกจากเซสชัน

ใช้อูบุนตู 16.04


2
คุณลองtmux attachไหม
Stephen

หลังจากใช้ tmux หรือเมื่อใช้ครั้งแรก
Vitor Abella

โดยปกติคุณ luanch tmux ทำบางสิ่งแล้วถอดออก จากนั้นคุณใช้ tmux Attach เพื่อกลับไปที่เซสชันก่อนหน้านั้น
Stephen

คำตอบ:


23

ฉันต้องการดูว่าเกิดอะไรขึ้นในเซสชันเดียวที่ฉันสร้าง

เท่าที่ฉันรู้คุณสามารถดูรายการเซสชัน tmux ของคุณโดยใช้

tmux list-sessions เพื่อดูว่าเซสชันใดกำลังทำงานบน tmux

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

  1. หากคุณไม่ได้กำลังเรียกใช้เซสชั่น tmux (หรือไม่อยู่ในเซสชั่น tmux ในปัจจุบัน) คุณแนบโดยการทำงานtmux attach -t n(โดยที่ -t หมายถึงเซสชันเป้าหมายและ n สำหรับหมายเลขเซสชันนั้น)

  2. หากคุณกำลังทำงานภายในเซสชั่น tmux อีกครั้งคุณจะได้รับข้อผิดพลาดในการพยายามเชื่อมต่อกับเซสชั่นอื่นดังนั้นวิธีที่ง่ายที่สุดในการดูว่ามีอะไรทำงานอยู่ที่นั่นคือการใช้tmux list-windows -aคำสั่งแล้วย้ายบานหน้าต่าง / หน้าต่างใด ๆ

การย้ายหน้าต่างโดยใช้tmux move-window -s n1 -t n2( -s == หน้าต่างซอร์ส , -t == หน้าต่างเป้าหมายที่หน้าต่างต้นทางจะแนบมาด้วยn1 == หมายเลขของหน้าต่างที่คุณต้องการย้ายและn2คือหมายเลขของหน้าต่างที่คุณต้องการย้าย)

รูปแบบN1และN2ตัวเลขมีการสั่งซื้อ / sessionNumb:windowNumbจัดรูปแบบเป็น ดังนั้นเซสชันแรกในหน้าต่างแรกจะเป็น 0: 1 และเซสชันที่สองในหน้าต่างแรกจะเป็น 1: 1

บันทึก. n2จะต้องมีเซสชันที่พร้อมด้วยหน้าต่างที่ยังไม่ได้สร้าง หากคุณย้ายหน้าต่างไปยังหน้าต่างที่สร้างไว้แล้วคุณจะได้รับข้อผิดพลาดว่า "หน้าต่างเป้าหมายไม่ว่างเปล่า" และการย้ายไปยังเซสชันที่ไม่ได้สร้างขึ้นจะทำให้เกิดข้อผิดพลาด "ไม่พบเซสชัน n"

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

คุณสามารถใช้ไวยากรณ์ที่คล้ายกันเกือบกับการย้ายหน้าต่าง tmux move-pane -s *n1* -t *n2*แต่คุณทำ

ที่ไหนn1ตอนนี้คือการจัดรูปแบบเป็นsessionNumb:windowNumb.paneNumbและเพื่อให้เป็นN2

ตัวอย่าง

หลังจากtmux list-windows -aคุณจะได้อะไรแบบนี้

0:1: Project- (4 panes) [177x48]
0:2: Mirror (3 panes) [177x48]
0:3: Chat! (1 panes) [177x48]
0:4: ssh* (1 panes) [177x48]
1:1: zsh (2 panes) [176x45]
1:2: zsh* (1 panes) [176x45]
1:3: zsh- (1 panes) [176x45]

ตอนนี้ย้ายหน้าต่าง "แชท" จากเซสชั่นแรกไปยังเซสชั่นที่สองของฉันฉันจะต้องทำงานtmux move-window -s 0:3 -t 1:4(จำไม่ได้ย้ายหน้าต่างไปที่หน้าต่างที่สร้างขึ้นแล้ว)

ย้ายบานหน้าต่าง

หากคุณจำเป็นต้องย้ายบานหน้าต่างแล้วคุณต้องทำtmux list-panes -aหรือถ้าคุณรู้อยู่แล้วว่าหน้าต่างมันก็มาจากคุณสามารถtmux list-panes -t 0:1 ดู explainations รูปแบบดังกล่าวข้างต้น

ผลลัพธ์มาแสดงเซสชัน 0 หน้าต่าง 1 (-s 0: 1) มีบานหน้าต่างเหล่านี้

1: [177x34] [history 3/10000, 4119 bytes] %7 (active)
2: [88x13] [history 541/10000, 231972 bytes] %8
3: [88x13] [history 2/10000, 1541 bytes] %9

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

tmux list-panes -F "#{pane_current_command}" -t 0:1

ซึ่งจะแสดงคำสั่งที่รันอยู่ในแต่ละบานหน้าต่าง

ในกรณีของฉัน

vim
zsh
python (sadly it's runnuning `ranger`)

ดังนั้นหลังจากการระบุบานหน้าต่างที่คุณต้องการ (พูดเป็นกลุ่มหนึ่ง) คุณต้องย้าย

tmux move-pane -s 0:1.1 -t 1:1.2เพื่อย้ายไปยังบานหน้าต่างเฉพาะในกรณีนี้ 2

หากคุณมีบานหน้าต่างเดียวในหน้าต่างเป้าหมายคุณจะtmux move-pane -s 0:1.1 -t 1:1.ไม่สามารถบานหน้าต่างเป้าหมายได้และจะยังคงใช้งานได้

ฉันหวังว่านี้จะตอบคำถาม


0

ทำตามคำตอบข้างต้นคุณสามารถลอง:

tmux lsเพื่อรับหมายเลขเซสชัน และจากนั้น

tmux attach-session -t <session_number>

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