我有
parallel --j 2 -- "sh script1" "sh script2"
登录文件的位置script1
和script2
log1
log2
我想将其更改为:
parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"
使用 tail 的原因是当我允许两个脚本同时在屏幕上输出时 - 输出变得一团糟并且我丢失了光标等问题 - 我几乎在每次执行后都需要重新启动终端。
但问题是,现在这将永远持续下去,我希望 tail 在 script1 和 script2 完成时退出。我怎样才能做到这一点?
答案1
这可能还不是你想要的,但是怎么样:
parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2
一旦这两项工作完成,您就不会等待tail
这两个日志文件。
答案2
实际上,我找到了我需要做的事情:
parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2
答案3
答案4
parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2
这parallel ...
在后台运行,然后运行tail ...
。
按压Ctrl-C尾巴不会影响parallel
工作。
如果您需要将 带到parallel
前台,请杀死tail
并输入fg
。要将其再次发送到后台(例如,以便您可以tail
再次运行),请按Ctrl-Z并键入bg
。或者你可以用以下命令杀死它kill %%
有关更多详细信息,请参阅您的 shell 文档。例如,如果您使用的是 bash,请运行man bash
并搜索 (all-caps) JOB CONTROL
。