tmux使用方法
tmux是一种终端多路复用器:它可以在一个屏幕上创建、访问和控制多个终端。
启动tmux时,它会创建一个带有单一窗口的新会话并显示在屏幕上。 屏幕底部的状态行显示当前会话的信息,并用于输入交互式命令。
本文目前主要记录了一些tmux使用的快捷键。
持续更新中🛵🛵🛵
专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等
tmux是一种终端多路复用器:它可以在一个屏幕上创建、访问和控制多个终端。
启动tmux时,它会创建一个带有单一窗口的新会话并显示在屏幕上。 屏幕底部的状态行显示当前会话的信息,并用于输入交互式命令。
本文目前主要记录了一些tmux使用的快捷键。
持续更新中🛵🛵🛵
本文记录了如何在neovim中配置自定义的swapfile路径。
Lua配置: vim.go.directory = vim.fn.expand('~/.nvim/swapfiles//') .. ',!,'
当一个进程需要从多个文件描述中读,并写入多个文件描述符中(例如TCP服务器)。
当一个进程需要对一个文件描述符同时进行读写,两者并没有前后关系。如果采用阻塞I/O,那么没有数据读就会阻塞,进而导致进程无法处理写入,写阻塞时同理。
上述问题的一个解决方法是采用多线程,每个线程中对一个描述符进行阻塞I/O,缺点是线程实现复杂,同时进程支持的线程数量有限。
本节主要记录一下学习modbus的编程实践,给出了一个读取modbus数据的示例。
数据提供源是Win上的Modbus Slave软件。
依赖库是libmodbus
。
C语言结构体不同字段之间按照系统位数进行数据对齐,32位系统4字节对齐,64位系统8字节对齐。
GCC编译器默认会进行数据对齐,但也提供了专用属性__attribute__((packed))
使结构体采用紧凑模式,不对数据进行对齐,此时sizeof
获得的大小为结构体各字段的大小。
基于Ubuntu23.04编译最新版Linux内核(6.8.9),并解决编译过程中的相关问题。
根据出现的问题,需要安装一下软件:sudo apt install flex bc libelf-dev
,并禁用系统相关证书:
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
文件锁的作用:当第一个进程正在读或修改文件的某个部分时,使用文件锁可以阻止其他进程修改文件的相同部分。
因此文件锁可用于多个进程之间进行同步,防止进程间的竞争状态。
Linux系统支持两组给文件加锁的不同API,分别是fcntl
与flock
。本节主要记录flock
的实现原理以及使用方式。
文件锁的作用:当第一个进程正在读或修改文件的某个部分时,使用文件锁可以阻止其他进程修改文件的相同部分。
因此文件锁可用于多个进程之间进行同步,防止进程间的竞争状态。
Linux系统支持两组给文件加锁的不同API,分别是fcntl
与flock
。本节主要记录fcntl
的实现原理以及使用方式。
任意多个进程在同一个给定字节上都可以有一把共享读锁,但一个给定字节上仅能有一个进程持有一把独占写锁。
系统调用分为两类,“低速”系统调用和其他。
“低速”系统调用指的是可能会使进程永远阻塞的一类系统调用。
非阻塞I/O则指的是当进行诸如open, read, write
等I/O操作时,这些操作不会永远阻塞。如果操作不能完成,则调用立即出错返回,以表示继续该操作将会阻塞。
一般非阻塞I/O需要不断轮询判断是否有数据要进行读写,这种情况是比较浪费CPU时间的。避免非阻塞I/O的两种方式:I/O多路转接或多线程采用阻塞I/O。
本文使用OpenSSL工具生成国密算法SM2的三级CA证书,组成证书链,并使用证书链签名客户端证书和服务端证书。
可以通过证书链对生成的客户端和服务端证书进行校验。
虽然OpenSSL工具可以使用SM2算法来生成并校验证书,但是在TLS握手过程中主要支持RSA和ECC算法作为公钥加密算法,不支持SM2算法,因此无法在TLS加密连接中使用SM2证书。
SSL/TLS协议主要使用RSA和ECC(椭圆曲线密码学)算法作为公钥加密算法,而SM2算法属于ECC算法的一种。RFC8898
守护进程是生存期长的一种进程,在系统引导装入时启动,在系统关闭时终止。
守护进程没有控制终端,通常在后台运行,实际上是在后台的孤儿进程组中运行。
没有控制终端的原因在于不与用户交互,避免终端信号影响。
在孤儿进程组中运行的原因在于防止其获取控制终端(通过每次打开终端设备设置参数O_NOCTTY
的方式不太靠谱)。