nohup
(no hang-up)命令在Linux中用于在后台运行程序,即使关闭终端或者断开连接,程序也会继续运行。以下是一些使用nohup
命令的技巧:
运行单个命令
nohup command &
例如:
nohup sleep 3600 &
运行脚本
nohup ./script.sh &
重定向输出
默认情况下,nohup
会将输出重定向到当前目录下的nohup.out
文件。你可以自定义输出文件:
nohup command > output.log 2>&1 &
这里,>
将标准输出重定向到output.log
,2>&1
将标准错误重定向到标准输出,从而两者都写入output.log
。
后台运行多个命令
可以使用&
将多个命令放在一个脚本中,然后使用nohup
运行该脚本:
nohup bash -c 'command1; command2' &
使用disown
如果你已经启动了一个进程,但希望它不受终端关闭的影响,可以使用disown
命令:
command &
disown
使用screen
或tmux
对于更复杂的会话管理,可以使用screen
或tmux
工具。这些工具允许你在多个会话之间切换,并且即使断开连接,会话也会继续运行。
使用screen
screen -S mysession
command
# 按 Ctrl+A 然后 D 断开连接
screen -r mysession
使用tmux
tmux new -s mysession
command
# 按 Ctrl+B 然后 D 断开连接
tmux attach -t mysession
设置环境变量
有时你可能需要在后台运行的程序中使用特定的环境变量。可以在nohup
命令前设置这些变量:
MY_VAR=value nohup command &
监控进程
使用ps
命令可以监控后台进程:
ps aux | grep nohup
日志轮转
如果输出文件可能会变得非常大,可以考虑使用日志轮转工具(如logrotate
)来管理日志文件的大小和数量。
nohup
命令会忽略挂起信号(SIGHUP),因此即使终端关闭,进程也会继续运行。nohup
时,确保你有足够的权限来运行相关命令。nohup
,因为它可能会导致难以调试的问题。在生产环境中,建议使用更健壮的进程管理工具。通过这些技巧,你可以更有效地使用nohup
命令来确保你的程序在后台稳定运行。