$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
다시 발생합니다)