Linux 里的 2>&1 究竟是什么
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,经常有这样的需求,写一个python文件,之后把这个python做成定时任务形式,按要求定时crontab执行!而定时任务经常看到如下格式,譬如我下面这个每三分钟执行一次,而且把python的输出信息
千家信息网最后更新 2025年12月01日Linux 里的 2>&1 究竟是什么
经常有这样的需求,写一个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/shtdate~~~~"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]#
命令
星期
文件
标准
输出
测试
常用
屏幕
任务
含义
错误
空设
输入
信息
只有
就是
形式
指令
日志
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全局的电话是多少
网络安全指挥中心待遇
嵌入式软件开发票
什么是java软件开发
软件开发全套文档模板
杭州大数据软件开发费用
江西家用软件开发单价
包头天气预报软件开发
泉州互动安全教育展馆软件开发
青岛服务器机柜导轨安装图
浙江常用软件开发现价
网络安全法民众反应
网络安全责任落实情况考核
数据库安全控制方法不包括
森林联机服务器
柳钢网络技术做什么的
多进程 数据库
北京壹牛网络技术有限公司
使网络安全 好起来
网络技术新媒体发达
九台区网络技术咨询欢迎来电
上海系统软件开发中心
什么是java软件开发
asp连接数据库出错
网络安全简介70字
想考公安局的网络安全特招
hp服务器怎么安全模式
软件开发公司岗位职责范本
国家网络安全教育宣传语
竞价实例的服务器平台有哪些