📜  linux ejecutar en segundo plano - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:32:40.131000             🧑  作者: Mango

Linux 在后台执行 - Shell/Bash

当你在Linux下执行一个脚本或程序时,它会一直阻塞shell, 直到程序执行完毕。但是,有时候我们希望程序能够在后台执行,这样我们就可以继续使用终端,而不用等待程序执行完毕。 下面是如何将程序在后台执行的方法。

& 操作符

把一个命令放在 & 符号之后,可以让它在后台运行。有两种方式可以使用 & 符号。

1. 在命令行中使用

在命令行中输入命令时,使用 & 符号可以使命令在后台运行。例如:

$ ./my_program &
2. 在脚本中使用

在脚本中使用 & 运算符,可以使脚本在后台运行。例如:

#!/bin/bash

./my_program &
echo "My program is running in the background."

在这个例子中,my_program 被放在 & 符号后,使它在后台运行。 然后,脚本继续执行在 echo 语句,仍然在前台中运行。

nohup 命令

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 命令是一个多功能的终端窗口管理程序。它可以将一个或多个终端窗口连接在一起,并允许用户在这些窗口之间自由地切换。

screen -S my_session_name ./my_program

在这个命令中,-S 选项用于指定一个会话名称,以便可以轻松地参考已启动的窗口。 ./my_program 是要在窗口中启动的程序或命令。

要离开 screen 环境并保持程序在后台运行,您可以使用以下组合键:Ctrl + A, D。 这个组合键会断开你的会话,将你返回到主终端,但是在后台,程序将保持运行状态。

screen -r my_session_name

在这个命令中, r 选项用于重新连接之前的会话。

总结

在Linux中,可以使用 & 操作符、 nohupscreen 命令,使程序在后台运行。每个选项都有不同的用途,可以在不同的情况中使用。了解这些选项可以帮助您提高效率。