Linux 里的 2>&1 究竟是什么
admin
2023-03-01 08:01:51
0

经常有这样的需求,写一个python文件,之后把这个python做成定时任务形式,按要求定时crontab执行!

而定时任务经常看到如下格式,譬如我下面这个每三分钟执行一次,而且把python的输出信息每次记录到log日志里面!常用的是

[root@nessus allpython2019]# crontab -e
*/3 * * * * /usr/bin/python /root/allpython2019/1-FtpSwDownloadcfg20191101.py >> /root/allpython2019/run.log 2>&1
[root@nessus allpython2019]#

那么这个2>&1 究竟是什么呢?

其实网上很多博文都解释了,如下:

run.log 2>&1 含义参考https://blog.csdn.net/liupeifeng3514/article/details/79711694

  解答:command > a  2>&1 【command >> a  2>&1】这条命令,可以理解为执行 command 产生的标准输入重定向到文件 a 中,标准错误也重定向到文件 a 中!(a可以是文件run.log或者/dev/null 空设备文件)【如果不这样写 可能只有标准输出打印到log文件去了  而stderr并没有被重定向到log中,stderr被打印到了屏幕上】

下面是我的测试:

(1)测试不加入2>&1 stderr并没有被重定向到log中,stderr被打印到了屏幕上

(2)测试加入2>&1 stderr也被重定向到log中了

(3)测试常用定时crontab执行时候command > a  2>&1 和command >> a  2>&1这2条命令区别,即一个覆盖!一个是追加!我常用追加!

几个基本符号及其含义:

/dev/null 表示空设备文件;
0 表示stdin标准输入;
1 表示stdout标准输出;
2 表示stderr标准错误。

例如我写了下面这个测试程序【这里我们弄了两条命令,其中t指令并不存在,执行会报错,会输出到stderr。date能正常执行,执行会输出当前时间,会输出到stdout。】
[root@nessus allpython2019]# vim test.sh
#!/bin/sh
t
date
~
~
~
~
"test.sh" [新] 3L, 17C 已写入                                                         
[root@nessus allpython2019]# chmod +x test.sh
[root@nessus allpython2019]# ./test.sh > res1.log
./test.sh:行2: t: 未找到命令              #--------可以看到不加入2>&1 stderr并没有被重定向到log中,stderr被打印到了屏幕上
[root@nessus allpython2019]# 
[root@nessus allpython2019]# cat res1.log 
2019年 11月 01日 星期五 10:01:47 CST
[root@nessus allpython2019]# 
[root@nessus allpython2019]# 
[root@nessus allpython2019]# ./test.sh > res2.log 2>&1 #--------可以看到加入2>&1 stderr也被重定向到log中了
[root@nessus allpython2019]# 
[root@nessus allpython2019]# 
[root@nessus allpython2019]# cat res2.log 
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:08 CST
[root@nessus allpython2019]# 
[root@nessus allpython2019]# 
[root@nessus allpython2019]# ./test.sh > res2.log 2>&1  #---------------下面演示我们常用的>和>>区别,就是一个覆盖!一个是追加!
[root@nessus allpython2019]# cat res2.log 
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:24 CST
[root@nessus allpython2019]# 
[root@nessus allpython2019]# 
[root@nessus allpython2019]# ./test.sh >> res2.log 2>&1
[root@nessus allpython2019]# cat res2.log 
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:24 CST
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:40 CST
[root@nessus allpython2019]# ./test.sh >> res2.log 2>&1
[root@nessus allpython2019]# cat res2.log 
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:24 CST
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:40 CST
./test.sh:行2: t: 未找到命令
2019年 11月 01日 星期五 10:03:44 CST
[root@nessus allpython2019]# 
[root@nessus allpython2019]# 
[root@nessus allpython2019]#


相关内容

热门资讯

“CIA错了”,伊朗外长亮出导... 战争爆发至今,伊朗究竟还拥有多少导弹?伊朗外长宣称导弹库存已恢复至战前的120%,并警告美方不要再肆...
红场阅兵在即:首次取消展示重型... 澎湃新闻记者 薛晶俄罗斯将于5月9日在莫斯科举行卫国战争胜利日阅兵活动。据新华社报道,5月7日,俄罗...
吉林化工园区推动产业转型升级抢... 进入生产旺季,吉林化工园区美思德(吉林)新材料有限公司生产线满负荷运转。在数字化车间内,巨大的信息屏...
我国首台双核原子量子计算机“汉... IT之家 5 月 8 日消息,据央视新闻今日消息,由中国科学院牵头,联合武汉大学、华中科技大学和武汉...
台军前高官怒轰M1A2T战车“... 海峡导报综合报道 民进党当局对美采购108辆M1A2T战车,但台陆军前司令李翔宙怒轰,采购M1A2T...
爆火的“平替游”,正在撕开谁的... 【文/观察者网 邓军 编辑/赵乾坤】受中东地缘局势不确定性及国际油价波动等因素影响,今年“五一”假期...
8名网贷设计者,揭秘大厂如何“... 00后李明,是老同学眼中“别人家的孩子”。他在重点大学读着自己梦想的心理学专业,还计划念博士。每次和...
“横行霸道”2亿年,小小螃蟹如... 一项近日发表于eLife的研究汇总形成了迄今最大的关于螃蟹如何运动的数据集。通过对比多个物种,科学家...
移动云 智能新空间 2026移... 做强算力资源、搭建服务平台、焕新AI体验、推进生态共建……5月8日,中国移动2026移动云大会主论坛...
4月岛内县市长声量排行蒋万安居... 海峡导报综合报道 随着2026“九合一”选战逼近,选举相关讨论声量逐步升高。岛内媒体调查4月份全台县...