nohup
命令和&
符号在Linux中经常一起使用,以实现让程序在后台运行并忽略挂起(SIGHUP)信号的目的。下面是关于这两个命令配合使用的详细解释和技巧:
nohup
是“no hang-up”的缩写,意味着即使终端关闭,程序也会继续运行。它通常用于确保长时间运行的任务不会因为终端断开而中断。
&
符号用于将命令放入后台执行。当你在命令行中输入一个命令并按下&
,该命令会在后台启动,而不会阻塞当前终端。
nohup your_command &
这会让your_command
在后台运行,并且即使你关闭终端,它也会继续执行。输出会被重定向到nohup.out
文件中(除非你指定了其他输出文件)。
如果你不想让输出默认写入nohup.out
,可以使用重定向操作符>
或>>
来指定输出文件:
nohup your_command > output.log 2>&1 &
这里,>
将标准输出重定向到output.log
,2>&1
将标准错误重定向到标准输出(即output.log
),最后的&
将整个命令放入后台。
你可以使用jobs
命令来查看当前终端的后台进程。如果你想查看所有用户的后台进程,可以使用ps
命令结合grep
:
ps aux | grep your_command
要终止一个后台进程,你可以先使用jobs -l
找到进程的PID(进程ID),然后使用kill
命令来终止它:
kill PID
或者,如果你知道进程的名字,也可以使用pkill
命令:
pkill -f your_command
nohup
时,确保你了解该命令的行为和可能的副作用,因为它会让程序在后台持续运行,即使你忘记了它。screen
或tmux
,它们提供了更多的功能和灵活性。