在Linux和类Unix系统中,`nohup` 是一个常用的命令行工具。它的全称是 "No HangUP"(无挂断),主要用于让进程在用户退出终端后继续运行。简单来说,当你使用 `nohup` 运行某个程序时,即使你关闭了终端或者断开了网络连接,这个程序依然会继续在后台执行。
使用场景
通常情况下,如果你在一个终端窗口中启动了一个长时间运行的任务,比如数据处理或服务器启动,当你关闭终端时,这个任务也会随之中断。而使用 `nohup` 可以避免这种情况的发生。它将程序的输出重定向到一个文件(默认为 `nohup.out`),这样即使你退出终端,程序仍然可以正常运行,并且你可以通过查看日志文件来追踪程序的运行状态。
基本语法
```bash
nohup command > output.log 2>&1 &
```
- `command`:你要运行的命令。
- `> output.log`:将标准输出重定向到 `output.log` 文件。
- `2>&1`:将标准错误输出也重定向到标准输出(即同一个文件)。
- `&`:将命令放入后台运行。
示例
假设你想在后台运行一个脚本 `my_script.sh`,并且希望即使你退出终端,脚本也能继续运行:
```bash
nohup ./my_script.sh > script_output.log 2>&1 &
```
这样,`my_script.sh` 就会在后台运行,输出会被写入 `script_output.log` 文件中。
总结
`nohup` 是一个非常实用的工具,尤其当你需要在远程服务器上运行长时间任务时。它确保你的任务不会因为终端的关闭而中断,同时还能记录运行日志,方便后续检查和调试。
下次如果遇到类似的需求,记得用上 `nohup`!