本文共 1073 字,大约阅读时间需要 3 分钟。
nohup(不挂断处理)命令用于运行命令时不停止终端,适用于需要长时间执行任务的场景。这种机制确保即使终端被关闭,程序仍能持续运行,避免因挂断信号(SIGHUP)导致程序终止。
命令语法格式如下:
```bashnohup Command [Arg ...] [;&]```- `Command`:指定需要执行的命令。- `[Arg ...]`:可选的命令参数。- `;&`:最终强制使命令继续执行,并在后台运行。例如,运行命令并将输出重定向到指定文件:
```bash# 指定将输出重定向到特定文件,并继续运行nohup Command > output.log &```如果不重新定向输出,默认会将输出写入 `nohup.out` 文件
使用 `&` 可将命令运行在后台,同时也不挂断终端,但不支持重新定向。与 `nohup` 结合使用时,可以实现不挂断并定向的效果。
`nohup`命令会自动将错误输出(标准错误)与标准输出一起重定向到指定文件。这样可以避免遗漏关键信息,当终端被关闭时,仍能追踪命令的运行状态
**示例1:运行一个持续性任务并指定输出文件**
```bashnohup ping 127.0.0.1 > myping.log &```执行上述命令后,可以用 `tail -f myping.log` 查看实时日志
**示例2:不指定重定向,输出自动写入 nohup.out**
```bashnohup echo调试信息 &```在RHEL 7中,后台进程默认会继续运行,即使前置-shell 被关闭。因此,`nohup`命令已经不再支持——可以直接使用 `&` 来背景运行命令,无需`nohup`
可以使用 `jobs` 命令查看后台任务状态
要终止某个后台任务,可以使用 `kill` 命令
nohup命令是每个系统管理员常用的工具,它能够帮助我们不受终端限制地运行任务。当需要长时间运行程序时,正确使用nohup命令能够节省大量时间和精力
转载地址:http://vjwfk.baihongyu.com/