macos container

macos container Apple 官方的容器化工具,专为 Apple Silicon Mac 设计,使用轻量级虚拟机运行 Linux 容器。 系统要求 Apple Silicon Mac (M 系列芯片) macOS 26 或更高版本 Xcode (从 App Store 安装) 安装 # 使用 Homebrew Cask 安装 brew install --cask container # 启动 container 系统服务 container system start # 检查系统状态 container system status # 运行测试容器 container run --rm -it docker.io/library/hello-world:latest # 列出容器 (注意: 使用 ls 而不是 ps) container ls # 查看所有可用命令 container --help 从源码编译 git clone https://github.com/apple/container.git cd container swift build sudo cp .build/debug/container /usr/local/bin/container

2025-11-02 · 1 min · 78 words · -

tcp_syn_retries

tcp_syn_retries http://www.chengweiyang.cn/2017/02/18/linux-connect-timeout/ tcp_syn_retries tcp_synack_retries # ubuntu 24.04 ➜ ~ sysctl net.ipv4.tcp_syn_retries net.ipv4.tcp_syn_retries = 6 ➜ ~ sysctl net.ipv4.tcp_synack_retries net.ipv4.tcp_synack_retries = 5 ➜ ~ # 对于主动连接(客户端主动发起连接),每次SYN重试的间隔会逐步递增(不是固定值),由内核写死,不能通过 sysctl 直接调整。 t0 第一次请求 超时时间 1s t1 第一次重试 超时时间 2s t2 第二次重试 超时时间 4s t3 第三次重试 超时时间 8s t4 第四次重试 超时时间 16s t5 第五次重试 超时时间 32s t6 第六次重试 超时时间 64s 总计 1+2+4+8+16+32+64 = 127s http://www.cnitblog.com/Scripts/archive/2009/05/20/57350.html tcp_syn_retries等参数详解(转帖) tcp_syn_retries : INTEGER 默认值是5 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1 决定的) tcp_synack_retries : INTEGER ...

2025-09-29 · 2 min · 266 words · -

wireguard

wireguard wireguard default port: 51820 install archlinux archlinux 新版本的内核已经集成了 wireguard,不需要单独安装. archlinux 集成了 wireguard 但是默认没加载, 需要配置一下启动的时候加载 wireguard 内核模块. # 查看 wireguard 内核模块是不是已经加载了 lsmod | grep wireguard # 手动加载内核模块 sudo modprobe wireguard # 再看一下应该已经加载了 lsmod | grep wireguard # load kernel module at boot vim /etc/modules-load.d/wireguard.conf # content of wireguard.conf # load wireguard module at boot wireguard # 安装 wireguard 管理工具, wireguard 集成进内核了, 但是管理工具 (wg) 还是要手动安装的 pacman -Sy wireguard-tools Ubuntu, Debian sudo apt install wireguard macos brew install wireguard-tools 在 App Store 安装 wireguard ...

2025-08-31 · 6 min · 1074 words · -

linux 目录

linux 目录, Filesystem Hierarchy Standard (FHS) / 根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin 应该和根目录放置在一个分区中 /bin In Arch Linux the /bin is a symlink to /usr/bin /mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有 cdrom 等目录。可以参看 /etc/fstab 的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom 。 /opt /opt 目录的主要用途是 存放第三方应用软件包(optional software packages),也就是那些不是由系统默认的包管理器(如 apt, yum, pacman 等)安装的程序。 /opt 的设计目的: “Optional” 的缩写:/opt = optional,表示这些软件是“可选”的,不属于系统核心组件。 保持系统整洁:与系统自带的程序(一般安装在 /usr/bin, /usr/lib 等)分开,避免混淆。 便于管理与卸载:每个软件通常会在 /opt 下有一个独立的子目录,比如 /opt/google, /opt/kong,便于手动安装与清理。 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在 Fedora Core 5.0 中,OpenOffice 就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中; 通过源码包安装的软件,可以通过 ./configure -prefix=/opt/目录 。 /opt 目录用来安装附加软件包,是用户级的程序目录,可以理解为 D:/Software。安装到 /opt 目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。opt 有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接 rm -rf 掉即可。在硬盘容量不够时,也可将 /opt 单独挂载到其他磁盘上使用。 ...

