nohup: 입력을 무시하고 "nohup.out"에 출력을 추가합니다.

nohup: 입력을 무시하고 "nohup.out"에 출력을 추가합니다.

다음 명령을 실행했습니다.

nohup conda activate shuffle_pair_end_reads && python3 shuffle_pair_end_reads.py \
    fastp-filtered-merged4racon/merge_R1.fq.gz \
    fastp-filtered-merged4racon/merge_R2.fq.gz \
    >fastp-filtered-merged4racon/merged_R1_R2.fa \
    2>merged_R1_R2.log &

하지만 불행하게도 Enter를 두 번째로 누르면 이런 메시지가 나타납니다.

 nohup: ignoring input and appending output to 'nohup.out'

[1]+  Exit 1                  nohup conda activate shuffle_pair_end_reads && python3 shuffle_pair_end_reads.py fastp-filtered-merged4racon/merge_R1.fq.gz fastp-filtered-merged4racon/merge_R2.fq.gz > fastp-filtered-merged4racon/merged_R1_R2.fa 2> merged_R1_R2.log

내가 놓친 게 무엇입니까?

미리 감사드립니다.

답변1

$ type -a nohup
nohup is /usr/bin/nohup

Nohup은 쉘 구문의 일부가 아닙니다. 이는 단지 실행 파일일 뿐이므로 임의의 명령을 입력하고 접두사를 추가하여 nohupSIGHUP에 관계없이 실행될 것으로 기대할 수는 없습니다. 의 경우

nohup conda activate shuffle_pair_end_reads && python3 shuffle_pair_end_reads.py \
    fastp-filtered-merged4racon/merge_R1.fq.gz \
    fastp-filtered-merged4racon/merge_R2.fq.gz \
    >fastp-filtered-merged4racon/merged_R1_R2.fa \
    2>merged_R1_R2.log &

nohupconda매개변수 와 activate실행을 사용합니다 shuffle_pair_end_reads. 첫 번째 명령 이후의 모든 것은 &&또 다른 간단한 명령입니다. nohup그것에 대해 알려진 바가 없으며 그 행동을 통제할 수도 없습니다.

작성된 대로 이는 실행을 무시 conda activate shuffle_pair_end_reads하고 성공 SIGHUP하면 nohupPython 스크립트를 처리한다는 의미입니다.

stdin 및 stdout의 리디렉션에 대해서는 매뉴얼 페이지에서 매우 명확하게 설명했습니다.

표준 입력이 터미널인 경우 /dev/null에서 리디렉션합니다. 표준 출력이 터미널인 경우 가능하면 "nohup.out"에 출력을 추가하고, 그렇지 않으면 "$HOME/nohup.out"에 출력을 추가합니다. 표준 오류가 터미널인 경우 표준 출력으로 리디렉션합니다. 출력을 파일에 저장하려면 "nohup COMMAND > FILE"을 사용하세요.

귀하의 경우 명령에 대한 입력은 리디렉션되지 않으므로 nohup에서 리디렉션됩니다 /dev/null. 마찬가지로 nohupstdout을 nohup.out사용자로 리디렉션하면 "입력을 무시하고 'nohup .out'에 출력을 추가합니다"라는 경고가 표시됩니다. stderr에 대한 경고.

종료 상태에 관해서는 nohup,이 문제아주 잘 설명되었습니다. 명령이 nohup conda activate shuffle_end_reads종료 상태를 발행한 이유를 직접 확인해야 합니다 1.

nohup이를 구문의 일부인 것처럼 사용하면 bash흥미로운 오류가 발생할 수 있습니다. 가장 간단한 것,

nohup cd myfolder && ./script.sh &

stderr에 다음 메시지가 기록되면서 실패합니다.

nohup: 입력을 무시하고 "nohup.out"에 출력을 추가합니다.

nohup: 'cd' 명령을 실행할 수 없습니다: 해당 파일이나 디렉터리가 없습니다

첫 번째 줄은 단지 경고일 뿐입니다. 두 번째 줄에서는 오류를 설명합니다. 독립 실행형 실행 파일이 아닌 실행 파일로 호출 nohup해 보십시오 .$1cd

여러 명령을 결합해야 할 때 nohup일반적으로 다음 구문을 사용합니다.

nohup bash -c "long command" &

더 좋은 방법이 있을 수도 있지만 제가 사용하는 방법은 이렇습니다. 위의 예에서 cd이전에 할 수 없었던 이유가 실제로 있다면 nohup그렇게 할 것입니다.

nohup bash -c "cd myfolder && ./script.sh` &

마지막으로 염두에 두어야 할 점은 프로그램이 아무 목적도 없는 자체 신호 처리기를 설치할 수 있다는 것입니다 nohup. 그림에서 알 수 있듯이이 문제.

관련 정보