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
。这些工具允许你在多个会话之间切换,并且即使终端关闭,进程也会继续运行。
screen
screen -S mysession
command
# 按 Ctrl+A 然后按 D 退出 session
# 重新连接 session
screen -r mysession
tmux
tmux 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
命令来管理后台进程。