0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

拥抱现代:在国产操作系统RT-Thread体验tmux终端复用的魅力

RT-Thread官方账号 2024-07-28 08:35 次阅读

引言


嵌入式平台性能飞速发展的时代,市场上如雨后春笋般涌现出各类高性能高性价比的新兴平台,为我们的开发带来了诸多便利。RT-Thread Smart 正是为更好地利用这些性能优势而生的一款解决方案。通过它,我们可以轻松复用丰富的 RT-Thread Smart 系统组件以及 POSIX ,UNIX,GNU 生态的软件栈,实现更高效的验证和功能开发。

4d5d8f82-4c79-11ef-817b-92fbcf53809c.png

我们通过终端环境中功能强大的终端多路复用工具 tmux 作为引子,在本文里展示众多丰富的组件在多窗口多终端及远程登陆应用上的实际体验,同时了解RT-Thread Smart 系统对复杂应用依赖的各类基础设施提供的完善支持。

在正文开始前,我们可以通过以下的视频对这些功能的效果一睹为快。
上图展示了通过终端工具 ssh 远程登录到 RT-Thread Smart 系统,并绑定一个原先创建,正在运行中的会话的效果。左边窗口中通过 top 工具实时观测系统占用率,右边则是运行中的 tar 打包和 bz2 压缩任务。同时,我们创建了一个新的窗口,执行了一个 ps 命令。

tmux 简介


Tmux 是一个终端复用器,允许用户在一个终端会话中管理多个终端会话。用户可以在一个窗口中分割多个面板、创建多个窗口、以及在不同会话之间切换。更重要的是,它可以在会话分离后继续运行任务,并在会话重新连接时恢复原来的状态(正如我们在开篇中的视频里展现的那样)。这使得它非常适合需要同时处理多个任务和长时间运行任务的用户。

配置远程终端服务


rt-smart 已经支持基于 Dropbear 的SSH 服务器,从而可以使用主机电脑用SSH远程登录来使用板端Smart操作系统

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-smart/introduction/rt-smart-experiences/rt-smart-experiences?id=%e6%8a%a2%e5%85%88%e9%a2%84%e8%a7%88

smart上手体验 (rt-thread.org)

从以上链接可以获取 smart-prebuild预构建镜像。使用 prebuilt 版本启动系统后,可以在 /etc/inittab中看到如下内容:

4d681d8a-4c79-11ef-817b-92fbcf53809c.png其中含有dropbear的启动命令/bin/dropbear -F 2>/root/dropbear.log,故系统启动时自动启动dropbear ssh服务器。qemu启动脚本则将qemu的22号端口映射到主机58080端口。


新建Tmux 会话与脱离


第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。当然,使用编号区分会话不太直观。因此我们也可以为会话起名,便于记忆。

tmux new-s


使用上面的命令就可以创建一个指定名称的会话。下图展示了这个命令的使用。在创建会话后,我们可以如同普通 shell 那样在tmux 中执行命令。

此外,在执行脚本的过程中,按下Ctrl+b d或者输入tmux detach -t /命令,就会将当前会话与窗口分离。但是会话和里面的进程仍然在后台运行。使用结果如同上图最后操作的那样,我们会看到 tmux 打印 “detached (from session test)”。同时,终端回到 shell 程序控制。


连接先前创建的 Tmux 会话


tmux attach -t /


我们使用上面的命令接入先前创建的会话。这时终端回到原有的会话现场。这给我们检查之前创建的管道状态提供了巨大便利。

下图展示了会话创建后脱离并重新连接的过程:


我们先使用tmux new-s hello 命令创建了一个名为hello的会话,接着使用Ctrl+b d 组合键将当前会话与窗口分离,接着又使用tmux attach -t hello接入hello会话现场。这时我们可以看到脚本仍在正常执行。

4d6ba694-4c79-11ef-817b-92fbcf53809c.png

tmux switch -t /


此外,当我们创建了多个会话时,可以通过tmux switch 来切换不同的会话。这里以hello 为例子。


上图中可以看到成功切换到hello,里面的进程仍在运行

4d7a7c6e-4c79-11ef-817b-92fbcf53809c.png

tmux rename-session -t /

此外,我们还可以通过命令重命名已经创建的会话。


对于不想要的会话也可以通过tmux kill-session -t /来结束掉。当会话结束后,我们使用 tmux ls 命令就看不到 test2 会话了,并且也不能用attach再进行连接。


Tmux 窗格管理


Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。

●使用tmux split-window可以划分上下两个窗格,tmux split-window -h可以划分为左右两个窗格。