2025-07-31 · 3 min · 433 words · -

python set

python set 线上的某一个业务模块常规的执行时间大概是这样的 📊 总体统计: 完成的 xxx 总数: 379 最短耗时: 0.190 秒 最长耗时: 2815.415 秒 平均耗时: 67.626 秒 中位数耗时: 9.585 秒 标准差: 258.304 秒 ⏱️ 耗时分布: < 1秒: 33 次 ( 8.7%) 1-5秒: 101 次 ( 26.6%) 5-10秒: 64 次 ( 16.9%) 10-30秒: 99 次 ( 26.1%) 30-60秒: 9 次 ( 2.4%) 1-5分钟: 62 次 ( 16.4%) 5-10分钟: 2 次 ( 0.5%) 10-30分钟: 6 次 ( 1.6%) > 30分钟: 3 次 ( 0.8%) ...

2025-07-31 · 2 min · 287 words · -

python signal pause

python signal.pause() vs time.sleep() signal.pause() 系统调用实现, 直接向内核发起系统调用, 让当前线程进入休眠状态, 直到接收到信号为止. 内核将进程状态从 RUNNING → INTERRUPTIBLE_SLEEP 进程从CPU运行队列(CPU Run Queue)中移除 time.sleep() 是一个非阻塞函数, 它会在指定的时间内暂停当前线程的执行. 用户空间循环实现, 用户空间循环:完全在用户模式下运行 进程状态:持续保持 RUNNING 状态 CPU调度:获得常规CPU时间片 系统调用:重复调用 nanosleep() 或 select() CPU运行队列 (Run Queue) CPU运行队列是一个数据结构(通常是链表或红黑树),包含所有准备执行但正在等待CPU时间的进程/线程。 CPU运行队列是包含所有准备执行的进程/线程的数据结构,这些进程已经准备好使用CPU,只是在等待CPU时间片。 状态:进程处于 READY 状态 CPU占用:这些进程会消耗CPU时间 调度:调度器从这里选择下一个执行的进程 负载计算:运行队列长度影响系统负载平均值 等待队列 (Wait Queue) 等待队列包含不能立即执行的进程,它们在等待某些事件发生(如I/O完成、信号到达、锁释放等)。 状态:进程处于 WAITING/BLOCKED 状态 CPU占用:不消耗CPU时间, 0%(进程不被调度) 上下文切换:最少(仅当信号到达时) 事件驱动:等待特定事件唤醒 负载计算:不计入系统负载 INTERRUPTIBLE_SLEEP INTERRUPTIBLE_SLEEP 是一种进程状态。在 Linux 操作系统中,进程会经历多种状态,而可中断睡眠(Interruptible Sleep,通常用 ‘S’ 表示)就是其中之一。 进程不会占用 CPU 资源,而是自愿放弃 CPU,以便系统可以更有效地管理资源。 与 INTERRUPTIBLE_SLEEP 相对的是不可中断睡眠(Uninterruptible Sleep,通常用 ‘D’ 表示),处于此状态的进程通常正在执行关键的 I/O 操作,并且不能被信号中断,直到操作完成。 ...

2025-07-30 · 1 min · 82 words · -

MCP

MCP https://code.visualstudio.com/docs/copilot/chat/mcp-servers https://modelcontextprotocol.io/introduction https://code.visualstudio.com/mcp vscode> extension>search @mcp install memory mcp

2025-07-14 · 1 min · 10 words · -

stat command

