我用nohup命令有问题。

当我运行我的工作时,我有很多数据。输出nohup。Out变得太大,我的进程变慢了。我如何运行这个命令而不得到noup .out?


当前回答

您可以执行如下命令。

nohup <your command> & >  <outputfile> 2>&1 &

如。 我在脚本里面有一个nohup命令

./Runjob.sh > sparkConcuurent.out 2>&1

其他回答

下面的命令可以让你在后台运行一些东西,而不会得到noup .out:

nohup command |tee &

通过这种方式,你将能够在远程服务器上运行脚本时获得控制台输出:

您可以执行如下命令。

nohup <your command> & >  <outputfile> 2>&1 &

如。 我在脚本里面有一个nohup命令

./Runjob.sh > sparkConcuurent.out 2>&1
sudo bash -c "nohup /opt/viptel/viptel_bin/log.sh $* &> /dev/null"  &

重定向sudo的输出会导致sudo重新询问密码,因此需要一种笨拙的机制来执行这种变体。

nohup some_command > /dev/null 2>&1&

这就是你所需要做的!

如果你面前的mac/linux上有一个BASH shell,你可以尝试以下步骤来实际理解重定向:

创建一个名为zz.sh的2行脚本

#!/bin/bash
echo "Hello. This is a proper command"
junk_errorcommand

echo命令的输出进入STDOUT文件流(文件描述符1)。 error命令的输出进入STDERR文件流(文件描述符2)。

目前,只需执行脚本即可将STDOUT和STDERR发送到屏幕。

./zz.sh

现在从标准重定向开始:

zz.sh > zfile.txt

在上面,“echo”(STDOUT)进入zfile.txt。而“错误”(STDERR)显示在屏幕上。

以上同:

zz.sh 1> zfile.txt

现在您可以尝试相反的方法,将“error”STDERR重定向到文件中。来自“echo”命令的STDOUT显示在屏幕上。

zz.sh 2> zfile.txt

将上述两者结合起来,你会得到:

zz.sh 1> zfile.txt 2>&1

解释:

首先,发送stdout1到zfile.txt 然后,将STDERR 2发送到stdout1本身(使用&1指针)。 因此,1和2都进入同一个文件(zfile.txt)

最后,你可以把所有的东西都打包到nohup命令&中,在后台运行:

nohup zz.sh 1> zfile.txt 2>&1&