在 Linux 中,nohup 命令用于在用户退出登录后继续运行指定的进程。默认情况下,当用户注销或关闭终端时,所有与该终端会话关联的进程都会被终止。使用 nohup 可以防止这种情况发生。
nohup 的基本语法nohup 命令 [选项] [命令] [参数...] &
nohup:表示 “no hang up”,即不挂起。命令 [参数...]:你希望持续运行的命令及其参数。&:将命令放入后台运行。-h 或 --help:显示帮助信息。-v 或 --version:显示版本信息。在后台运行一个简单的命令
假设你想在后台运行一个 Python 脚本 script.py,可以使用以下命令:
nohup python script.py &
这样,即使你关闭终端,script.py 也会继续运行。
重定向输出
默认情况下,nohup 会将标准输出和标准错误输出重定向到当前目录下的 nohup.out 文件。如果你想将输出重定向到其他文件,可以这样做:
nohup python script.py > output.log 2>&1 &
解释:
> 将标准输出重定向到 output.log。2>&1 将标准错误输出重定向到标准输出,即 output.log。& 将命令放入后台运行。在特定目录下运行并重定向输出
如果你想在特定目录下运行命令并重定向输出,可以先使用 cd 切换目录,然后执行 nohup 命令:
cd /path/to/directory
nohup python script.py > /var/log/script.log 2>&1 &
查看后台运行的进程
使用 ps 命令可以查看后台运行的进程:
ps aux | grep script.py
这将显示所有与 script.py 相关的进程。
终止后台进程
如果需要终止后台运行的进程,可以使用 kill 命令:
kill -9 PID
其中 PID 是进程的进程 ID。
nohup 运行的命令会将输出重定向到 nohup.out 或指定的日志文件。定期检查和管理这些日志文件,以防止磁盘空间被占满。通过合理使用 nohup 命令,可以确保在用户退出登录后,重要的进程仍然能够持续运行。