stat command stat 命令,查看某个文件的 inode 信息, 除了文件名以外的所有文件信息,都存在inode之中。 stat, linux 查看文件创建时间, 修改时间 stat file_0.txt atime, mtime, ctime 简名 全名 中文名 含义 atime access time 访问时间 文件中的数据库最后被访问的时间 mtime modify time 修改时间 文件内容被修改的最后时间 ctime change time 变化时间 文件的元数据发生变化。比如权限,所有者等 另外一种格式 Access: 2021-07-05 19:47:15.5638661078 +0800 Modify: 2021-07-04 19:29:15.563861472 +0800 Change: 2021-07-04 19:29:15.563861468 +0800 Birth: 2021-07-04 19:29:15.563861472 +0800 Access: 最近一次读取文件内容的时间, 不一定意味着文件被修改,仅表示被读取过,例如用 cat file_0.txt。 Modify: 最近一次修改文件内容的时间, 如使用 echo something » file_0.txt 会更新这个时间。 Change: 最近一次修改文件inode 元数据(如权限、所有者)最后一次被更改的时间, 如使用 chmod 755 file_0.txt 会更新这个时间。只修改文件内容可能也会更新, 比如更新 inode(block分配等)。 Birth: 文件创建时间, 不是所有文件系统都支持这个字段。系统返回了它,说明使用的文件系统支持(如 btrfs, ext4(带特定挂载选项)或 xfs 带 crtime 补丁等)。 本示例的创建时间可能不是真的, 有可能底层文件系统不支持. # 输出创建时间(epoch 格式,-1 表示不支持) # -c:自定义输出格式(即只显示我们想看的字段)。 # '%W':表示输出文件的 创建时间(Birth time) # 如果 文件系统不支持创建时间,则输出:-1 stat -c '%W' file_0.txt 在windows下,一个文件有: 创建时间、修改时间、访问时间。 ...

2025-07-09 · 2 min · 323 words · -

wsl native docker windows vscode hack

wsl native docker windows vscode hack wsl archlinux install containerd nerdctl nerdctl 和 containerd 使用 Unix socket一般在 /run/containerd/containerd.sock 在 WSL 里启动 socat 监听 containerd.socket,转发到 Windows 命名管道 sudo mkdir -p /mnt/wsl/shared-containerd sudo ln -sf /run/containerd/containerd.sock /mnt/wsl/shared-containerd/containerd.sock socat UNIX-LISTEN:/mnt/wsl/shared-containerd/containerd.sock,fork EXEC:"/mnt/c/workspace/apps/npiperelay.exe -ei -ep -s //./pipe/containerd_engine"

2025-06-26 · 1 min · 42 words · -

ca-certificates 导入CA证书

ca-certificates 导入 CA 证书, 安装 CA 证书 macos 导入自签名证书 在 Spotlight 里搜索 “钥匙串访问” 或者 Keychain Access, 在左侧栏里选择 System, 点击菜单栏 File> import items, 导入 自签名的 ca 证书 然后在 系统证书里面找名字是 *.wiloon.com 的证书, 双击打开, 展开 trust, when using this certificate: always trust archlinux ca-certificates update, 导入证书/安装证书 https://www.archlinux.org/news/ca-certificates-update/ # .pem rename to .crt # xxx.crt should export from sub ca sudo cp certs/ca-cert.pem /etc/ca-certificates/trust-source/anchors/wangyue-ca.crt sudo trust extract-compat # 验证是否安装成功 trust list|grep wiloon.com -A 5 -B 5 # 如果连接成功,它会输出服务器的证书链(包括自签名证书)、握手细节、证书的主题、颁发者等信息。 # s_client 工具在不指定验证选项时,只会“显示”证书信息,而不强制验证链条。 openssl s_client -connect hello.wiloon.com:443 openssl s_client -connect calibre.wiloon.com:443 -CApath /etc/ssl/certs -verify_return_error archlinux + chrome 但 Chrome(包括 Chromium)在 Linux 上使用独立的 NSS(Network Security Services)证书数据库,默认不直接读取系统 CA。它有自己的信任存储,通常位于 ~/.pki/nssdb/ ...

2025-06-24 · 3 min · 534 words · -

Openssl 生成自签名证书, self-signed cert

