$command
ある画面インスタンスで別のユーザーとして実行しています。
これは、次のコマンドと同等のコマンドで実行されます(詳細は下部を参照)。
su $USERNAME -c "screen -dmS $SCREENNAME $COMMAND"
良い結果。問題は、出力を$COMMAND
いくつかのログファイル(たとえば)にリダイレクトしたいということです$LOGFILE
。
読むよりもちょうど最後> $LOGFILE
に付け加えるのが結果のようで、どうすればいいのか混乱します。かっこと中かっこでグループ化してみましたが、エラーが発生して正しく実行できなかったようです。screen
$COMMAND
$COMMAND
では、出力をそのエントリにどのようにリダイレクトしますか$LOGFILE
?
私が実行しているコードは、次のように「同等」です。
execute() {
su $USERNAME -c "$*"
}
COMMAND="$SOMEDIR/$SOMEPROG $SOMEARGS"
execute screen -dmS $SCREENNAME $COMMAND
答え1
問題は、コマンドをscreen
。
たとえば、bashを使用するとします。
su $USERNAME -c "screen -dmS $SCREENNAME bash -c \"$COMMAND > $LOGFILE\""
(括弧をエスケープすることは、コマンド全体をbashに渡すことです。そうしないと、出力のscreen
代わりに出力をリダイレクトする問題が$COMMAND
再び発生します)