需求如下: 编译时会卡住,所以需要当终端上显示的编译信息在一段时间不更新后重新编译
上面的想法是否有其它的实现方法?
能不能使文件只保存最新的编译信息?
======================================================
问题解决了
其实是自己没有再多想一想,/proc/pid/fd/1是一个符号链接,指向的是/dev/pts/n,也就是编译的线程将stdout输出去了/dev/pts/n设备上了,而当终端有内容更新时/dev/pts/n的修改时间就会变化。
所以根据/dev/pts/n的修改时间就可以判断编译是否卡住了
tmux 有个 monitor-silence 选项,可以指定指定的窗口在指定的时间内没有输出则显示通知。有这个通知的窗口的标题会有 ~ 字符。据此可以写个脚本来监视。
比如,单独开个 tmux session,然后连一个 client 过去,一个窗口里跑编译,另一个窗口里监视。
wid=@137
while true; do
win=$(tmux list-window -F '#{window_index} #{window_id} #{window_flags}' | grep "$wid.*~")
if [[ -n $win ]]; then
windex=$(echo $wid | cut -d' ' -f1)
tmux send-keys -t $windex ls c-m
tmux select-window -t $windex
tmux select-window -t \!
fi
sleep 1
done
开头的 $wid 是通过 tmux list-window 取得的。在 tmux 1.8 + zsh 5.0 中测试通过。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。