自签名证书, self-signed cert sudo pacman -S openssl # 查看默认的 OpenSSL 配置目录 openssl version -d # Create two directories for all certs and root private key that you will generate su - wiloon mkdir -p /home/wiloon/apps/self-signed-cert mkdir certs private # list all available curves openssl ecparam -list_curves # 使用 ECDSA 私钥 # 生成 ECDSA (椭圆曲线数字签名算法)密钥对, CA 密钥, root private key # 参数: -noout - 抑制输出椭圆曲线参数, 如果不加这个参数,命令会同时输出曲线参数和私钥,加上后只输出私钥部分 # -genkey:生成密钥对 # prime256v1 secp256r1 / NIST P-256 256 默认、安全性好、广泛兼容(TLS 默认) # ecparam 子命令, 专门处理椭圆曲线参数(EC Parameters) # -name prime256v1 指定曲线名称 openssl ecparam -name prime256v1 -genkey -out private/ca-key.pem # 使用 rsa 密钥 # genrsa 子命令默认就是生成 RSA 私钥, genrsa子命令没有-genkey参数 openssl genrsa -out private/ca-key.pem 4096 # read ca key openssl ec -in private/ca-key.pem -text -noout 准备一个生成 CA 证书的 配置文件 ca-cert.cnf, the value in the basicConstrains is CA:true ...

2025-06-24 · 4 min · 797 words · -

ldd 查看程序依赖 动态链接库

ldd 查看程序依赖 动态链接库 ldd(List Dynamic Dependencies) 命令可以用于分析可执行文件所依赖的共享库(动态链接库) # 检测 动态链接 # 查看 libcups 是否真的链接到了 avahi ldd /usr/lib/libcups.so | grep avahi ldd /proc/737543/exe # 输出 libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0x00007f4d777c4000) libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0x00007f4d777b2000) 我们使用 file 命令来分析一个可执行文件的时候,有时候可以看到输出中有 dynamically linked 这样的字眼。这个是啥意思呢? 大部分程序,都会使用到第三方库,这样就可以不用重复造轮子,节约大量时间。最简单的,我们写C程序代码的话,肯定会使用到 libc 或者 glibc 库。当然,除此之外,还可能使用其它的库。 那我们在什么情况下需要分析程序的依赖库呢?有一个场景大家肯定经历过。你去你同事那边拷备他写好的程序放到自己的环境下运行,有时候可能会跑不起来。当然跑不起来的原因可能很多,但其中一个原因可能就是缺少对应的依赖库。 这时候,ldd 就派上用场了。它可以分析程序需要一些什么依赖库,你只要把对应的库放在对应的位置就可以了。 ldd /bin/pwd linux-vdso.so.1 => (0x00007ffeb73e5000) libc.so.6 => /lib64/libc.so.6 (0x00007f908b321000) /lib64/ld-linux-x86-64.so.2 (0x00007f908b6ef000) 作用: 用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。 示例: 查看test程序运行所依赖的库: /opt/app/todeav1/test$ldd test libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000) libm.so.6 => /lib64/libm.so.6 (0x0000003996400000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000) ...

2025-06-16 · 1 min · 98 words · -

AI

AI AI IDE Microsoft Copilot Cursor Windsurf augment code AI 编程 之前有一种想法,有些小的修改, 比如只有几行代码的修改不需要用 AI, 因为构思提示词的时间往往比直接写代码的时间要长,但是最近这种想法有了一丝松动,AI 写代码出的问题更少一些, 手工改代码很有可能一不小心拷错了,或者敲错字符,AI写码不会有这些小问题,另外 AI 去改的时候会发现一些本来我认为不需要修改的逻辑分支,如果手动修改的话,这些分支只能是等到测试阶段才被发现。

2025-06-03 · 1 min · 19 words · -

加密分区缩容, LVM on LUKS

