Systemd Socket Activation
此篇blog是systemd原作者Lennart Poettering关于Socket Activation技术的介绍以及如何使用systemd实现这项技术的小教程。
原文讲解的通俗易懂,读完让我对这项技术有了个叫基础的了解,是了解这项技术的一篇好文章,于是决定翻译留档。
第一次翻译技术类文章,如有任何翻译错误或意见,欢迎提出。
原文链接:systemd for Developers I (0pointer.de)
Socket Activation简介
在原来的一篇讲述关于systemd的博客中,我尝试解释了为什么socket activation(套接字激活)对于启动服务是一项十分完美的技术。现在让我们再次回顾一下。
socket activation的基础逻辑已经不是什么新概念了。从一开始,inetd就是作为Linux和Unix系统标准组件的一部分:并不是从系统已启动九八所有的本地联网应用启动好,而是inetd会代替服务去监听,并且无论何时新的链接出现了,都会将一个代表这个服务的实列启动。这样可以让那些性能较弱的机器能以较少 ...
编辑命令
Ctrl + a :移到命令行首
Ctrl + e :移到命令行尾
Ctrl + f :按字符前移(右向)
Ctrl + b :按字符后移(左向)
Alt + f :按单词前移(右向)
Alt + b :按单词后移(左向)
Ctrl + xx:在命令行首和光标之间移动
Ctrl + u :从光标处删除至命令行首
Ctrl + k :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
Alt + d :从光标处删除至字尾
Ctrl + d :删除光标处的字符
Ctrl + h :删除光标前的字符
Ctrl + y :粘贴至光标后
Alt + c :从光标处更改为首字母大写的单词
Alt + u :从光标处更改为全部大写的单词
Alt + l :从光标处更改为全部小写的单词
Ctrl + t :交换光标处和之前的字符
Alt + t :交换光标处和之前的单词
Alt + Backspace:与 Ctrl + w 类似,分隔符有些差别
重新执行命令
Ctrl + r:逆向搜索命令历史
Ctrl + g:从历史搜索模式退出
Ctrl + p:历史中的上一条命令
...
第一部分:Docker的组件构成
Docker整体架构采用C/S(客户端/服务端)模式,主要由客户端和服务端两大部分组成。客户端负责发送操作指令,服务端负责接收和处理指令。客户端和服务端通信有多种方式,即可在同一台机器上通过UNIX套接字通信,也可以通过网络连接远程通信。
从整体架构可知,Docker组件大体分为docker相关组件和containerd相关组件。
第二部分:Docker组件剖析
docker由以下部件构成
-rwxr-xr-x 1 root root 27941976 Dec 12 2019 containerd-rwxr-xr-x 1 root root 4964704 Dec 12 2019 containerd-shim-rwxr-xr-x 1 root root 15678392 Dec 12 2019 ctr-rwxr-xr-x 1 root root 50683148 Dec 12 2019 docker-rwxr-xr-x 1 root root 764144 Dec 12 2019 docker-init-rwxr-xr-x 1 ...
在安装kubesphere的过程中,由于kubesphere 3.2.x版本会提示证书错误,疑似bug,需要手动修改docker镜像以解决问题。
在我用docker重新打包修改后的镜像文件以后,却发现k8s无法读取到我新打包的镜像。原来是docker的本地仓库和k8s的本地仓库是不共享的。因此写下本篇来记录一下解决方案。
原因:
由于k8s在1.24版本中把docker-shim移除,从而k8s底层从使用docker的api转移到使用更轻量更标准化的contained。所以本质原因就是containerd和docker的本地镜像不互通。
解决方案1
使用docker命令,导出目标镜像为image.tar文件
docker save -o image.tar 目标镜像
使用ctr命令(container的客户端命令),导入上一步导出文件。不过注意一点ctr区分namespace的,k8s镜像默认都在k8s.io的namespace之下
ctr -n=k8s.io image import image.tar
解决方案2
只适用于新构建镜像已在仓库,且docker底层使用co ...
题目
2042. 检查句子中的数字是否递增
难度:简单
句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词 。
示例,"a puppy has 2 eyes 4 legs" 是一个由 7 个 token 组成的句子:"2" 和 "4" 是数字,其他像 "puppy" 这样的 tokens 属于单词。
给你一个表示句子的字符串 s ,你需要检查 s 中的 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 中的 每个 数字都严格小于它 右侧 的数字)。
如果满足题目要求,返回 true ,否则,返回 false 。
示例 1:
输入:s = “1 box has 3 blue 4 red 6 green and 12 yellow marbles” 输出:true 解释:句子中的数字是:1, 3, 4, 6, 12 。
这些数字是按从 ...
题目
1801. 积压订单中的订单总数
难度:中等
难度中等83收藏分享切换为英文接收动态反馈
给你一个二维整数数组 orders ,其中每个 orders[i] = [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。
订单类型 orderTypei 可以分为两种:
0 表示这是一批采购订单 buy
1 表示这是一批销售订单 sell
注意,orders[i] 表示一批共计 amounti 笔的独立订单,这些订单的价格和类型相同。对于所有有效的 i ,由 orders[i] 表示的所有订单提交时间均早于 orders[i+1] 表示的所有订单。
存在由未执行订单组成的 积压订单 。积压订单最初是空的。提交订单时,会发生以下情况:
如果该订单是一笔采购订单 buy ,则可以查看积压订单中价格 最低 的销售订单 sell 。如果该销售订单 sell 的价格 低于或等于 当前采购订单 buy 的价格,则匹配并执行这两笔订单,并将销售订单 sell 从积压订单中删除。否则,采购订单 bu ...
原因
这个纯纯gitlab官方文档年久失修造成不叙述详尽的问题。
这个问题大概率主要是因为官方的仓库暂时未对你当前系统版本做支持。
2022/10/7官方支持到最高版本为focal(ubuntu 20.04)。
我的系统版本是jammy(20.04)
解决方法
目前我被迫降级去用focal版本的gitlab似乎也是ok的,因此解决方式就采用降级到官方最新支持的仓库版本吧。
ubuntu解决方式:
去修改apt源:
vim /etc/apt/sources.list.d/gitlab_gitlab-ee.list
改成这个样子:
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/ focal maindeb-src [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://packag ...