在 Linux 中,nohup
命令用于在用户退出登录后继续运行指定的命令或脚本。默认情况下,当用户注销或关闭终端时,所有与该终端会话相关的进程都会被终止。使用 nohup
可以避免这种情况,使进程在后台持续运行,即使终端会话结束也不会终止。
以下是使用 nohup
命令的基本语法和一些示例:
nohup command [arguments] &
command
:要运行的命令。[arguments]
:命令的参数(可选)。&
:将命令放入后台运行。运行一个简单的命令
nohup ls -l /home/user &
这个命令会在后台运行 ls -l /home/user
,并且即使你关闭终端,该命令也会继续运行。
重定向输出
默认情况下,nohup
会将标准输出和标准错误输出重定向到一个名为 nohup.out
的文件中。你可以显式地指定输出文件:
nohup ls -l /home/user > output.log 2>&1 &
这个命令会将标准输出和标准错误输出都重定向到 output.log
文件中。
运行一个脚本
假设你有一个名为 myscript.sh
的脚本,可以使用 nohup
来运行它:
nohup ./myscript.sh &
查看后台进程
你可以使用 jobs
命令来查看当前终端会话中的后台进程:
jobs
要查看所有后台进程,可以使用 ps
命令:
ps aux | grep nohup
终止后台进程
如果你需要终止一个后台进程,可以使用 kill
命令。首先,找到进程的 PID(进程 ID),然后使用 kill
命令终止它:
ps aux | grep nohup
kill -9 <PID>
其中 <PID>
是进程的 ID。
nohup
命令会使进程忽略挂起(SIGHUP)信号,因此即使终端会话结束,进程也会继续运行。nohup
时,建议将输出重定向到一个文件,以避免输出到终端时可能会出现的混乱。systemd
或 supervisord
等工具。通过这些方法,你可以确保在 Linux 中使用 nohup
命令时,进程不会因为终端会话结束而终止。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:如何通过nohup命令避免Linux进程被意外终止