●窗格划分后,可以通过tmux select-pane -U/D/L/R 命令移动光标位置,或者使用快捷键 ctrl+b 。

下面是窗格管理的快捷键使用大全:

Ctrl+b %:划分左右两个窗格。


Ctrl+b ":划分上下两个窗格。
Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格与上一个窗格交换位置。
Ctrl+b }:当前窗格与下一个窗格交换位置。
Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
Ctrl+b x:关闭当前窗格。
Ctrl+b !:将当前窗格拆分为一个独立窗口。
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
Ctrl+b Ctrl+:按箭头方向调整窗格大小。
Ctrl+b q:显示窗格编号。`在这里插入代码片`


下面展示使用快捷键分割窗口和切换光标位置的过程:


Tmux 窗口管理


除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。我们可以使用 tmuxnew-window命令创建新窗口,通过tmux select-window -t 命令用来切换窗口,通过tmux rename-window命令用于为当前窗口起名(或重命名)。

这些命令同样有快捷键替代:

Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息


Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。


Ctrl+b n:切换到下一个窗口。


Ctrl+b :切换到指定编号的窗口,其中的是状态栏上的窗口编号。


Ctrl+b w:从列表中选择窗口。


Ctrl+b ,:窗口重命名。

使用快捷键进行窗口的创建,切换,重命名过程如下:


同样如果想要关闭某个窗格可以使用Ctrl+b x组合命令,这里不再演示

tmux 中使用 scp 实现安全文件传输


RTT内核用作ssh服务器,我们就可以通过scp来向其传输文件。以通过终端工具传输 mksd 脚本为例。我们首先配置好 RT-Smart 服务器的地址和用户名,密码。然后可以直接拖动客户端操作系统上的文件到左侧文件系统视窗中。此时会自动建立 scp 进程完成文件拷贝。


在 Tmux 背后是……


Tmux 的这些强大功能依赖于操作系统的几个核心机制。首先是会话和进程组,Tmux 利用这些机制来管理和组织不同的终端会话和进程。每个 Tmux 会话可以包含多个窗口,而每个窗口又可以包含多个进程,这些进程被组织成进程组,以便统一管理。

其次,终端和伪终端是 tmux 实现多窗口和分割面板的基础。伪终端提供了一个虚拟终端设备,使得用户可以创建和管理多个虚拟终端,这些终端可以独立运行并显示各自的输出。

此外,Tmux 是一个基于前后端架构的应用。前端负责用户输入和显示输出,而后端负责实际的任务管理和执行。前后端通信及异步事件处理也依赖于 libevent 库。libevent 是一个轻量级的事件驱动编程库,它基于 Unix 域套接字(UDS)、netlink 等基础设施,为进程间双工通信、多播和内核异步事件通知提供了高效的实现。这使得 tmux 能够在需要处理大量并发事件时,依然保持高效、稳定的运行。

信号处理也是 tmux 功能的关键部分。Tmux 可以在会话分离和重新连接时通过内核提供的 SIGCONT、SIGSTOP 等POSIX 作业控制信号正确地管理和恢复进程状态,确保任务能够持续运行而不受干扰

4d7e6162-4c79-11ef-817b-92fbcf53809c.png

上图总结了 Tmux 在 RT-Thread Smart 的运行环境中的各类软硬件组件。它们保证了 RT-Thread Smart在多个方面为程序应用提供了便利和灵活。无论是进程间通信、与内核进行信息交换、还是通过netlink 处理异步事件,抑或是通过伪终端与终端仿真器进行交互,用户程序都能够更加轻松地操作系统,提高工作效率。RT-Smart 系统提供的丰富系统组件为嵌入式开发带来了更多可能性,让我们在这个快速发展的技术世界中走得更快、更远。

结语


本文我们介绍了 RT-Thread Smart 系统在支持复杂应用方面的强大能力。从多窗口终端管理的 tmux 到远程登录的 SSH,RT-Thread Smart 展现了其在嵌入式开发中的灵活性和高效性。

希望通过本文,能够让更多的开发者了解并使用 RT-Thread Smart,在这个充满活力的平台上实现更多精彩的应用。让我们一起期待,在未来的嵌入式开发旅程中,RT-Thread Smart 将继续为我们带来更多惊喜和便利。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6539

    浏览量

    122697
  • 终端
    +关注

    关注

    1

    文章

    1076

    浏览量

    29709
  • RT-Thread
    +关注

    关注

    31

    文章

    1235

    浏览量

    39375
