nohup命令重定向标准输出和错误输出
命令:command > /dev/null 2>&1 &
输出到/dev/null表示输出重定向到黑洞,即输出内容不打印到屏幕上,null是/dev下空设备文件。
> :代表重定向到哪里,例如:echo "123" > ./123.txt
1 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 :表示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命令重定向标准输出和错误输出的更多相关文章
- shell脚本 在后台执行de 命令 >> 文件 2>&1 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
命令 >> 文件 2>&1或命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) # ll >>aaa 2> ...
- Linux标准输入、标准输出、错误输出
Linux中的输入文件.输出文件.错误输出 文件名称 文件描述符 标准输入 0 (默认是键盘) 标准输出 1 (默认是屏幕) 标准错误 2 (默认是屏幕) 输出重定向 Linux中&表示后台运 ...
- 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式
1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具 本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...
- 将make的输出(标准输出/标准错误输出)重定向到文件
方式 描述符 含义 stdin 0 标准输入 stdout 1 标准输出 stderr 2 标准错误输出 1.想要把make输出的全部信息,输出到某个文件中 最常见的办法就是:make xxx > ...
- shell 标出输入、标准输出、错误输出
shell中可能经常能看到:>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...
- [转帖]Linux的标准输入 标准输出和错误输出
Linux标准输入.输出和错误和文件重定向 专题 https://www.cnblogs.com/softidea/p/3965093.html 感觉自己对 这一块的理解一直不好 昨天同事给了一个 b ...
- Linux shell标准输入,标准输出,错误输出
shell中可能经常能看到:1>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{prin ...
- BASH让标准输出和错误输出颜色不同
shell中运行的程序输出有标准输出(stdout)和错误输出(stderr)两种.当在终端中运行一个进程时,默认是stdout和stderr混在一起的,需要区分只能去读内容,人眼不容易快速区分. 如 ...
- shell 中 标准输出和错误输出
命令 标准输出 标准错误 >/dev/null 2>&1 丢弃 丢弃 2>&1 >/dev/null 丢弃 屏幕 1>/dev/null 丢弃 屏幕 2& ...
随机推荐
- Vue源码分析之实现一个简易版的Vue
目标 参考 https://cn.vuejs.org/v2/guide/reactivity.html 使用 Typescript 编写简易版的 vue 实现数据的响应式和基本的视图渲染,以及双向绑定 ...
- Deep Learning-Based Video Coding: A Review and A Case Study
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...
- muduo源码解析7-countdownlatch类
countdownlatch class countdownlatch:noncopyable { }; 作用: countdownlatch和mutex,condition一样,用于线程之间的同步, ...
- muduo源码解析6-condtion类
condition class condition:noncopyable { }; 作用: 实现了最简单condtion操作,包括init,destroy,wait,notify,notifyAll ...
- antdv时间选择a-date-picker设置日期可选范围(近一周、近半月、近一月等) - moment.js
Vue->Template: <a-date-picker v-model="value" :disabled-date="disabledDate" ...
- Python爬虫 使用selenium处理动态网页
对于静态网页,使用requests等库可以很方便的得到它的网页源码,然后提取出想要的信息.但是对于动态网页,情况就要复杂很多,这种页面的源码往往只有一个框架,其内容都是由JavaScript渲染出来的 ...
- Vue根据条件添加 click 事件
方式一:在绑定事件中直接添加标示量clickFlag <div @click="clickFlag && addGoodsHandler()"> XXX ...
- GitHub 热点速览 Vol.35:Let's Go,Rust 大放异彩
摘要:语言之争,一直存在于各类社群,不论是单个编程语言的交流群,亦或是 NoSQL.云开发等技术群,总能看到"要不要换 Go"."Rust 比 C++ 更强"的 ...
- 前端防止xxs注入
思路: 去掉所有跟sql有关的标签: $(function () { $(":input").change(function () { // alert($(this ...
- Android Studio出现:Your project path contains non-ASCII 错误代码解决方法
导入Project的出现: Error:(1, 0) Your project path contains non-ASCII characters. This will most likely ca ...