nohup(no hang-up)命令在 Linux 系统中用于在用户退出登录后继续运行指定的程序或脚本。以下是一些关于如何安全使用 nohup 命令的指南:
nohup command &
command:要运行的命令或脚本。&:将命令放入后台运行。默认情况下,nohup 会将输出重定向到当前目录下的 nohup.out 文件。为了避免覆盖已有文件,可以使用 > 或 >> 进行重定向:
nohup command > output.log 2>&1 &
>:覆盖写入 output.log。2>&1:将标准错误(stderr)重定向到标准输出(stdout),然后一起写入 output.log。为了确保命令在正确的环境中运行,建议使用命令的绝对路径:
nohup /usr/bin/command > output.log 2>&1 &
如果命令依赖于特定的环境变量,可以在 nohup 命令前设置这些变量:
MY_VAR=value nohup command > output.log 2>&1 &
使用 ps 命令监控后台进程:
ps aux | grep command
找到进程 ID(PID)后,可以使用 kill 命令终止进程:
kill -9 PID
screen 或 tmux对于更复杂的任务管理,可以考虑使用 screen 或 tmux。这些工具允许你在多个会话之间切换,并且即使终端关闭,进程也会继续运行。
screenscreen -S mysession
command
# 按 Ctrl+A 然后按 D 退出 session
# 重新连接 session
screen -r mysession
tmuxtmux new -s mysession
command
# 按 Ctrl+B 然后按 D 退出 session
# 重新连接 session
tmux attach -t mysession
nohup.out 文件,确保没有异常输出。ulimit 命令限制进程的资源使用,防止资源耗尽。假设你想在后台运行一个 Python 脚本,并将输出重定向到一个文件:
nohup /usr/bin/python3 /path/to/script.py > script_output.log 2>&1 &
通过遵循这些指南,你可以更安全、有效地使用 nohup 命令来管理后台进程。