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

原创 RTThread物联网操作系统 2024-07-27 17:01

引言


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

我们通过终端环境中功能强大的终端多路复用工具 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中看到如下内容:

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


新建Tmux 会话与脱离


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

tmux new-s <session-name>


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

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


连接先前创建的 Tmux 会话


tmux attach -t  <num>/<name>


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

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

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

tmux switch  -t  /


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

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

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 作业控制信号正确地管理和恢复进程状态,确保任务能够持续运行而不受干扰

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

结语


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

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

欢迎大家在 RT-Thread Github 仓库或论坛上向我们反馈意见和建议。另外,如果您对参与到 RT-Thread 的平台支持(risc-v、arm、arm64 平台上的驱动、内核代码完善)、应用移植与开发、文档维护感兴趣,我们诚邀您加入 Smart 兴趣小组,参与到与 Smart 相关的开源贡献中。

最后是次回预告。我们计划在下一篇文章为大家分享 RT-Thread Smart 在多核平台上的实时性能表现。如果您感兴趣还请持续关注。

——————End——————


👇 点击阅读原文进入官网

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论
  • 百佳泰特为您整理2025年1月各大Logo的最新规格信息,本月有更新信息的logo有HDMI、Wi-Fi、Bluetooth、DisplayHDR、ClearMR、Intel EVO。HDMI®▶ 2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新规范将支持更高的分辨率和刷新率,并提供更多高质量选项。更快的96Gbps 带宽可满足数据密集型沉浸式和虚拟应用对传输的要求,如 AR/VR/MR、空间现实和光场显示,以及各种商业应用,如大型数字标牌、医疗成像和
    百佳泰测试实验室 2025-01-16 15:41 189浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 120浏览
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 313浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 154浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 187浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 117浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 205浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 146浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 85浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 61浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