📅  最后修改于: 2023-12-03 15:32:40.131000             🧑  作者: Mango
当你在Linux下执行一个脚本或程序时,它会一直阻塞shell, 直到程序执行完毕。但是,有时候我们希望程序能够在后台执行,这样我们就可以继续使用终端,而不用等待程序执行完毕。 下面是如何将程序在后台执行的方法。
把一个命令放在 &
符号之后,可以让它在后台运行。有两种方式可以使用 &
符号。
在命令行中输入命令时,使用 &
符号可以使命令在后台运行。例如:
$ ./my_program &
在脚本中使用 &
运算符,可以使脚本在后台运行。例如:
#!/bin/bash
./my_program &
echo "My program is running in the background."
在这个例子中,my_program
被放在 &
符号后,使它在后台运行。 然后,脚本继续执行在 echo
语句,仍然在前台中运行。
nohup
命令与 &
操作符类似,它可以使命令在后台运行,并且在终端关闭后保持运行。
nohup ./my_program &
在这里,my_program
命令会在后台运行,并且会保持运行状态,即使终端关闭。
nohup
命令也可以将输出重定向到一个文件中。
nohup ./my_program > output.log &
在这个例子中,my_program
命令的输出将被重定向到 output.log
文件中。 如果你不想让 nohup
命令在当前目录中创建一个默认的文件名,你可以指定一个文件名。
nohup ./my_program > output.log 2>&1 &
在这个例子中, 2>&1
将标准错误输出重定向到标准输出,然后将它们一起重定向到 output.log
文件中。
screen
命令是一个多功能的终端窗口管理程序。它可以将一个或多个终端窗口连接在一起,并允许用户在这些窗口之间自由地切换。
screen -S my_session_name ./my_program
在这个命令中,-S
选项用于指定一个会话名称,以便可以轻松地参考已启动的窗口。 ./my_program
是要在窗口中启动的程序或命令。
要离开 screen
环境并保持程序在后台运行,您可以使用以下组合键:Ctrl + A, D
。 这个组合键会断开你的会话,将你返回到主终端,但是在后台,程序将保持运行状态。
screen -r my_session_name
在这个命令中, r
选项用于重新连接之前的会话。
在Linux中,可以使用 &
操作符、 nohup
和 screen
命令,使程序在后台运行。每个选项都有不同的用途,可以在不同的情况中使用。了解这些选项可以帮助您提高效率。