nohup(no hang-up)命令在 Linux 中用于在用户退出登录后继续运行指定的命令或程序。以下是 nohup 命令的一些常见用法:
运行单个命令
nohup command &
例如:
nohup sleep 3600 &
这将使 sleep 3600 命令在后台运行,并且即使你退出登录,它也会继续运行。
运行脚本
nohup ./script.sh &
这将使 script.sh 脚本在后台运行,并且即使你退出登录,它也会继续运行。
指定输出文件
默认情况下,nohup 会将输出重定向到 nohup.out 文件。你可以显式指定输出文件:
nohup command > output.log 2>&1 &
这将把标准输出和标准错误都重定向到 output.log 文件。
使用 & 后台运行
在命令末尾加上 & 可以使命令在后台运行,这样你就可以立即返回到命令行提示符。
nohup command &
使用 disown 命令
如果你已经启动了一个命令,但后来想要将其从当前 shell 的作业表中移除,可以使用 disown 命令:
nohup command &
disown
使用 screen 或 tmux
对于需要更复杂会话管理的任务,可以使用 screen 或 tmux 工具。这些工具允许你在多个会话之间切换,并且即使终端关闭,会话也会继续运行。
screen -S mysession
command
# 按 Ctrl+A 然后按 D 退出会话
使用 systemd 服务
对于需要在系统启动时自动运行的任务,可以创建一个 systemd 服务单元文件。
[Unit]
Description=My Service
[Service]
ExecStart=/path/to/command
Restart=always
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl enable myservice.service
sudo systemctl start myservice.service
nohup 命令会忽略挂起信号(SIGHUP),因此即使你退出登录,命令也会继续运行。nohup 时,建议将输出重定向到文件,以避免输出到终端导致混乱。screen、tmux 或 systemd 服务来管理。通过这些用法,你可以有效地在 Linux 中使用 nohup 命令来确保命令在用户退出登录后继续运行。