nohup 命令用于在后台运行程序,使其不受终端关闭的影响。而 & 符号则用于将命令放入后台执行。将两者结合使用可以确保程序在后台稳定运行,即使终端会话结束也不会中断。
以下是一些使用 nohup 和 & 的技巧:
nohup your_command &
your_command 是你想要在后台运行的命令。& 将命令放入后台执行。默认情况下,nohup 会将输出重定向到 nohup.out 文件中。你可以自定义输出文件:
nohup your_command > output.log 2>&1 &
> 将标准输出重定向到 output.log。2>&1 将标准错误输出重定向到标准输出(即 output.log)。有时你可能希望忽略挂起信号(如 SIGHUP),以确保程序在终端关闭后仍然运行:
nohup your_command &>/dev/null &
&>/dev/null 将所有输出(包括标准输出和标准错误输出)重定向到 /dev/null,即丢弃所有输出。disown如果你已经启动了一个后台进程,但后来决定不再需要它,可以使用 disown 命令将其从当前 shell 的作业表中移除:
your_command &
disown
SIGHUP 信号给该进程。screen 或 tmux对于更复杂的后台任务管理,可以考虑使用 screen 或 tmux 等终端复用工具。这些工具允许你创建多个会话,并在需要时重新连接:
screen -S your_session_name
your_command
# 按 Ctrl+A 然后 D 退出会话
screen -r your_session_name 重新连接到该会话。你可以使用 ps 命令来监控后台进程:
ps aux | grep your_command
your_command 相关的进程。nohup 和 & 的组合结合以上技巧,你可以创建一个健壮的后台任务管理脚本:
nohup your_command > output.log 2>&1 &
disown
your_command 在后台稳定运行,并且不会因为终端关闭而中断。通过这些技巧,你可以更有效地使用 nohup 和 & 来管理后台进程。