nohup命令详解

简介: nohup命令详解

一、背景说明:

启动服务的时候,如果使用如下命令,则会在start.sh脚本所在的目录下,产生一个名为 nohup.out 的输出文件

nohup ./startup.sh &

可以看到下面这个例子,一开始当前目录是没有nohup.out文件的,经过这行命令之后就可以查看到当前脚本输出的信息在nohup.out文件里了。

如果不想要这个多余的 nohup.out 文件,可以使用如下命令解决:

nohup  ./startup.sh  >/dev/null  2>&1  &

二、命令解析:

1、nohup和尾部 &

1)nohup 是no hangup,不要挂断,永久运行。关闭终端,当前运行的进程不终止,标准输出内容会输出到当前目录的 nohup.out 日志文件中而不显示在终端。

2)命令最后一个 &,表示后台运行的意思,和 nohup 配置表示不挂断后台运行。

2、>/dev/null 和 2>&1

1)/dev/null 是 Linux 一个空设备文件,通常也被称为位桶(bit bucket)或黑洞,这个文件接收到任何数据都会被丢弃,也就是不输出任何信息到终端。

2)> 代表重定向到哪里;重定向的符号有两个:> 或 >>,> 会先清空文件,然后再写入内容,>> 会将重定向的内容追加到现有文件的尾部

3)Linux系统预留了三个文件描述符:0、1 和 2,他们的意义如下所示:

①0:标准输入流 stdin

②1:标准输出流 stdout,默认值是1

③2:标准错误流 stderr

4)“>/dev/null” 等价于 “1>/dev/null”,表示标准输出(1)输出到 /dev/null 中,即终端不输出标准输出信息;

2>&1” 中的 “&” 是等价于的意思,表示标准错误(2)输出的位置等价于标准输出(1)的位置,即等价于 “2>/dev/null”, 即终端不输出标准错误信息。

因此,“>/dev/null 2>&1” 表示 标准错误信息和标准输出信息,在终端上均不输出。

三、指定输出文件:

如果想要将服务启动和运行过程中的日志信息输出到指定位置(比如:/var/log/start.log),可以参考如下命令:

nohup ./startup.sh >/var/log/start.log 2>&1 &

或者

nohup sh startup.sh >/var/log/start.log 2>&1 &

四、sh xxx.sh与./xxx.sh区别:

sh xxx.sh是用sh执行startup.sh,startup.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#!/bin/sh。

./startup.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bash。


相关文章
|
6天前
|
缓存 Linux
lscpu命令详解
`lscpu` 是Linux系统下用于显示CPU架构和相关详情的命令,帮助用户了解处理器配置,适用于性能诊断、系统调优和软件部署规划。输出包括架构(如x86_64或ARM)、操作模式、字节顺序、CPU核心和线程信息、NUMA节点等。选项如 `-a` 显示所有CPU信息,`-b` 和 `-c` 分别显示在线和离线CPU信息。信息来源包括sysfs和`/proc/cpuinfo`文件。
36 2
|
6天前
|
Python
用于后台运行命令的工具 - nohup
【1月更文挑战第21天】
40 5
|
6天前
|
Shell Linux
Linux命令(76)之nohup
Linux命令(76)之nohup
43 1
|
5月前
|
网络协议 Shell Linux
Linux命令(37)之sh
Linux命令(37)之sh
64 1
|
6天前
|
网络协议
nmtui命令详解
【4月更文挑战第9天】`nmtui`是NetworkManager的文本用户界面工具,用于终端中的网络配置和管理。用户可通过它查看网络设置、配置接口、修改设置、添加/删除连接及调整连接优先级。操作步骤包括启动nmtui,选择编辑连接,修改网卡设置,保存并退出。此工具包含在NetworkManager-tui子软件包中,配置更改会持久生效。了解更多详情可参考相关文档。
46 1
|
6天前
|
Linux
Linux nohup 后台运行脚本
Linux nohup 后台运行脚本
123 0
|
11月前
|
Shell
|
Linux
Linux常用命令 - rm命令详解
Linux常用命令 - rm命令详解
167 0
|
Linux C++
Linux常用命令 - cp命令详解
Linux常用命令 - cp命令详解
116 0
|
Shell Linux Go
nohup 命令解析
`nohup`不会断开与终端的命令,它会使您的脚本被忽略`SIGHUP`,并重定向`stdout/stderr`到一个文件`nohup.out`,以便在您注销后该命令可以在后台继续运行。
3549 0

相关课程

更多