📅  最后修改于: 2023-12-03 14:43:58.334000             🧑  作者: Mango
在 Linux 系统下,可以通过 shell 命令行运行可执行文件。而有时候我们希望将程序执行放到后台,而不占用当前终端的屏幕输入。这时候可以使用一些特殊命令和符号实现后台执行。
最简单的方法就是在命令行执行程序时,在命令末尾加上 & 符号,如下所示:
$ ./program &
这样程序就会在后台执行,不会占用当前终端的输入区域,可以继续执行其他的命令。
有时候使用 & 符号的方式会出现一种情况,就是程序在后台运行时,如果当前终端关闭,程序也会被关闭。为了避免这种情况,可以使用 nohup 命令。nohup 表示 “no hang up”,意思是在用户退出登录后程序仍然可以运行。
执行 nohup 命令的格式如下所示:
$ nohup ./program &
nohup 命令会将程序的输出重定向到 nohup.out 文件中,如果想要指定输出文件,可以使用如下命令:
$ nohup ./program > output.log &
这样程序的输出就会被重定向到 output.log 文件中。
screen 命令是一个非常有用的工具,它可以在一个终端会话中创建多个窗口,并可以在多个窗口之间切换。使用 screen 命令执行程序的好处是,即使终端会话关闭,程序仍然可以继续在后台执行。
使用 screen 命令的格式如下所示:
$ screen -S session-name ./program
这样会创建一个名为 session-name 的新的 screen 会话,并在其中运行程序。要离开当前会话,可以使用 Ctrl-A + D 快捷键。如果需要恢复会话,可以执行如下命令:
$ screen -r session-name
这样就会恢复到之前创建的会话中。
上述这些方法都可以实现在后台运行可执行文件。& 符号是最简单的方式,但是存在一些缺点;nohup 命令可以避免 & 符号的缺点;而 screen 命令则是更加强大的工具,可以在多个窗口之间切换。开发者可以根据实际需求选择一种最适合自己的方式来实现后台运行。