我有一个进程,我希望通过tail -f监视不同目录中的几个输出文件。我可以使用bash脚本启动tmux作为分离会话,创建多个窗格,更改到顶级目录并重新附加。这一切都有效。当我希望脚本稍后发送更多命令时,我的问题出现了。是否有一些原因,一旦我附上,我的脚本无法发送命令或稍后分离/重新连接?执行更多命令的原因是某些文件需要45秒才能创建,然后我才能将它们拖尾。
我的例子看起来像是
#!/bin/bash
# this depends on some settings from my ~/.tmux.conf
TopLevel='/tsload'
SimDir=`ls -d $TopLevel/SIM_ISS*`
# create and detach session
tmux new-session -s simwatch -n Sim_Watch -d
# make left & right panes, only 1 window
tmux split-window -h -t simwatch
# change to toplevel dir
tmux send-keys -t simwatch:1.1 "cd $SimDir" C-m
tmux send-keys -t simwatch:1.2 "cd $SimDir" C-m
tmux attach -t simwatch
此时我的脚本失败,当我尝试让它做更多时。我也尝试过“tmux detach -t simwatch'发出命令并重新附加但它们不会生效。
答案 0 :(得分:3)
对tmux不是很熟悉,但是从我对你的脚本的实验来看,看起来tmux'adtate -t simwatch'是一个阻塞操作,即它启动并在你从会话中分离/退出时结束,这是当脚本将继续。
关于稍后出现的文件的问题,如果你知道他们的路径,你可以尝试使用“tail -F”跟随它们,它将等待文件出现。
tail --follow=name --retry missing_file