이 간단한 명령을 백그라운드에서 실행하는 방법

이 간단한 명령을 백그라운드에서 실행하는 방법

백그라운드에서 다음 명령을 실행하는 데 어려움을 겪고 있습니다.

find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \;

nohup처음에 추가하려고 시도했지만 운이 없었습니다. 또한 &마지막에 추가를 시도했지만 운이 없습니다. 의견 있으십니까?

답변1

질문에 따르면 스크립트 출력을 끄고 싶은 것 같나요? 이 시도:

nohup find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \; 0<&- >&- 2>&- &

중복 가능성이 있습니다. 자세한 내용은 다음을 참조하세요.https://stackoverflow.com/a/10908325/9008720

작업을 수행하기 위한 스크립트를 생성하는 것이 편리할 수 있습니다. 예를 들면 다음과 같습니다.

#!/bin/sh
nohup "$@" 0<&- >&- 2>&- &

다음에 make를 o실행할 때 이를 호출하여 백그라운드에서 실행하도록 합니다.o some command scriptsome command script

편집하다:

최근에 or 를 >&- 2>&-사용하면 일부 문제가 발생할 수 있으므로 더 나은 선택이 될 수 있다는 사실을 발견했습니다 . 가 포함된 쉘 스크립트 와 함께 사용하거나 을 포함하는 쉘 스크립트 와 함께 사용 하면 아무런 효과가 없지만 문제가 발생하지 않습니다. 또한, 출력이 완전히 꺼지는 것이 아니라 , 출력이 완전히 꺼지는 현상입니다 . 이러한 문제의 원인이 무엇인지 잘 모르겠습니다. 아마도 일부 프로그램은 stdout이나 stderr을 끈 상태에서 제대로 작동하지 않을 것이라고 생각했습니다.xselmpv>/dev/null 2>&1>&-2>&-xsel -ibxsel -ibxclip>&- 2>&-mpv>/dev/null 2>&1mpv

관련 정보