nohup을 사용한 후 새 터미널에 나타나는 메시지

nohup을 사용한 후 새 터미널에 나타나는 메시지

나는 노력한다일부 명령을 비동기식으로 실행로그인 스크립트( .bash_profile)에서.

새 터미널을 열면 다음과 같은 메시지가 표시됩니다. SSH를 통해 시스템에 로그인할 때도 나타납니다.

Last login: Sat Jun 11 19:21:44 on ttys001
[1]-  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/cryptopp)
(wd now: ~)
[2]+  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/openssl)
(wd now: ~)

로그인 스크립트는 다음을 수행합니다.

if [ -d "$HOME/cryptopp" ]; then
    cd "$HOME/cryptopp"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

if [ -d "$HOME/openssl" ]; then
    cd "$HOME/openssl"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

추가 리디렉션 롤백은 다음으로 인해 발생합니다.nohup: 입력을 무시하고 "nohup.out"에 출력을 추가합니다.. 추가 작은따옴표는 다음과 같습니다.작은따옴표로 묶인 문자열에서 작은따옴표를 이스케이프 처리하는 방법은 무엇입니까?

중요한 것은 OS X에서 작업 중이므로 Bash 3을 사용합니다. 그러나 스크립트는 일반적으로 Linux, BSD 및 Solaris에서 실행되며 Debian 8에서도 본 적이 있습니다.

몇 가지 질문이 있습니다. 첫째, 에 대한 불만은 무엇입니까 nohup? 둘째, nohup내가 불평하고 있는 문제를 어떻게 해결합니까 ? 셋째, 그러한 메시지를 억제하는 방법은 무엇입니까?

답변1

출력은 에서 nohup가 아니라 쉘(bash)에서 나옵니다.

이러한 프로세스를 백그라운드에 두는 데 사용하므로 &명령이 종료될 때 쉘이 알려줍니다. 셸에서 이 작업을 수행하지 않으려면 을 사용할 수 있습니다 disown. 또한 을 사용하면 disown더 이상 필요하지 않습니다 nohup.

if [ -d "$HOME/cryptopp" ]; then
    (
        cd "$HOME/cryptopp"
        git fetch -p && git pull
    ) </dev/null &>/dev/null &
    disown $!
fi

예제에서는 리디렉션을 사용하여 서브셸을 생성하고 백그라운드에 배치한 다음 폐기합니다.

관련 정보