命令:command > /dev/null  2>&1 &

输出到/dev/null表示输出重定向到黑洞,即输出内容不打印到屏幕上,null是/dev下空设备文件。

 :代表重定向到哪里,例如:echo "123" > ./123.txt
 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
 :表示stderr标准错误
 :表示等同于的意思,2>&1,表示2的输出重定向等同于1

[root@guangzhou study]# cat print.php
<?php
echo "hello,world\";

一. 依据上面所述,下面两种输出效果一致:

[root@guangzhou study]# php print.php > print.log
[root@guangzhou study]# php print.php 1> print1.log
[root@guangzhou study]# cat print.log
hello,world.
[root@guangzhou study]# cat print1.log
hello,world.

二. 现在尝试标准错误输出,故意修改造成print.php文件报语法错误,执行代码后打印两个日志文件均为空。

[root@guangzhou study]# cat print.php
<?php
//echo "hello,world.\n";
aaa "hello,world.\n";
[root@guangzhou study]# php print.php 1> print1.log
PHP Parse error: syntax error, unexpected '"hello,world.\n"' (T_CONSTANT_ENCAPSED_STRING) in /opt/www/study/print.php on line 3
[root@guangzhou study]# php print.php > print.log
PHP Parse error: syntax error, unexpected '"hello,world.\n"' (T_CONSTANT_ENCAPSED_STRING) in /opt/www/study/print.php on line 3
[root@guangzhou study]# cat print.log
[root@guangzhou study]# cat print1.log

可见标准输出不能程序的错误输出。

现在改成2使用错误输出重定向错误日志,执行程序后打印可见错误信息。

[root@guangzhou study]# php print.php 2> print2.log
[root@guangzhou study]# cat print2.log
PHP Parse error: syntax error, unexpected '"hello,world.\n"' (T_CONSTANT_ENCAPSED_STRING) in /opt/www/study/print.php on line 3

现在我们知道标准输出和错误输出各自使用场景。(注意: 重定向符号“>”前的数字1/2中间必须在一起,中间不能有空格,不然重定向失败。)

另外可以将错误输出重定向到标准输出的日志文件中:

[root@guangzhou study]# cat print.php
<?php
//echo "hello,world.\n";
aaa "hello,world.\n";
[root@guangzhou study]# php print.php > print.log 2>&1[root@guangzhou study]# cat print.php
<?php
echo "hello,world.\n";
[root@guangzhou study]# php print.php > print2.log 2>&1
[root@guangzhou study]# cat print.log
PHP Parse error: syntax error, unexpected '"hello,world.\n"' (T_CONSTANT_ENCAPSED_STRING) in /opt/www/study/print.php on line 3
[root@guangzhou study]# cat print2.log
hello,world.

完整命令: command > 日志文件 2>&1

三. 有时程序可能要跑好一会,当前命令行窗口需要处理其他事情的情况下,可以在命令末尾加上“&”符号,下面脚本一开始休眠10秒钟:

[root@guangzhou swoole_study]# cat print.php
<?php
sleep(10);
echo "hello,world.\n";
[root@guangzhou swoole_study]# php print.php > print.log 2>&1 &
[2] 11641
#当前窗口可执行其他命令,如date命令
[root@guangzhou swoole_study]# date
2020年 09月 23日 星期三 10:52:38 CST
[root@guangzhou swoole_study]# cat print.log
hello,world.
[2]- 完成 php print.php > print.log 2>&1

四. 上面命令末尾加“&”符号只能用在窗口为关闭的情况,如需要关闭窗口后命令继续运行的可在命令开始处加上“nohup”符号:

[root@guangzhou swoole_study]# cat print.php
<?php
echo date('Y-m-d H:i:s') . "\n";
sleep(50);
echo "hello,world.\n";
echo date('Y-m-d H:i:s') . "\n";
[root@guangzhou swoole_study]# date
2020年 09月 23日 星期三 11:06:25 CST
[root@guangzhou swoole_study]# nohup php print.php > print.log 2>&1 &
[1] 14164
[root@guangzhou swoole_study]# date
2020年 09月 23日 星期三 11:06:32 CST

第二个date执行后立即关闭当前窗口,并新开窗口打印日志,可见两次时间不足50秒:

[root@guangzhou study]# cat print.log
nohup: 忽略输入
2020-09-23 03:02:59
hello,world.
2020-09-23 03:03:12

这里有一点忘记说明,关闭窗口前需要执行exit,直接关闭窗口会导致nohup命令无法挂起。