加密分区缩容, LVM on LUKS https://linux-blog.anracom.com/2018/11/09/shrinking-an-encrypted-partition-with-lvm-on-luks/ https://wiki.archlinux.org/title/Resizing_LVM-on-LUKS https://wiki.archlinux.org/title/LVM#Resizing_the_logical_volume_and_file_system_in_one_go https://starbeamrainbowlabs.com/blog/article.php?article=posts%2F441-resize-luks-lvm.html Step 1: Get an overview over your block devices lsblk 加密分区在 /dev/nvme0n1p3 上 Step 2: Open the encrypted partition cryptsetup open /dev/nvme0n1p3 cr-ext # 打开过程中会要求输入密码 # 检查一下设备映射 ls -la /dev/mapper 能看到 PV: /dev/mapper/cr-ext 还有 LVM-volumes: /dev/mapper/ubuntu–vg-ubuntu–lv Step 3: Get an overview on LVM structure pvdisplay vgdisplay lvdisplay # 查看 lv 是否激活 lvs -o lv_name,lv_attr 输出 # 第五位 a 表示 LV 是 active(已激活) LV Attr ubuntu-lv -wi-ao---- 一般情况打开 luks 加密的设备之后 lvm 的 vg, lv 会自动 激活 如果没有激活的话, 手动激活 vg ...

2025-05-20 · 2 min · 376 words · -

dual boot windows and ubuntu

dual boot windows and ubuntu https://askubuntu.com/questions/1506694/dual-boot-with-windows-11-and-bitlocker/1514161#1514161 Ubuntu 版本: 22.04 用 clonezill 备份硬盘 在硬盘上准备一块空闲的空间, 用 windows 的磁盘管理工具调整现有的分区 用 balenaEtcher 制作 ubuntu 安装盘 (U盘) 在 BIOS 里确认 Secure Boot 已经开启 用分区工具在 U 盘或移动硬盘上准备一个大于 100MB 的 FAT32 分区 从 U 盘引导, 安装 ubuntu, 选择 Try or install Ubuntu Select Language: English Install> Install Ubuntu Keyboard: English(US)> English(US) Wireless What apps would you like to install to start with: Minimal installation 勾选 Install third-party software for graphics and wi-fi hardware and additional media formats 勾选 Configure Secure Boot, 设置 Secure boot 密码 备份 windows 的 EFI 分区 到 U 盘 (/dev/sda2) open a terminal with ctrl+alt+t ...

2024-05-19 · 6 min · 1242 words · -

plantuml, puml

plantuml, puml UML 序列图, Sequence Diagram 用例图, Use Case Diagram 类图, Class Diagram 对象图, Object Diagram 活动图, Activity Diagram 组件图, Component Diagram 部署图, Deployment Diagram 状态图, State Diagram 时序图, Timing Diagram 非 UML 图 架构图, Archimate diagram UML 图 时序图, Sequence Diagram @startuml Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: Another authentication Response Alice ->> Bob: async msg @enduml 类图, Class Diagram @startuml skinparam classFontColor red class Foo note left: parent class Bar Bar : String field0 Bar : String method0() Foo<|--Bar note left: child abstract class Abstract0 Foo--|>Abstract0 interface Interface0 ' 注意, 接口名和冒号之间必须用空格分隔 Interface0 : void method0() class Class0{ - private_field_0 } @enduml @startuml skinparam class { BackgroundColor Lightblue ArrowColor #0ACF97 BorderColor #d5d5d5 } skinparam stereotypeCBackgroundColor YellowGreen Class101 <|.. Class102 @enduml 活动图, Activity Diagram @startuml !theme plain start if (foo?) then (yes) :process0; else (no) :process1; endif stop @enduml 组件图, Component Diagram 别名后面可以标注颜色 修改线和箭头的颜色 文字颜色 语法 # 把组件显示成普通矩形 skinparam componentStyle rectangle # 组件间横向距离 skinparam nodesep 10 # 组件间纵向距离 skinparam ranksep 10 @startuml skinparam componentStyle rectangle skinparam nodesep 10 skinparam ranksep 10 skinparam ParticipantFontColor #A9DCDF ' comments line starts by single quote, 注释 [First component] [Another component] as Comp2 component Comp3 component [Last\ncomponent] as Comp4 [component0] as c0 #ff0000 [<color:#ff0000>component1</color>] as c1 [component2] as c2 [component3] as c3 [component4] as c4 c0 -- c1 c0-[#00ff00]-c2 c1--c3 c0--c3 c2--c4 note left of c0 note0 end note @enduml 部署图, Deployment Diagram @startuml circle 1 circle 2 circle 3 agent 4 1 -- 2 1 -- 3 1 -- 4 queue 5 4 -right- 5 5 -right-2 @enduml 状态图, State Diagram @startuml [*] --> State1 State1 --> [*] State1 : this is a string State1 : this is another string State1 -> State2 State2 --> [*] @enduml 安装 graphviz sudo apt-get install -y graphviz https://graphviz.org/download/ ...

