c 只获取程序名_详解Linux Screen让程序保持后台运行

35080bc8014cd472a1a6dddf37bf738f.png

您是否曾经遇到过在远程计算机上执行长时间运行的任务,突然连接中断,SSH会话终止以及工作丢失的情况。 好吧,这在某个时候发生在我们所有人身上,不是吗? 幸运的是,有一个名为screen的实用程序,可让我们恢复会话。

screen是终端多路复用器,它允许用户访问单个终端窗口内的多个单独的终端会话或远程终端会话(例如使用SSH时)

介绍

Screen 或GNU Screen 是终端多路复用器。 换句话说,这意味着您可以启动屏幕会话,然后在该会话中打开任意数量的窗口(虚拟终端)。 当您的屏幕窗口不可见时,即使您已断开连接,在Screen中运行的进程也将继续运行。

安装Linux GNU Screen

如今,大多数Linux发行版中都已预先安装了Screen 软件包。您可以通过键入以下命令检查它是否已安装在系统上:

screen --version
3f9e2ec5995b278e32ecaa05ba9d05ce.png

如果您的系统尚未安装Screen ,则可以使用发行版的软件包管理器轻松安装它:

在Ubuntu和Debian上安装Linux Screen

sudo apt install screen

在CentOS和Fedora上安装Linux Screen

sudo yum install screen
29925dc0d7636ffcd788ee5e02d2d9fa.png

启动Linux Screen

要启动screen会话,只需在控制台中键入screen:

screen
e325fa1885f13c7c367f10e81c31db95.png

这将打开一个screen会话,创建一个新窗口,并在该窗口中启动一个shell。 现在,您已经打开了一个屏幕会话,您可以通过键入以下内容来获取命令列表:

Ctrl+a ?  或screen -list
07bc437eee3de0d56836e03f61209562.png

开始命名会话

当您运行多个screen会话时,命名会话很有用。要创建命名会话,请使用以下参数运行screen命令:

screen -S session_name

选择一个描述性的会话名称总是一个好主意。

开始使用Linux Screen

当您开始一个新的screen会话时,它将创建一个带有shell的单个窗口。

在screen会话中你可以有多个窗口。

要创建一个使用shell类型的新窗口可以使用,它将从0 ... 9范围开始的第一个可用数字分配给它:

Ctrl + a c

以下是用于管理Linux Screen Windows的一些最常用命令:

  • Ctrl + a c:创建一个新窗口(带shell)
  • Ctrl + a “:列出所有窗口
  • Ctrl + a 0:切换到窗口0(按数字)
  • Ctrl + a:重命名当前窗口
  • Ctrl + a S:将当前区域水平分为两个区域
  • Ctrl + a | :将当前区域垂直分为两个区域
  • Ctrl + a:选项卡将输入焦点切换到下一个区域
  • Ctrl + a Ctrl + a:在当前区域和上一个区域之间切换
  • Ctrl + a Q:关闭除当前区域外的所有区域
  • Ctrl + a X:关闭当前区域

从Linux Screen 回话中脱离

您可以随时输入以下内容从Screen 会话中分离:

Ctrl+a d

从Screen 会话中分离后,在Screen 会话中运行的程序将继续运行。

重新连接到Linux Screen

要恢复Screen会话,请使用以下命令:

screen -r

如果您的计算机上正在运行多个Screen会话,则需要在r参数后附加屏幕会话ID。

要查找会话ID,请使用以下命令列出当前正在运行的Screen会话:

screen -ls

如果要还原屏幕16364.pts-0,请键入以下命令:

screen -r 16364
7254b66bb67be4d70cef28adc7e6550a.png

删除当前screen回话

进入当前回话,并输入:

exit

自定义Linux屏幕

Screen启动时,如果存在文件,它将从/ etc / screenrc和〜/ .screenrc中读取其配置参数。我们可以使用.screenrc文件根据喜好修改默认的Screen设置。

这是〜/ .screenrc配置示例,带有自定义状态行和一些其他选项:

# Turn off the welcome messagestartup_message off# Disable visual bellvbell off# Set scrollback buffer to 10000defscrollback 10000# Customize the status linehardstatus alwayslastlinehardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

基本的Linux屏幕用法

以下是开始使用屏幕的最基本步骤:

  1. 在命令提示符下,键入screen。
  2. 运行所需的程序。
  3. 使用按键顺序Ctrl-a + Ctrl-d从screen会话中分离。
  4. 通过输入screen -r重新连接到screen会话。

结论

在本教程中,您学习了如何使用Gnu Screen。 现在,您可以开始使用屏幕实用程序,并通过单个会话创建多个屏幕窗口,在窗口之间导航,分离和恢复屏幕会话,并使用.screenrc文件个性化您的屏幕终端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// kylin 2.0.1.1 (build 2010.07.28) #include "stdio.h" #include "KYLin.h" // 启动 static int DoStart(const TKYStringList& AParams, bool AIsSvc) { // 显示 if (!AIsSvc) printf("..... OnStart(IsSvc: false) is running.\n"); // ??? ... ... return 0; } // 停止 static void DoStop(bool AIsSvc) { // 显示 if (!AIsSvc) printf("..... OnStop(IsSvc: false) is running.\n"); // ??? ... ... } // 控制台方式下执行 static void DoExecute(const TKYStringList& AParams, TKYSvcApp* ASvcApp) { // 显示 printf("..... OnExecute is running.\n"); // 等待结束 printf("press [Ctrl+C] stop application.\n"); while (!ASvcApp->Terminated()) ASvcApp->Notify()->Wait(); } // 用户自定义开关 static int DoUser(long ASwitch, int argc, char* argv[]) { printf("switch(%d) <%s> is run.\n", ASwitch, argv[1]); return 0; } // 主函数 int main(int argc, char* argv[]) { // 初始化 TKYSvcApp objApp("TestSvc", "Service demo", "Test TKYSvcApp demo"); // 设置启动/停止的回调函数 objApp.OnStart = DoStart; objApp.OnStop = DoStop; // 自定义应用控制时的回调函数 /* objApp.OnExecute = DoExecute; objApp.OnUser = DoUser; //*/ // 设置对象属性 /* objApp.SetRunLevel(235); // 服务运行级别 [1, 2, 3, 4, 5] objApp.SetStartNo(20); // 服务启动序号 objApp.SetStopNo(80); // 服务停止序号 objApp.SetIsAuto(false); // 手动启动 //*/ // 自定义参数开关(注: 默认参数开关可以通过 /? 显示) /* objApp.ClearSwitchs(); objApp.AddSwitch(TKYSvcApp::asHelp, "/?", "显示帮助信息"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asHelp, "-help"); objApp.AddSwitch(TKYSvcApp::asConsole, "-console", "控制台方式运行");// 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asService, "-service", "服务方式运行"); // 更改默认的提示信息 objApp.AddSwitch(TKYSvcApp::asInstall, "-install"); objApp.AddSwitch(TKYSvcApp::asUninstall, "-remove"); objApp.AddSwitch(TKYSvcApp::asStart, "-start"); objApp.AddSwitch(TKYSvcApp::asStop, "-stop"); objApp.AddSwitch(15, "-u1", "my switch 1"); objApp.AddSwitch(18, "-u2", "my switch 2"); objApp.AddSwitch(20, "-u3"); //*/ // 运行 return objApp.Run(argc, argv); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值