我有一个bash
脚本,用于在tmux
会话中运行脚本。它看起来像这样:
#!/bin/bash
session="myjob"
tmux new-session -d -s $session
tmux send-keys 'myscript' 'C-m'
问题是myscript
完成后,会话myjob
仍然存在。我想在myscript
完成后自动杀死它。我试过:
#!/bin/bash
session="myjob"
tmux new-session -d -s $session
tmux send-keys 'myscript' 'C-m'
tmux kill-session -t $session
但这会myscript
完全跳过并直接终止会话。
答案1
您应该能够执行以下操作:
tmux send-keys 'exec myscript' 'C-m'
这样,shell 将执行exec
脚本(即,myscript
将替换 shell 进程而不是作为子进程启动)。然后,当该进程终止时,它将是运行的进程tmux
,因此tmux
将在其之后进行清理。