แต่ละบานหน้าต่างtmuxเป็นอินเตอร์เฟสสำหรับ pty เดี่ยว (pseudo tty) หน้าต่างที่ไม่แบ่งมีบานหน้าต่างเดียว หน้าต่างแยกมีหลายบานหน้าต่าง
tmuxไม่ได้จัดหาวิธีในการเพิ่มกระบวนการพิเศษให้กับบานหน้าต่างเมื่อเริ่มต้นด้วยคำสั่งเริ่มต้นแล้ว มันขึ้นอยู่กับกระบวนการของคำสั่งเริ่มต้นนั้น (โดยปกติคือเชลล์) เพื่อจัดหาการควบคุมงาน1สำหรับเทอร์มินัลนั้น
หากคุณต้องการปิดบังสิ่งที่กำลังทำงานอยู่ในบานหน้าต่างคุณสามารถใช้respawn-pane -k
เพื่อฆ่าคำสั่งที่มีอยู่และแทนที่ด้วยคำสั่งใหม่ (เช่นrespawn-pane -t sessionname:0.4 -k 'some -new command'
)
แต่ถ้าคุณต้องการที่จะรักษาสิ่งที่กำลังทำงานอยู่ในบานหน้าต่างแล้วอาจจะมีตัวเลือกที่ไม่ดีที่เพียง“พิมพ์ที่มัน” send-keys
กับ
คุณอาจสคริปต์แบบนี้ (แนบล่าสุดเพราะมิฉะนั้นสคริปต์จะรอให้คุณแยกตัวออกก่อนดำเนินการต่อ):
session=whatever
window=${session}:0
pane=${window}.4
tmux send-keys -t "$pane" C-z 'some -new command' Enter
tmux select-pane -t "$pane"
tmux select-window -t "$window"
tmux attach-session -t "$session"
โปรดทราบว่าในsend-keys
คำสั่งคุณควรพิมพ์ตัวอักษร
E n t e rเพื่อบอกtmux
ให้ส่งคีย์ newline ไปที่หน้าต่าง (โดยปกติคำสั่งทุกคำลงท้ายด้วยEnterคีย์)
1การควบคุมงานคือการอนุญาโตตุลาการระหว่างกลุ่มกระบวนการหลายกลุ่มของเซสชันเดียวที่ใช้ tty เป็นเทอร์มินัลการควบคุม IE, Ctrl+ Zคีย์ระงับและjobs
, fg
และbg
คำสั่งเชลล์
#{session_name}:#{window_index}.#{pane_index}
ในบรรทัดสถานะของฉันเพื่อให้ฉันสามารถดูบานหน้าต่างที่จะส่งคำสั่งได้อย่างรวดเร็ว