2024-03-19 · 3 min · 620 words · -

BNF 巴科斯范式

BNF 巴科斯范式 BNF & Augmented BNF 巴科斯范式 巴科斯范式(BNF: Backus-Naur Form 的缩写) 是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法 (最早用于描述ALGOL 60 编程语言) 。 确切地说,早在UNESCO (联合国教科文组织) 关于ALGOL 58的会议上提出的一篇报告中,Backus就引入了大部分BNF符号。 虽然没有什么人读过这篇报告,但是在Peter Naur读这篇报告时,他发现Backus对ALGOL 58的解释方式和他的解释方式有一些不同之处,这使他感到很惊奇。 首次设计ALGOL的所有参与者都开始发现了他的解释方式的一些弱点,所以他决定对于以后版本的ALGOL应该以一种类似的形式进行描述,以让所有参与者明白他们在对什么达成一致意见。 他做了少量修改,使其几乎可以通用,在设计ALGOL 60的会议上他为ALGOL 60草拟了自己的BNF。 看你如何看待是谁发明了BNF了,或者认为是Backus在1959年发明的,或者认为是Naur在1960年中发明。 (关于那个时期编程语言历史的更多细节,参见1978年8月,《Communications of the ACM (美国计算机学会通讯) 》, 第21卷,第8期中介绍Backus获图灵奖的文章。这个注释是由来自Los Alamos Natl.实验室的William B. Clodius建议的) 。 现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。 巴科斯范式的内容 在双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。 在双引号外的字 (有可能有下划线) 代表着语法部分。 尖括号 <> 内包含的为必选项。 方括号 [] 内包含的为可选项。 大括号 {} 内包含的为可重复 0 至无数次的项。 竖线 | 表示在其左右两边任选一项,相当于"OR"的意思。 ::= 是"被定义为"的意思。 巴科斯范式示例 这是用BNF来定义的Java语言中的For语句的实例: FOR_STATEMENT ::= ...

2024-03-11 · 2 min · 240 words · -

pacman command

