我想要这样的东西:
maybeexec command arg1 arg2 &> /logs/log
其中 Maybeexec 是一个 bash 函数,如下所示:
maybeexec() {
if ! ps ax | grep -v grep | grep "$*" > /dev/null
then
"$@"
fi
}
所以基本上它检查是否command arg1 arg2
已经运行,如果是,则不运行它。
不过,我的问题是,即使command arg1 arg2
它已经在运行,因此maybeexec
不会同时运行它,/logs/log
仍然会打开以进行重定向,并且会覆盖现有的/logs/log
,这是我不想要的。
解决这个问题的最优雅的方法是什么?如果可能的话,我想像现在一样继续调用maybeexec
,因为我使用它来运行许多命令,这些命令都将输出重定向到不同的文件。
谢谢!