nohup 与 >/dev/null 与 2>&1 作用与区别

简介: nohup 与 >/dev/null 与 2>&1 作用与区别

转载请注明出处:  

  在 Linux 中,>/dev/null2>&1 是两个常用的重定向操作,它们用于控制命令的输出和错误信息。而且这两个参数经常 与 nohup 命令一起使用。

nohup命令

  nohup 是一个用于在后台运行命令的 Unix 命令。它的主要作用是运行指定的命令,即使用户退出登录或终端关闭,该命令也能够继续运行。通过使用 nohup 命令,可以确保程序在后台持续运行,而不会受到终端会话的影响。

  当你在终端中运行一个进程并希望在终端关闭后该进程仍然继续运行时,就可以使用 nohup 命令。例如:

nohup sh monitor.sh > nohup_monitor.log /dev/null 2>&1 &

  上面命令的语法解析

  1. nohup:表示要以 "no hang up" 的方式运行命令,即使终端关闭也不会中断该命令的执行。
  2. sh sr_monitor.sh:表示要执行名为 sr_monitor.sh 的 Shell 脚本。
  3. >:表示重定向标准输出。
  4. nohup_monitor.log:表示将标准输出重定向到一个名为 nohup_monitor.log 的文件中。
  5. /dev/null:表示将标准输入重定向到空设备,即忽略所有输入。
  6. 2>&1:表示将标准错误输出重定向到与标准输出相同的位置,即也重定向到 nohup_monitor.log 文件。
  7. &:表示在后台运行命令。

  这个命令的作用:

  • 以 nohup 方式在后台运行 sr_monitor.sh 脚本;
  • 将脚本的标准输出和标准错误输出都重定向到 nohup_monitor.log 文件;
  • 忽略任何标准输入。

/dev/null 解析

  /dev/null 是 Linux 系统中的一个特殊文件,它是一个无处不在的数据黑洞。任何写入 /dev/null 的数据都会消失,不会有任何数据被保存下来。因此,command >/dev/null 会将 command 的标准输出重定向到 /dev/null,也就是丢弃标准输出。例如:

echo "Hello, World!" >/dev/null

  在这个命令中,echo "Hello, World!" 的输出 "Hello, World!" 会被重定向到 /dev/null,因此你不会在终端看到这个输出。

2>&1 解析

  2>&1 是一个重定向操作,它将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1)。因此,command 2>&1 会将 command 的标准错误和标准输出合并,也就是将标准错误输出到标准输出。例如:

ls /path/to/nonexistent 2>&1

  在这个命令中,ls /path/to/nonexistent 的错误输出会被重定向到标准输出,因此你会在终端看到这个错误输出。

  将这两个重定向操作结合使用,command >/dev/null 2>&1,可以将 command 的标准输出和标准错误都丢弃。例如:

ls /path/to/nonexistent >/dev/null 2>&1

  在这个命令中,ls /path/to/nonexistent 的输出和错误都会被重定向到 /dev/null,因此你不会在终端看到任何输出。

  需要注意的是,>/dev/null 2>&1 的顺序是不能写反的。如果你写成 2>&1 >/dev/null,那么只有标准输出会被丢弃,标准错误还会被输出到终端。

 

 

标签: linux

目录
相关文章
|
7月前
|
JavaScript
JS中Null和Undefined的区别及用法
JS中Null和Undefined的区别及用法
83 1
|
5月前
|
存储 C++ Cloud Native
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
62 0
|
3月前
|
存储 JavaScript 前端开发
|
6月前
|
JavaScript 前端开发
null、未定义或未声明的变量之间有什么区别
null、未定义或未声明的变量之间有什么区别
|
7月前
|
前端开发 JavaScript
【Web 前端】undefined 和 null 区别?
【4月更文挑战第22天】【Web 前端】undefined 和 null 区别?
【Web 前端】undefined 和 null 区别?
|
7月前
|
C语言
C语言(9)----NULL、null(或者NUL)、\0、0、‘0’几者之间的区别
C语言(9)----NULL、null(或者NUL)、\0、0、‘0’几者之间的区别
123 0
|
7月前
|
JavaScript 前端开发 Python
js中null和undefined的区别是什么
js中null和undefined的区别是什么
109 3
|
7月前
|
安全 编译器 C语言
NULL和nullptr到底是什么?它们的区别又是什么?
NULL和nullptr到底是什么?它们的区别又是什么?
|
7月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL 关系型数据库 MySQL
python在mysql中插入或者更新null空值
这段代码是Python操作MySQL数据库的示例。它执行SQL查询从表`a_kuakao_school`中选取`id`,`university_id`和`grade`,当`university_id`大于0时按升序排列。然后遍历结果,根据`row[4]`的值决定`grade`是否为`NULL`。若不为空,`grade`被格式化为字符串;否则,设为`NULL`。接着构造UPDATE语句更新`university`表中对应`id`的`grade`值,并提交事务。重要的是,字符串`NULL`不应加引号,否则更新会失败。
160 2