我用nohup命令有问题。

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


当前回答

你试过重定向所有三个I/O流吗:

nohup ./yourprogram > foo.out 2> foo.err < /dev/null &

其他回答

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

这就是你所需要做的!

你可能需要使用分离程序。您可以像nohup一样使用它,但是它不会产生输出日志,除非您要求它这样做。下面是手册页:

NAME
       detach - run a command after detaching from the terminal

SYNOPSIS
       detach [options] [--] command [args]

       Forks  a  new process, detaches is from the terminal, and executes com‐
       mand with the specified arguments.

OPTIONS
       detach recognizes a couple of options, which are discussed below.   The
       special  option -- is used to signal that the rest of the arguments are
       the command and args to be passed to it.

       -e file
              Connect file to the standard error of the command.

       -f     Run in the foreground (do not fork).

       -i file
              Connect file to the standard input of the command.

       -o file
              Connect file to the standard output of the command.

       -p file
              Write the pid of the detached process to file.

EXAMPLE
       detach xterm

       Start an xterm that will not be closed when the current shell exits.

AUTHOR
       detach was written by Robbert Haarman.  See  http://inglorion.net/  for
       contact information.

注意,我与该程序的作者没有任何关系。我只是一个满意的程序用户。

如果你面前的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&

你试过重定向所有三个I/O流吗:

nohup ./yourprogram > foo.out 2> foo.err < /dev/null &
sudo bash -c "nohup /opt/viptel/viptel_bin/log.sh $* &> /dev/null"  &

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