nohup命令重定向标准输出和错误输出

命令:command > /dev/null  2>&1 &
输出到/dev/null表⽰输出重定向到⿊洞,即输出内容不打印到屏幕上,null是/dev下空设备⽂件。
>  :代表重定向到哪⾥,例如:echo "123" > ./
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.
完整命令: command 1> ⽇志⽂件 (或者 command > ⽇志⽂件)
⼆. 现在尝试标准错误输出,故意修改造成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中间必须在⼀起,中间不能有空格,不然重定向失败。)
徐粲然
完整命令: command  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 study]# cat print.php
<?php
sleep(10);
echo"hello,world.\n";
[root@guangzhou study]# php print.php > print.log 2>&1 &软件质量管理体系
[2] 11641
#当前窗⼝可执⾏其他命令,如date命令
[root@guangzhou study]# date
2020年 09⽉ 23⽇星期三10:52:38 CST
中文译音
[root@guangzhou study]# cat print.log
hello,world.
[2]-  完成                  php print.php > print.log 2>&1
完整命令: command > ⽇志⽂件 2>&1 &
四川商业高等专科学校四. 上⾯命令末尾加“&”符号只能⽤在窗⼝为关闭的情况,如需要关闭窗⼝后命令继续运⾏的可在命令开始处加上“nohup”符号:
[root@guangzhou study]# cat print.php
<?php
bppvecho 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 study]# date
2020年 09⽉ 23⽇星期三11:06:25 CST
[root@guangzhou study]# nohup php print.php > print.log 2>&1 &
[1] 14164
[root@guangzhou study]# date
2020年 09⽉ 23⽇星期三11:06:32 CST
第⼆个date执⾏后⽴即关闭当前窗⼝,并新开窗⼝打印⽇志,可见两次时间不⾜50秒:
[root@guangzhou study]# cat print.log
nohup: 忽略输⼊
2020-09-2303:02:59
hello,world.
2020-09-2303:03:12
这⾥有⼀点忘记说明,关闭窗⼝前需要执⾏exit,直接关闭窗⼝会导致nohup命令⽆法挂起。
我们重新跑⼀次 cat.php,  date,  nohup php print.php > print.log 2>&1 &,  date, 再加上exit命令,关闭当前窗⼝并新开窗⼝,打印print.log⽂件可以发现时间间隔正好是50秒。
完整命令: nohup command > ⽇志⽂件 2>&1 &
ps: nohup命令是由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断SIGHUP信号。
如果不将 nohup 命令的输出重定向,输出将附加到当前⽬录的 nohup.out ⽂件中。如果当前⽬录的 nohup.out ⽂件不可写,输出重定向到$HOME/nohup.out ⽂件中。

本文发布于:2024-09-22 13:34:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/279389.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输出   命令   重定向   错误   标准   关闭   打印   加上
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议