nohup 加 &大家都知道是后台运行并把stdout输出到文件nohup.out中。其实&是后台运行的命令。
一般都是在linux下nohup格式:
nohup command_line
或者
nohup command_line &
这之间的差别是带&的命令行,即使terminal关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);
它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件这个看似很方便,但是当输出很大的时候,nohup.txt文件会非常大,或者多个后台命令的时候大家都会输出到nohup.txt文件,不利于查找结果和调试程序。
所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。
其实我门一直都在用,只是没有注意到,
比如
>./command.sh > output
#这其中的>就是标准输出符号,其实是 1>output 的缩写
>./command.sh 2> output
#这里的2>就是将标准错误输出到output文件里。
而0< 则是标准输入了。
下面步入正题,重定向后台命令
>nohup ./command.sh > output 2>&1 &
解释:前面的nohup 和后面的&我想大家都能明白了把。
主要是中间的 2>&1的意思
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,
所以结果是标准错误和标准输出都导入文件output里面了。
至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。
这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.
这就是为什么有人会写成:
nohup ./command.sh >output 2>output出错的原因了
##########################
最后谈一下/dev/null文件的作用
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里>./command.sh >/dev/null 2>&1
分享到:
相关推荐
这样,标准输出和标准错误都会被重定向到`/dev/null`,相当于丢弃这些输出,但程序依然能在后台持续运行。 总结来说,当使用`nohup`在Linux后台运行Python脚本时,如果发现输出没有正常记录,可以通过添加`-u`参数...
例如,`nohup ./execute.sh > /home/xxx/log.log 2>&1 &`会将标准输出和标准错误都重定向到`/home/xxx/log.log`文件中,而不是默认的`nohup.out`。 针对日志文件过大问题,可以采取以下策略: 1. 定期分割日志:...
* `2>&1`:表示将标准错误输出重定向到标准输出。 * `/dev/null`:是一个特殊的文件,表示不输出结果。 nohup 命令的应用场景 nohup 命令常用于以下场景: * 在后台运行程序。 * 实现任务的自动化。 * 将输出...
然而,在尝试使用`nohup`重定向Python程序的标准输出(stdout)和标准错误(stderr)到文件时,有时可能会遇到输出不成功的问题。这通常与Python的输出缓冲机制有关。 Python默认会进行输出缓冲,意味着它不会立即...
例如,`nohup java -jar app.jar >log 2>&1 &`将标准输出和错误都定向到`log`文件,而`nohup java -jar app.jar 2>&1 >log &`则会导致标准输出先被重定向到屏幕,然后再将标准错误重定向到屏幕,这不是我们期望的...
当使用 `nohup` 时,程序的标准输出和标准错误会被重定向到一个名为 `nohup.out` 的文件中,除非另有指定。这有助于在程序运行时记录日志,尤其是在无人值守的情况下。 5. **停止后台运行的程序** 如果想要停止由...
问题在于,Python的标准输出(stdout)和标准错误(stderr)都有缓冲机制,这意味着它不会立即把所有输出写入文件,而是在达到一定量或者遇到特定条件(如换行符)时才进行批量写入。因此,当我们在用`tail -f nohup...
例如,`nohup python /data/python/server.py > python.log 2>&1 &`这个命令不仅将标准输出重定向到`python.log`,还把标准错误(STDERR)也重定向到同一个文件。这里的`2>&1`表示将标准错误的文件描述符(2)重定向...
默认情况下,`nohup`会将标准输出和错误输出重定向到`nohup.out`文件中,除非用户指定了其他文件路径。这有助于记录命令执行过程中的输出信息,便于后期分析和故障排查。 #### 常见错误代码: - **126**:表示`...
nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上 "&" 来将命令同时放入后台运行,也可用">filename 2>&1" 来更改缺省...
其中,`> /dev/null`表示将标准输出重定向到“空设备”中,而`2>&1`则是将标准错误输出重定向到与标准输出相同的位置。 #### 方式四:高级输出重定向 **命令示例**: ``` nohup java -jar shareniu.jar >/dev/null...
1、nohup 将程序以忽略挂起信号的方式运行起来 补充说明 ...如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。 简单实例: nohup command &
- `2>`:只重定向标准错误。 - `2>&1`:将标准错误与标准输出合并到同一个目的地。 - `&>`:同时重定向标准输出和标准错误。 5. **流程控制**: - `&`:使命令在后台运行,不阻塞终端。 - `nohup`:让命令在...
3. `&>`或`2>&1`:这会将标准输出和错误输出都重定向到同一个位置。例如,`command &> output.log`会把命令的正常输出和错误信息都写入`output.log`。 4. `|`:管道符用于连接两个命令,将前一个命令的输出作为后一...
这里,`>` 将标准输出重定向到 `out.file`,`2>&1` 将标准错误也重定向到 `out.file`,确保所有输出都保存在文件中而不是打印在屏幕上。 `nohup` 命令则更加高级,它允许你在退出登录或关闭终端后继续运行命令。...
这条命令意味着在后台无挂断地运行`my.py`,并将输出(包括标准输出和标准错误)追加到`/usr/local/python/xxf/my.log`文件中。`2>&1`这部分是将错误输出(2)重定向到标准输出(1),然后再将标准输出重定向到日志...
你可以通过`nohup command > /path/to/output.log 2>&1 &`来指定自定义的日志文件,这样命令的输出(包括标准输出和标准错误)都会被重定向到指定的文件。 然后是`screen`工具,这是一个强大的多窗口终端管理器。...
同时,如果标准错误是一个终端,`nohup`会将标准错误输出与标准输出一起重定向。 **命令语法** `nohup`命令的基本语法如下: ```bash nohup (选项) (参数) ``` 其中,可用的选项包括`--help`显示在线帮助,以及`--...
使用`nohup`命令,将Python脚本`main.py`放入后台执行,并将标准输出(stdout)和标准错误(stderr)重定向到名为`nohup.out`的日志文件中。命令格式如下: ``` nohup python -u main.py > nohup.out 2>&1 & ```...