私はこのようなものが欲しい:
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ます。出力をすべて別のファイルにリダイレクトする多くのコマンドを実行するために使用しているためです。
ありがとう!