linux Shell 脚本 输出日志文件 log /dev/null

ops/2024/9/23 10:22:43/

linux Shell 脚本 输出日志文件 log

shell 错误输出重定向到标准输出
https://www.jb51.net/article/264888.htm

shell 错误输出重定向到标准输出

和<是文件重定向符。那么1和2是什么?

shell中每个进程都和三个系统文件相关联
标准输入stdin
标准输出stdout
标准错误stderr
三个系统文件的文件描述符分别为0,1和2。
所以这里2>&1的意思就是将标准错误也输出到标准输出当中。

下面通过一个例子来展示2>&1有什么作用:
创建一个 test.sh
内容如下:

#!/bin/sh
t
date

执行
chmod 777 test.sh
./test.sh

./test.sh: line 2: t: command not found
Mon Aug 19 10:56:50 CST 2024

test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。
date则能正确执行,并且输出时间信息,默认输出到stdout。

标准输出重定向到log文件中,标准错误打印在屏幕上

 ./test.sh > test1.log

输出结果为

./test.sh: line 2: t: command not found

文件中的内容为
cat test1.log

Mon Aug 19 10:58:47 CST 2024

可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。

标准输处和标准错误重定向到同一log文件中

./test.sh > test2.log 2>&1

cat test2.log

./test.sh: line 2: t: command not found
Mon Aug 19 11:05:03 CST 2024

这次,stderr和stdout的内容都被重定向到log文件中了。

实际上, >就相当于1>也就是重定向标准输出,不包括标准错误。
通过2>&1,就将标准错误重定向到标准输出了(stderr已作为stdout的副本),
那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。

标准输处和标准错误重定向到不同log文件中
如果只想重定向标准错误到文件中,则可以使用2> file。

sh test.sh 1>log.log 2>log_err.log

如何将shell脚本的全部执行结果记入一个log文件

./test.sh >>logfile 2>&1

执行脚本test.sh时将错误输出2以及标准输出1都一起以附加写方式导入logfile文件。

即使多次执行脚本,之前的log也仍然存在。

/dev/null

如果希望执行某个命令,但又不希望在屏幕上显示出输出的结果,那么可以将输出重定向到/dev/null:

$ command > /dev/null

/dev/null是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读取不到。
但是/dev/null文件非常的有用,将命令的输出重定向到它,会起到“静止输出”的效果。

如果希望屏蔽stdout和stderr,则可以这样写:

$ command > /dev/null 2>&1

注意:0是标准输入(STDIN),1是标准输出(STDOUT),2是标准错误输出(STDERR)


http://www.ppmy.cn/ops/96840.html

相关文章

python—— SOLID原则

SOLID 是面向对象设计中的五个核心原则&#xff0c;用于创建更易维护、可扩展和灵活的软件系统。它们分别是单一职责原则&#xff08;S&#xff09;、开放封闭原则&#xff08;O&#xff09;、里氏替换原则&#xff08;L&#xff09;、接口隔离原则&#xff08;I&#xff09;和…

深度学习基础—动量梯度下降法

1.算法原理 动量梯度下降法就是在梯度下降法的基础上&#xff0c;使用指数加权移动平均值&#xff0c;来平均梯度&#xff0c;这种算法比梯度下降法更快。 如上图&#xff0c;损失函数的最小值是红点&#xff0c;椭圆是损失函数的图像&#xff0c;梯度下降法就像蓝线和紫线&…

WebDeveloper:1靶机

信息收集&#xff1a; 靶机地址&#xff1a;https://www.vulnhub.com/entry/web-developer-1,288/ &#xff08;1&#xff09;ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:0F:DB:75 &#xff08;2&#xff09;端口扫描 nmap -p- -A 192.168.254.160 &#xff0…

延迟加载JS有哪些方式

1、defer 等HTML全部解析完成&#xff0c;才会执行js代码&#xff0c;按顺序执行js脚本 <script defer typetext/javascript srcscript.js></script> 2、async async是和HTML解析同步的&#xff08;一起的&#xff09;&#xff0c;不是按顺序执行js脚本&#xff0…

【JavaEE】MyBatis 实战指南:从 JDBC 到高效数据库操作的进阶教程

目录 MyBatis 操作数据库JDBC 操作⽰例回顾什么是MyBatis?MyBatis⼊⻔1. 准备⼯作2. 配置数据库连接字符串3. 写持久层代码4. 单元测试使用MyBatis可能遇到的问题 MyBatis的基础操作打印⽇志参数传递增(Insert)返回主键 删(Delete)改(Update)查(Select)起别名结果映射开启驼峰…

派森学长带你学python—集合

python中的集合是无序不重复元素序列 集合中只能存储不可变数据类型 在Python中用{}来定义 与列表字典一样&#xff0c;集合石python中的可变数据类型 集合属于序列中的一种#集合的创建1 s{(1,2,3),hello,9} print(s)#{9, hello, (1, 2, 3)}#集合的创建2 set() sset() print(s)…

sql总结

1.sql 1.多数据筛选排名 row_number 从1到10顺序排名&#xff0c; rank(&#xff09;11335并列的算一名 DENSE_RANK是1122333排&#xff0c;rank是11335 SELECT 销售经理 AS f_a,bureau_name AS f_b,deal_staff_name AS f_c,COUNT(CASE WHEN main_price_name 全家福229元套…

【面向对象】04面向对象三大特征之——继承

文章目录 一、super1.构造方法2.属性3.方法 二、规则三、继承权限 继承 继承是Java中实现代码重用的重要手段之一。使用继承&#xff0c;可以减少代码量&#xff0c;方便修改代码。Java中只支持单根继承&#xff0c;即一个类只能有一个直接父类。 继承使用关键字extends&#…