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 不是 shell 语法的一部分。它只是一个可执行文件,这意味着您不能只键入任意命令并添加前缀以nohup期望它在忽略 SIGHUP 的情况下执行。如果是

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 &

nohup使用参数condaactivate和执行shuffle_pair_end_reads。第一个命令之后的所有内容&&都是另一个简单的命令。nohup对它一无所知,也无法控制它的行为。

正如它所写的,这意味着忽略执行conda activate shuffle_pair_end_readsSIGHUP然后如果nohup成功,则处理 python 脚本。

至于stdin和stdout的重定向,man page已经说得很清楚了。

如果标准输入是终端,则从 /dev/null 重定向它。如果标准输出是终端,则尽可能将输出附加到“nohup.out”,否则附加到“$HOME/nohup.out”。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到文件,请使用“nohup COMMAND > FILE”。

在您的情况下,您的命令的输入不会被重定向,因此nohup会从/dev/null.同样,nohup将标准输出重定向到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只是尝试将其$1作为可执行文件调用,而cd绝不是独立的可执行文件。

当我需要组合多个命令时nohup,我通常使用以下语法

nohup bash -c "long command" &

可能有更好的方法,但这就是我使用的方法。在上面的例子中,如果确实有一个你cd以前不能做的原因nohup,我会做

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

最后要记住的一件事是,您的程序可能会安装自己的信号处理程序,而这些处理程序毫无用处nohup。如图所示这个问题

相关内容