nohup
(no hang-up)命令在 Linux 中用于在用户退出登录后继续运行指定的程序或脚本。以下是一些使用 nohup
命令的技巧:
nohup command &
command
:要运行的命令或脚本。&
:将命令放入后台运行。默认情况下,nohup
会将输出重定向到当前目录下的 nohup.out
文件。你可以自定义输出文件:
nohup command > output.log 2>&1 &
>
:将标准输出重定向到指定文件。2>&1
:将标准错误输出重定向到标准输出。&
:将命令放入后台运行。nohup
命令会忽略挂起信号(SIGHUP),这样即使用户退出登录,程序也会继续运行。
&
后台运行如果你不希望将输出重定向到文件,只想在后台运行,可以省略输出重定向部分:
nohup command &
你可以使用 ps
命令查看后台运行的进程:
ps aux | grep command
如果你需要终止后台运行的进程,可以使用 kill
命令:
kill -9 <PID>
<PID>
:进程的进程ID。nohup
运行脚本你可以使用 nohup
运行脚本文件:
nohup ./script.sh &
如果程序产生大量输出,可能会导致 nohup.out
文件迅速增长。你可以定期清理或压缩该文件:
# 定期清理 nohup.out 文件
find /path/to/logs -name "nohup.out" -type f -mtime +7 -exec rm {} \;
# 压缩 nohup.out 文件
gzip nohup.out
nohup
和 screen
或 tmux
为了更好地管理后台进程,你可以结合使用 nohup
和终端复用工具如 screen
或 tmux
:
# 启动 screen 会话
screen -S mysession
# 在 screen 会话中运行命令
nohup command &
# 分离 screen 会话
Ctrl+A D
# 重新连接到 screen 会话
screen -r mysession
通过这些技巧,你可以更有效地使用 nohup
命令来确保你的程序在用户退出登录后继续运行。