nohup
(no hang-up)命令在Linux中用于在用户退出登录后继续运行指定的程序或脚本。它通常用于确保长时间运行的任务在用户断开连接后仍然能够继续执行。nohup
命令的一个重要特性是它会将程序的输出重定向到一个名为nohup.out
的文件中,除非指定了其他输出文件。
以下是nohup
命令的基本用法和一些关键点:
nohup command &
command
:要运行的命令或脚本。&
:将命令放入后台运行。默认情况下,nohup
会将标准输出和标准错误输出重定向到nohup.out
文件中。你可以显式地指定输出文件:
nohup command > output.log 2>&1 &
>
:将标准输出重定向到指定文件。2>&1
:将标准错误输出重定向到标准输出(即output.log
)。nohup
命令会忽略挂起(SIGHUP)信号,这样即使用户退出登录,程序也会继续运行。
假设你有一个长时间运行的Python脚本long_running_script.py
,你可以使用以下命令来运行它,并确保它在用户退出登录后继续运行:
nohup python long_running_script.py > script_output.log 2>&1 &
你可以随时查看nohup.out
文件或你指定的输出文件来检查程序的输出和状态:
tail -f nohup.out
tail -f
:实时查看文件的最新内容。如果你需要终止由nohup
启动的进程,可以使用ps
命令找到进程ID(PID),然后使用kill
命令终止它:
ps aux | grep long_running_script.py
kill -9 <PID>
ps aux
:列出所有正在运行的进程。grep long_running_script.py
:过滤出与你的脚本相关的进程。kill -9 <PID>
:强制终止进程(-9
是SIGKILL信号)。通过这些方法,你可以有效地使用nohup
命令来确保长时间运行的任务在用户退出登录后仍然能够继续执行,并且可以通过日志文件来监控和调试这些任务。