pacman command 参数, options -Sy # 仅同步源 -Syy # 两个 y 代表强制更新 database 文件, 即使文件看起来是最新的, 回退到旧版本的时候会用到 -Syyuu # 降级软件包的时候用 -Q # 查询 本地 pacman 数据库, 比如查询某一个已经安装的包的版本 pacman -Q openssl -Qd, -d, --deps # list packages installed as dependencies [filter] -Qt, -t, --unrequired # list packages not (optionally) required by any package (-tt to ignore optdepends) [filter] -Qh, -Q -h, print help -Ql <boost-libs> #D isplay file list provided by local package -Qk # Check the local package database -Qo /path/to/file # Check if the file is owned by any package, 查看某个文件属于哪个包 -Qq, -q, --quiet show less information for query and search, 省略版本号 -Qs 关键字: 搜索已安装的软件包。 -Qi 软件名: 查看某个软件包信息,显示软件简介,构架, 依赖,大小等详细信息。 -Qu: 列出所有可升级的软件包 -Qdtq 显示了不必要的依赖关系列表 -Qqe 列出所有显式安装(-e,explicitly显式安装;-n忽略外部包AUR) -Qqd 列出自动安装的包(-d,depends 作为依赖项) -Qqdt 列出孤立的包(-t 不再被依赖的 "作为依赖项安装的包") -F 查询远程仓库里的软件包 -Fl 比如在安装软件包之前查询一下远程仓库, 看看会有哪些文件安装到本地 --needed 已经是最新版本的包,不会再重新安装 -R 删除软件包 -b 指定 database 路径, 默认 /var/lib/pacman -r 指定安装软件包的 root 路径, 默认 / -Rdd 要删除软件包,但是不删除依赖这个软件包的其他程序, pacman -Rdd package_name -Qqo '/path/to/dir' 查看文件关联的包 -Rsn -Rs, -s, --recursive remove unnecessary dependencies, 同时删除本机上只有该软件依赖的软件。有其他包可选依赖这个包的话 pacman 会警告你,有其他包依赖这个包的话 pacman 会阻止你 -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖。 -Sg 软件包组: 查看某软件包组所包含的所有软件包。 -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。 -Scc:清理所有的缓存文件。 commands # 查看安装了多少个包 pacman -Qq|wc -l 查看软件包依赖, pactree # pactree 由 pacman-contrib 包提供 pacman -S pacman-contrib # 查看 package_0 依赖了哪些软件包 pactree package_0 # 查看 package_0 被哪些软件包依赖了 # 查看哪些包依赖 package_0 pactree -r package_0 把 openssl 包安装到指定的目录 pacman -Sy openssl -b /var/lib/pacman -r 2022-11-04 在仓库里搜索有关 foo 的包 pacman -Ss foo # pacman 的 help pacman -h # -Q 的 help pacman -Q -h pacman -Q # 列出已经安装的软件包 pacman -Q boost-libs # Display version pacman -Ql boost-libs # Display file list provided by local package # 查看文件/命令属于哪个包, Check if the file is owned by any package, 查看命令由哪个包提供. pacman -Qo /etc/profile # 检查包对应的文件有没有缺失, #Check the local package database pacman -Qk filesystem # 打印详细信息,比如 文件 是否有修改 修改时间, 大小 , md5 pacman -Qkk filesystem # 安装下载的 gvim 包,或新编译的 gvim 包 pacman -U /var/cache/pacman/pkg/gvim-8.2.4106-1-x86_64.pkg.tar.zst downgrade 降级软件包 去 archive 时手动下载 https://archive.archlinux.org/packages/, 然后 pacman -U 安装 ...

2024-02-06 · 5 min · 1021 words · -

磁盘性能测试

磁盘性能测试 https://blog.csdn.net/zqtsx/article/details/25487185 linux 下测试磁盘的读写 IO 速度 (IO物理测速) hdparm 这是一个是用来获取 ATA/IDE 硬盘的参数的命令, 是由早期 Linux IDE 驱动的开发和维护人员 Mark Lord 开发编写的 (hdparm has been written by Mark Lord, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk). 该命令应该也是仅用于 Linux 系统, 对于 UNIX 系统, ATA/IDE 硬盘用的可能比较少, 一般大型的系统都是使用磁盘阵列的. hdparm -Tt /dev/sda options -t 评估硬盘的读取效率。 -T 评估硬盘快取的读取效率。 /dev/sda: Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec ...

2023-05-18 · 2 min · 249 words · -

scp

scp scp 可以在两个 linux 主机间复制文件; # 复制目录 -r scp -r local_folder remote_username@remote_ip:remote_folder ash: /usr/libexec/sftp-server: not found This is a consequence(结果/后果) of your client machine using a very recent OpenSSH release (9.0 - check https://www.openssh.com/txt/release-9.0 62 for more info), which changes the scp program to use the SFTP protocol under the hood, which vanilla OpenWrt/dropbear installations do not support. To work around the problem on the client side, use the new -O (that is an uppercase letter “o”) switch when invoking scp, which will cause it to fall back to the legacy behavior. ...

2023-01-08 · 1 min · 205 words · -