我想有這將腳本:殺兄弟的過程
- 觸發一個
make 2&>1 | less -R
- 收聽該文件夾中的每一個變化(使用
inotifywait -R
)
當文件夾被修改,腳本將不得不殺死less
進程並重新啓動。
我不確定正確的做法(允許腳本的兩個分支並行運行+允許觀看作業知道less
作業的pid,因爲後者必須位於前景)。
我想有這將腳本:殺兄弟的過程
make 2&>1 | less -R
inotifywait -R
)當文件夾被修改,腳本將不得不殺死less
進程並重新啓動。
我不確定正確的做法(允許腳本的兩個分支並行運行+允許觀看作業知道less
作業的pid,因爲後者必須位於前景)。
而不是像下面那樣使用更少的嘗試尾巴。
make命令:
make 2&>1 /output/file
和tail命令中的其他終端:
tail -f /output/file
這應該告訴你的所有發生變化的實時流。
是的,但我不能看到所有的錯誤(通過滾動到文件中)。 –
如果你想搜索特定的東西,比如錯誤,你可以grep尾部-f關鍵字如「ERROR」。只需將命令更改爲'tail -f/output/file | grep ERROR',它只會顯示錯誤,希望減少滾動屏幕。 – Lipongo
如果你只是想觸發自動重新編譯每次的東西改變了,那麼你可以嘗試以下方法:
while inotifywait -qqr /dir/to/watch; do
make | less
done
我意識到,這個解決方案不殺少一個重新編譯的每次發出命令
上述情況的一個細微變化是把完成後少:
while inotifywait -qqr /dir/to/watch; do
make
done | less
這個版本將立即觸發重新編譯(AFTE r第一個make完成了),但是它需要你瀏覽所有從較少的輸出(並且不要用q終止它)
這裏是另一個你可能想要玩的變體。在此版本中,如果更改代碼,正在進行的make將會被殺死並重新啓動。但是,將不存在屏幕分頁輸出(這很難與後臺進程結合):
BGPID=0
while inotifywait -qqr /dir/to/watch; do
[ "$BGPID" -gt 1 ] && kill $BGPID
(make | tail -f)&
BGPID=$!
done
重新編譯不會被觸發,直到'less'終止(按'q')。 –
你是正確的重編譯將掛起,直到更少的終止。稍做改動就是在完成之後放置較少的命令。只是用這個更新了答案。不過,我意識到這不完全是你在找什麼。 –
這是什麼總體目標?你是否希望能夠監視make,每次更新都刷新視圖? – Lipongo
是的。我希望並排使用兩個終端,並在每次保存文件時重新編譯(以查看新的編譯錯誤)。 –
將輸出重定向到一個文件,而不是管道到少於在另一個終端中使用tail -f fileName是可以接受的嗎?它保持對文件的公開流,並在不需要做任何事情時顯示更新。 – Lipongo