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
命令来确保命令在用户退出登录后继续运行。