我们重新跑一次 cat.php,   date,   nohup php print.php > print.log 2>&1 &,  date, 再加上exit命令,关闭当前窗口并新开窗口,打印print.log文件可以发现时间间隔正好是50秒。

ps: nohup命令是由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断SIGHUP信号。
如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

nohup命令重定向标准输出和错误输出的更多相关文章

  1. shell脚本 在后台执行de 命令 >> 文件 2>&1 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

    命令 >> 文件 2>&1或命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) # ll >>aaa 2> ...

  2. Linux标准输入、标准输出、错误输出

    Linux中的输入文件.输出文件.错误输出 文件名称 文件描述符 标准输入 0 (默认是键盘) 标准输出 1 (默认是屏幕) 标准错误 2 (默认是屏幕) 输出重定向 Linux中&表示后台运 ...

  3. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

  4. 将make的输出(标准输出/标准错误输出)重定向到文件

    方式 描述符 含义 stdin 0 标准输入 stdout 1 标准输出 stderr 2 标准错误输出 1.想要把make输出的全部信息,输出到某个文件中 最常见的办法就是:make xxx > ...

  5. shell 标出输入、标准输出、错误输出

    shell中可能经常能看到:>/dev/null  2>&1  eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...

  6. [转帖]Linux的标准输入 标准输出和错误输出

    Linux标准输入.输出和错误和文件重定向 专题 https://www.cnblogs.com/softidea/p/3965093.html 感觉自己对 这一块的理解一直不好 昨天同事给了一个 b ...

  7. Linux shell标准输入,标准输出,错误输出

    shell中可能经常能看到:1>/dev/null  2>&1  eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{prin ...

  8. BASH让标准输出和错误输出颜色不同

    shell中运行的程序输出有标准输出(stdout)和错误输出(stderr)两种.当在终端中运行一个进程时,默认是stdout和stderr混在一起的,需要区分只能去读内容,人眼不容易快速区分. 如 ...

  9. shell 中 标准输出和错误输出

    命令 标准输出 标准错误 >/dev/null 2>&1 丢弃 丢弃 2>&1 >/dev/null 丢弃 屏幕 1>/dev/null 丢弃 屏幕 2& ...

随机推荐

  1. 个人项目(WordCount C语言)

    WordCount程序(C语言) Github地址:https://github.com/peter-ye-code/WordCount 一.题目描述 实现一个简单而完整的软件工具(源程序特征统计程序 ...

  2. HM16.0之PCM模式——xCheckIntraPCM

    参考:https://blog.csdn.net/cxy19931018/article/details/79781042 1.源代码: /** Check R-D costs for a CU wi ...

  3. CentOS 7环境下大量创建账号的方法

    1 一些账号相关的检查工具 1.1 pwck命令 pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息,还可以比对 /etc/passwd /etc ...

  4. (新手向)N皇后问题详解(DFS算法)

    非常经典的一道题: N皇后问题: 国际象棋中皇后的势力范围覆盖其所在的行.列以及两条对角线,现在考察如下问题:如何在n x n的棋盘上放置n个皇后,使得她们彼此互不攻击 . 免去麻烦我们这里假定n不是 ...

  5. SpringCloud系列之Nacos应用篇

    前言 原先项目是以SpringConfig作为项目配置中心组件,Eureka作为服务注册发现组件,基本上就是SpringCloud全家桶,Eureka已经停更,所以前期调研可替换方案,主流替换方案有C ...

  6. oracle备份之恢复管理目录

    一.管理恢复目录 #现实应用中一般都是专门新建一个rman 数据库,给所有的数据库做catalog1.建立恢复目录 #建立恢复目录表空间SQL> create tablespace rman_t ...

  7. checkbox手动样式改变

    .image_input_checkbox{ width:18px; height:18px; display: inline-block; vertical-align: middle; -webk ...

  8. 【转】Mac下Eclipse快捷键

    http://blog.sina.com.cn/s/blog_677089db01019jgh.html Command + O:显示大纲Command + 1:快速修复Command + D:删除当 ...

  9. Mybatis 枚举类处理

    目录 类型处理器(TypeHandler) 内置的枚举处理器 EnumTypeHandler源码 自定义枚举类处理 通用枚举处理器 Git 类型处理器(TypeHandler) 无论是 MyBatis ...

  10. linux 文件类型和权限

    linux 文件类型和权限 ls -l 显示: [user@wyf-201 ~]$ ll total 0 -rw-rw-r--. 1 user user 0 Aug 27 10:49 1.txt dr ...