在 Linux 中,nohup
命令用于在用户退出系统或关闭终端后继续运行指定的命令或脚本。使用 nohup
可以避免 SSH 会话中断对进程的影响。以下是使用 nohup
的基本步骤和示例:
基本语法
nohup command [arguments] &
command
是你想要运行的命令或脚本。[arguments]
是传递给命令的参数(如果有)。&
将命令放入后台运行。
示例
假设你有一个名为 my_script.sh
的脚本,你希望在 SSH 会话中断后仍然继续运行它。
-
使用
nohup
运行脚本:nohup ./my_script.sh &
-
查看输出:
nohup
默认会将输出重定向到一个名为nohup.out
的文件中。你可以使用以下命令查看输出:tail -f nohup.out
-
指定输出文件: 如果你希望将输出重定向到其他文件,可以使用
>
或>>
操作符:nohup ./my_script.sh > output.log 2>&1 &
这里,
>
将标准输出重定向到output.log
,2>&1
将标准错误重定向到标准输出,从而将所有输出都写入output.log
。
注意事项
- 后台运行:使用
&
将命令放入后台运行,这样你可以在不阻塞终端的情况下继续使用 SSH 会话。 - 输出重定向:默认情况下,
nohup
会将输出重定向到nohup.out
文件。如果你希望将输出重定向到其他文件,需要显式指定。 - 进程管理:虽然
nohup
可以避免 SSH 会话中断对进程的影响,但你仍然需要手动管理这些进程。例如,你可以使用ps
命令查看进程状态,使用kill
命令终止进程。
示例:使用 nohup
运行一个长时间运行的命令
假设你想运行一个长时间运行的命令 long_running_command
,并希望它在 SSH 会话中断后继续运行:
nohup long_running_command &
然后,你可以使用以下命令查看输出:
tail -f nohup.out
通过这种方式,即使你关闭了 SSH 会话,long_running_command
也会继续运行。