收藏 人收藏

    评论

    相关推荐

    RT-Thread Studio操作系统

    stm32f407+rtthread 使用 ec20 ppp拨号开发环境一、工程创建二、模块添加三、参数配置四、测试开发环境IDE:RT-Thread Studio操作系统
    发表于 08-24 07:44

    国产操作系统再“超越”,RT-Thread推动AIoT产业变革

    让它运行多个操作系统,包括RT-Thread Smart、RT-Thread的RTOS,以及Linux或者安卓等等。熊谱翔解释开发该组件的原因,是因为一些场合,对多算力、多核芯片也需
    发表于 01-04 08:00

    基于RT-Thread操作系统衍生rt-smart实时操作系统简介

    ,例如 ARM Cortex-A 系列芯片,MIPS 芯片,带 MMU 的 RISC-V 芯片等。rt-smart RT-Thread 操作系统的基础上启用独立、完整的进程方式,同
    发表于 06-22 17:56

    RT-Thread编程指南

    RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
    发表于 11-26 16:06 0次下载

    RT-Thread用户手册

    RT-Thread用户手册——本书是RT-Thread的编程手册,用于指导RT-Thread实时操作系统环境下如何进行编 程。
    发表于 11-26 16:16 0次下载

    RT-Thread Smart微内核操作系统发布!

    9月1日,由上海睿赛德电子科技有限公司举办的RT-Thread Smart微内核操作系统发布会于北京圆满落幕,发布会以见微为主题,邀请到中国工程院院士、产业专家、高校教授及行业从业人员100余位莅临
    的头像 发表于 09-09 10:49 2580次阅读

    国民技术携手RT-Thread共同推进MCU与RT-Thread操作系统广泛适配

    日前,国民技术股份有限公司与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,正式成为RT-Thread高级会员。国民技术将基于通用MCU和RT-Thread物联
    的头像 发表于 12-16 09:56 2247次阅读

    Github RTOS榜单star榜第一:国产开源RT-Thread物联网操作系统简介

    RT-Thread 简介作为一名 RTOS 的初学者,也许你对 RT-Thread 还比较陌生。然而,随着你的深入接触,你会逐渐发现 RT-Thread魅力和它...
    发表于 02-07 11:51 0次下载
    Github RTOS榜单star榜第一:<b class='flag-5'>国产</b>开源<b class='flag-5'>RT-Thread</b>物联网<b class='flag-5'>操作系统</b>简介

    RT-Thread实时操作系统安装向导

    RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩
    发表于 04-02 09:43 7次下载

    RT-Thread学习笔记 RT-Thread的架构概述

    的种种优越之处。RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过 16 个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富的物
    的头像 发表于 07-09 11:27 4310次阅读
    <b class='flag-5'>RT-Thread</b>学习笔记 <b class='flag-5'>RT-Thread</b>的架构概述

    RT-Thread操作系统已经成功部署至芯驰E3

    近日,国内领先的车规芯片企业芯驰科技与国内领先的车载RTOS(实时操作系统)企业睿赛德科技(RT-Thread)共同宣布:RT-Thread操作系统全面支持芯驰科技E3系列 MCU芯片
    的头像 发表于 09-09 09:15 1130次阅读

    RT-Thread操作系统的FreeRTOS兼容层

    的兼容项目中。 1 概述 这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统
    的头像 发表于 01-14 00:55 1442次阅读

    【师资培训】基于RT-Thread操作系统使用LVGL实战教学

    20230731师资培训 RT-Thread R T-Thread 作为 国产开源嵌入式 物联网操作系统 , 具有 中立第三方 / 构架先进 / 功能强大 / 社区繁荣等特点,能够加速
    的头像 发表于 07-24 19:35 1115次阅读
    【师资培训】基于<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系统</b>使用LVGL实战教学

    RT-Thread荣获“最具影响力IoT操作系统奖”

    2024年3月30日,第十一届开源操作系统年度技术会议(OS2ATC)西郊宾馆举办!RT-Thread作为国内领先的开源操作系统斩获了“最具影响力IoT
    的头像 发表于 04-12 08:37 330次阅读
    <b class='flag-5'>RT-Thread</b>荣获“最具影响力IoT<b class='flag-5'>操作系统</b>奖”

    新书发布——《实时操作系统应用技术:RT-Thread与ARM编程实践》

    RT-Thread又一本新书《实时操作系统应用技术——基于RT-Thread与ARM的编程实践》发布,标志着RT-Thread生态和实时操作系统
    的头像 发表于 05-11 08:35 506次阅读
    新书发布——《实时<b class='flag-5'>操作系统</b>应用技术:<b class='flag-5'>RT-Thread</b>与ARM编程实践》