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,它们提供了更多的功能和灵活性。