在 Linux 中,nohup
命令用于在用户退出登录后继续运行指定的命令或脚本。默认情况下,nohup
会忽略挂起信号(SIGHUP),以防止进程在终端关闭时被终止。以下是如何使用 nohup
命令以及相关配置的详细说明:
nohup
基本语法nohup command [arguments] &
command
:要运行的命令或脚本。[arguments]
:传递给命令的参数(可选)。&
:将命令放入后台运行。假设你想在后台运行一个名为 my_script.sh
的脚本:
nohup ./my_script.sh &
执行上述命令后,my_script.sh
将在后台运行,即使你关闭终端或注销,它也会继续执行。
nohup
默认会将命令的标准输出和标准错误输出重定向到当前目录下的 nohup.out
文件。你可以自定义输出文件的位置和名称:
nohup ./my_script.sh > output.log 2>&1 &
> output.log
:将标准输出重定向到 output.log
文件。2>&1
:将标准错误输出重定向到标准输出,即同样写入 output.log
。&
:将命令放入后台运行。默认情况下,nohup
已经忽略挂起信号(SIGHUP),这意味着即使终端关闭,进程也不会被终止。然而,如果你希望显式地忽略 SIGHUP 或其他信号,可以使用 disown
命令或信号处理机制。
disown
在后台运行命令后,可以使用 disown
命令将其从当前 shell 的作业表中移除,从而忽略 SIGHUP:
nohup ./my_script.sh &
disown
或者,可以在启动命令时直接使用 nohup
和 &
,然后使用 disown
:
./my_script.sh &
nohup disown
如果你需要在脚本中显式地忽略 SIGHUP,可以使用 trap
命令:
#!/bin/bash
# 忽略 SIGHUP
trap '' SIGHUP
# 你的命令或逻辑
while true; do
echo "脚本正在运行..."
sleep 10
done
保存上述脚本为 my_script.sh
,然后使用 nohup
运行:
nohup ./my_script.sh &
你可以使用以下命令查看当前后台运行的进程:
jobs
或者使用 ps
命令:
ps aux | grep my_script.sh
如果你需要终止一个使用 nohup
运行的后台进程,可以使用 kill
命令:
kill -9 <PID>
其中 <PID>
是进程的进程 ID。你可以使用 ps
命令找到进程 ID:
ps aux | grep my_script.sh
nohup
命令可以在退出登录后继续运行命令或脚本。nohup
默认忽略 SIGHUP 信号,确保进程不会因终端关闭而被终止。disown
命令可以将进程从当前 shell 的作业表中移除,进一步确保进程不会因终端关闭而被终止。trap
命令可以显式地忽略特定信号。希望这些信息对你有所帮助!如果有更多问题,请随时提问。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>