`nohup` 是一个在类 Unix 操作系统中广泛使用的命令,它的用途是在用户退出终端(logout)之后仍保持程序继续运行。当你启动一个命令时,如果没有 `nohup`,当你的 shell 会话结束(例如你关闭了终端或者断开了 SSH 连接),所有在该会话下启动的进程通常会随着 SIGHUP(挂起)信号而终止。`nohup` 命令使得进程忽略这个信号,因此即使终端关闭,命令也能在后台持续运行。
基本用法如下:
nohup command [arguments] &
这里的 `command` 是你想要在后台持续运行的命令,`[arguments]` 是传递给该命令的任何参数。
例如,假设你有一个脚本 `myscript.sh`,你想让它在后台运行且不受终端关闭的影响,你可以这样做:
nohup ./myscript.sh &
运行上述命令后,程序会在后台开始执行,并且不会因为用户的退出而停止。默认情况下,原本应输出到终端的标准输出(STDOUT)和标准错误(STDERR)会被重定向到一个名为 `nohup.out` 的文件中。
如果你想将输出重定向到其他特定文件而不是 `nohup.out`,可以在命令末尾添加重定向操作符,如:
nohup ./myscript.sh > output.log 2>&1 &
这条命令会让脚本的输出(包括标准输出和标准错误)都写入到 `output.log` 文件中。
总结关键点:
- `nohup` 和命令之间没有空格。
- 在命令结尾加上 `&` 符号以使其在后台运行。
- 默认情况下,输出会被记录到 `nohup.out` 文件中。
- 可以通过重定向来更改输出的目标文件。