tmux เทียบเท่า“ screen -R” หรือไม่


10

tmux attachคำสั่งทำหน้าที่มากขึ้นเช่นการรวมกันของscreen -rและscreen -x- แรก trys ที่จะแนบไปมากที่สุดเมื่อเร็ว ๆ นี้แฝดเซสชั่นแล้วถ้าไม่มีสามารถใช้ได้มันจะแนบไปกับเซสชั่นที่แนบมาในขณะนี้ ฉันต้องการเลียนแบบพฤติกรรมของscreen -R: ก่อนอื่นให้ลองแนบกับเซสชันที่ถูกดึงออกมาจากนั้นเริ่มเซสชันใหม่หากไม่มีเซสชันที่แยกออกมา เป็นวิธีที่ดีที่สุดในการบรรลุสิ่งนี้ใน tmux คืออะไร?

คำตอบ:


12

หลังจากปรึกษาตัวช่วยสร้างของ IRC ฉันมั่นใจว่าไม่มีคำสั่ง tmux เดียวที่มีพฤติกรรมนี้ โชคดีที่มันค่อนข้างง่ายที่จะเลียนแบบโดยใช้เชลล์:

(tmux ls | grep -vq attached && tmux at) || tmux

แก้ไขเล็กน้อยเพื่อบีบเอาท์พุท "ล้มเหลวในการเชื่อมต่อกับเซิร์ฟเวอร์: การเชื่อมต่อถูกปฏิเสธ" ในกรณีที่คุณกำลังเปิดตัวเซสชั่นใหม่:(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
l8nite

3

แม้จะมีข้อความระบุไว้ในคู่มือ tmux:

             The target-session rules for attach-session are slightly
         adjusted: if tmux needs to select the most recently used session,
         it will prefer the most recently used unattached session.

คำตอบของ Drew จะไม่ทำงานอย่างถูกต้องในสถานการณ์เช่น:

0: 1 windows (created Wed Nov  7 23:51:08 2012) [177x47]
1: 1 windows (created Wed Nov  7 23:51:33 2012) [177x47] (attached)

tmux atจะแนบกับเซสชันล่าสุด (# 1) (แม้ว่าจะยังคงแนบเซสชันนี้ที่อื่น) สิ่งนี้ทำลายความคิดทั้งหมดของการรันหลายเซสชัน tmux และแนบกับเดี่ยวที่แยกออก (เพื่อใช้ mosh + tmux + iterm2 เพื่อสร้างเทอร์มินัลโรมมิ่งที่สมบูรณ์แบบ)

อีกวิธีหนึ่งคือเลือกเซสชันที่ไม่ได้แนบด้วยตนเอง:

tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`


จับดี! เอกสารไม่สอดคล้องกับพฤติกรรมจริง ฉันสร้างรายงานข้อผิดพลาดสำหรับสิ่งนี้
Drew Frank

แพทช์ไม่สามารถแก้ไขได้ดังนั้นในการเปิดตัวครั้งถัดไปมันควรจะทำงานตามที่โฆษณาไว้
Drew Frank

แพทช์เป็น 1.8 หรือไม่?
momeara

2

ฉันมักจะมีเพียงครั้งเดียว tmux สองครั้งดังนั้นฉันจะทำสิ่งนี้ในแต่ละหน้าต่างเทอร์มินัล

หน้าต่างเทอร์มินัล 0:

tmux attach -t 0 || tmux new

หน้าต่างเทอร์มินัล 1:

tmux attach -t 1 || tmux new

2

สิ่งนี้ได้ผลดีที่สุดสำหรับฉัน:

if [ -z "$TMUX" ]; then
     (tmux ls | grep -vq attached && tmux at -t `tmux ls | grep -vm1 attached | cut -d: -f1`) || tmux new
fi

-t จำเป็นต้องแนบกับเซสชันที่เหมาะสม


1

เกี่ยวกับอะไร

tmux attach || tmux new

หรือเพียงแค่สร้างไฟล์แทน~/.tmux.confหากไม่มีอยู่แล้วเพิ่ม

new-session

tmux attachมันดังกล่าวว่ามันจะสร้างเซสชันใหม่เมื่อมีใครเมื่อคุณเรียกใช้

นอกจากนี้ยังอาจจะมีประโยชน์ที่จะทำให้นามแฝงไปtmuxtmux attach


ข้อเสนอแรกจะแนบกับเซสชัน tmux ที่แนบอยู่ในปัจจุบัน (คล้ายกับ screen -x) ซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยง ข้อเสนอที่สองแสดงปัญหาเดียวกันนี้และยังมีผลลัพธ์ที่ไม่พึงประสงค์ในการสร้างเซสชัน tmux "พิเศษ" เมื่อฉันใช้คำสั่ง tmux ซอร์สไฟล์เพื่อโหลดการตั้งค่าใหม่
Drew Frank
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.