我心向阳 - linux
type: channel
link: https://www.hollowman.cn/tag/linux/
items: ubuntu2604 尝鲜
items: 这次飞牛动作有点大
items: Linux Mint 快速上手
items: 创建一个定时任务刷新订阅缓存
items: docker 基础学习
items: 安装使用alist
items: wine 学习笔记
items: linux文件存储之inode学习
items: linux系统管理常用命令
items: 阿里云ECS部署免费SSL证书

ubuntu2604 尝鲜
type: item
date: 2026-04-26T22:29:00+08:00
description: ubuntu 26.04 LTS 版本出来了，至于新特性我就不班门弄斧的列举了，纯碎想体验一把新内核、新 Gnome50 桌面，于是我第一时间到各大镜像站找 ISO 资源，清华大学、中科大等镜像站目前都只同步了 arm 架构的安装包，不过还是幸运地在兰州大学镜像站 get到了我要的 ubuntu-26.04-desktop-amd64.isoubuntu 纯官方版的系统，我很少使用，曾使用衍生版 kubuntu 和 优麒麟 很长一段时间，所以这次还是奔着 Gnome50 而来的，因为我目前正在用 Debian 13 带 Gnome 48 。安装 ubuntu 的过程很简单，就是界面仍然保留着浓厚的 ubuntu 气息。得益于 debian 的使用心得，我初始配置没有遇到大的难题，不过也记录一下，方便下次安装配置能更加快速。一、换源1. 添加国内镜像源个人比较喜欢直接修改源文件，这里更换稳定的中科大镜像源：$ sudo nano /etc/apt/sources.list.d/ubuntu.sources ------------------------------------------ Types: deb URIs: https://mirrors.ustc.edu.cn/ubuntu Suites: resolute resolute-updates resolute-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: https://mirrors.ustc.edu.cn/ubuntu Suites: resolute-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg2. 更新系统$ sudo apt update $ sudo apt upgrade二、必备软件1. 安装 apt 镜像软件# 必装软件，debian 13 默认已安装 git $ sudo apt install vim gitg neowofetch obs-studio viewnior eom filezilla # 安装 fcitx5 输入法，否则没有中文输入法 $ sudo apt install fcitx5 fcitx5-chinese-addons kde-config-fcitx5 fcitx5-frontend-*fcitx5 输入法默认不会开机运行，可通过运行 fcitx5-configtool 开手动运行，或者通过优化工具（ gnome-tweaks 命令调出，后面有写怎么安装）- 开机启动程序，添加 fcitx5 程序2. 安装第三方软件（通常是下载deb包安装）百度网盘QQ微信wps-officeVSCodium 或者 codeEdge 浏览器Chrome 浏览器安装的正确格式是 sudo apt install /path/to/softname.deb额！百度网盘仍然不能播放视频...（百度 linux 端开发的程序员是 ** 的）看来还得通过浏览器来看百度视频了。三、配置 GNOMEubuntu 默认的这个主题我实在是不太习惯，必须配置一番。1.扩展配置1) 安装 GNOME 扩展工具自定义 GNOME 桌面的核心就是玩扩展。可以通过扩展工具 gnome-shell-extensions 来管理和设置扩展（扩展分系统扩展和用户扩展）。$ sudo apt install gnome-shell-extensions系统扩展：通过 apt 来安装，对所有用户生效。包名通常命名为 gnome-shell-extension-* ，安装位置：/usr/share/gnome-shell/extensions/，大部分常用的扩展都可以在系统扩展中找到。用户扩展：以插件形式进行安装，通常可以直接在浏览器中进行安装、卸载、开启和关闭，如 火狐 gnome shell 扩展页，只对当前用户生效。安装位置： ~/.local/share/gnome-shell/extensions/。2) 推荐安装的用户扩展：dash-to-pannel，将 dash 和 GNOME 主面板组合成一个面板，类 windows 面板。安装该扩展后，用户扩展 Ubuntu dock 自动禁止。add-to-desktop，可以通过右键将程序图标添加到桌面blur-my…

这次飞牛动作有点大
type: item
date: 2026-02-13T10:21:00+08:00
description: 晚上刷到飞牛群主的一条系统更新提示（v1.1.20），并推送了一条公众号文章：致飞牛用户：近期安全事件的完整说明与深刻反思我的飞牛无法登陆了没有多看，我习惯性的去手机 APP 中更新系统，结果提示用户名或密码错误而无法登陆；刚好在家，我直接控制飞牛主机，正常的输入用户名和密码，结果还是提示用户名密码错误。这时，我才认真看推送的公众号文章，才发现这次飞牛系统被入侵的有点厉害，虽说之前也有看到飞牛的提醒，但因为自己没有受到影响也就没注意，加上前几天没有访问飞牛，也就错过了精彩的攻防部分，同时我的主机也被动的被修改了用户密码。修改密码既然受到了影响，只好临时解决了。于是，我百度了一下，在飞牛官方视频中找到了修改密码的方法，其实和 linux 通用系统忘记密码的处理方式大差不差：第 1 步：重启飞牛主机。第 2 步：在出现菜单界面是，迅速移动上下方向键打断自动启动，重新按上下方向键，选中 "Debian GNU/Linux"。第 3 步：菜单界面下方，可以看到一段英文字母，提示您按 "e" 键可以在编辑启动命令参数，那我们就按 "e" 键吧。第 4 步：接下来因该进入了启动参数界面，往下移动光标到 linux 开头的之一行，按 "Ctrl+e" 组合键将光标移动至该行的最后，输入 init=/bin/bash (注意 init 前有一个空格)，这个参数可以理解为直接以root用户登陆。这里，如果将 linux 所在行中的参数 ro 修改为 rw,则第 6 步中应该可以省去2个命令，只保留修改密码的命令即可（没有测试）。第 5 步：同样，界面下方有段小字提示我们按 "Ctrl+x" 或者 按 "F10" 重启，那我们就按 "Ctrl+x" 组合键重启吧。第 6 步：系统启动后就进入了root用户登陆界面了，此时需要输入 3 条命令来完成密码修改。将根目录挂载为可读写（原来是不可读写的）mount -o remount,rw / 修改密码passwd yourusername # 设置管理用户的密码命令 然后根据提示，输入 2 次密码，并回车让密码生效sync第 7 步：用命令重启电脑。reboot -f接下来，就可以通过手机 APP 登陆了。还有问题？手机 APP 可以登陆，可我在飞牛主机上的命令行输入正确的用户及密码还是不能登陆，这是本地登陆也给禁止了啊。只好在 APP 上一顿找，然后顺利在 系统设置 - 用户管理 - 管理员用户信息 中，发现和启用 SSH，然后主机就能登陆了。原来飞牛在这里也做了手脚，连本地登陆都要弄个开关来授权，不过个人感觉还是没必要的，因为我反正要开启，再者，这个开关是本地和 SSH 都绑定开启和关闭，也还是可以优化的。

Linux Mint 快速上手
type: item
date: 2025-09-30T13:53:00+08:00
description: debian 13 问题实在不少，该放弃一段时间了。今天安装了 linux mint，发现它配置简单，运行稳定，而且 cinnamon 桌面真的很美观。Linux Mint 是一个基于 Ubuntu 的发行版，其目的是提供更完整意义上的即刻可用的体验，而这通过包含浏览器插件、多媒体编码解码器、DVD 播放支持、Java 及其他组件来实现。它也增加了一套定制桌面及各种菜单，一些独特的配置工具，以及一个基于 web 的软件包安装界面。Linux Mint 兼容 Ubuntu 软件仓库。Linux Mint 在 linux 系统的国际受欢迎程度排名中，稳居第二。下面就是我安装完 linux mint 22.2 + cinnamon 桌面环境后的一些配置体会：一、初始配置1. 软件源更换linux mint 的软件源更换很方便，可以通过点击 菜单-系统管理-更新管理器-编辑-软件源-官方软件仓库 来进行更换操作，可以方便选择访问速度最快的国内镜像，变更后将直接修改配置文件为：/etc/apt/sources.list.d/official-package-repositories.list2.桌面配置1) 将计算机、家目录等图标添加到桌面找到"桌面"工具进行配置进入方法：菜单-搜索"desk"-桌面，或者 菜单-系统设置-桌面，或者 菜单-首选项-桌面，或者 菜单-首选项-系统设置-桌面2) 自定义桌面cinnamon 默认桌面图标左右间距太大，不符合平时的视觉习惯。可以通过在桌面右键，选择自定义来进行配置，下面的横向滑动调可以调整左右间距，右边的纵向滑动调可以调整上下间距，该界面还可以对图标尺寸进行调整。2) 快捷键配置及查看进入方法：菜单-搜索"key"-键盘-快捷键常用快捷键：启动终端（Ctrl + Alt + T）选区截屏（Shift + Print）窗口截屏（Alt + Print）3.安装常用字体常用字体有公文字体，wps-office 缺失字体，等我的百度网盘共享链接:https://pan.baidu.com/s/1a6CDRYjoUU6eKwxb_lO3bg?pwd=film执行里面的 autoinstall.sh 即可$ ./autoinstall.sh二、安装常用软件1. 从镜像源中安装# 先更新系统 $ sudo apt update && sudo apt upgrade # vim 文本编辑，git gitg 不用介绍，obs-studio 屏幕录像 ， filezilla 远程文件传输 $ sudo apt install vim git gitg obs-studio filezilla # 安装 fcitx5 输入法，否则没有中文输入法 $ sudo apt install fcitx5 fcitx5-chinese-addons kde-config-fcitx5 fcitx5-frontend-* # 安装 qemu-kvm 环境（可选） $ sudo apt install qemu-system-x86 libvirt-daemon-system virt-manager $ sudo virt-manager #启动 qemu-kvm 管理器命令2. 第三方软件包安装（通常是下载 deb 包安装）百度网盘QQ微信wps-officeVSCodium 或者 codeEdge 浏览器Chrome 浏览器安装的正确格式是 sudo apt install /path/to/softname.deb3. 独立软件包有些软件还提供了或者只提供 appimage 包，这是一种直接双击打开即可运行的软件（类似 windows 中的绿色软件），使用起来也很方便。哔哩哔哩ZyPlayer洛雪音乐4. 软件平台：星火应用商店星火应用商店 中收集了不少可用的 linux 安装包，图省事的可以从这里找到不少软件。我在此平台必装的软件就有：迅雷5. 删除默认的 libreoffice，因为我们已经有好用的 wps-office 了sudo apt remove libreoffice-*三、安装虚拟化平台1. 从清华大学镜像源安装 winehq## 如果你使用的是 64 位系统，需要先开启 32 位架构支持，通过 sudo dpkg --print-foreign-architectures 查看是否输出 i386 $ sudo dpkg --add-architecture i386 ## 信任来自 https://dl.winehq.org/ 的公钥 $ sudo wget --secure-protocol=auto -nc -O /usr/share/keyrings/winehq-archive.key h…

创建一个定时任务刷新订阅缓存
type: item
date: 2025-03-03T23:49:00+08:00
description: 之前做了一个订阅博客文章的页面，由于需要下载订阅博客的feed文件，造成打开速度很慢的困惑。虽然也设置了 3 小时内直接读取缓存数据，超过 3 小时才会再次下载 feed 文件。可由于访问量不大，有可能 1 天就几个人访问，更有可能访客访问时离前一个访客的来访时间差已过了 3 小时，点击订阅页面理所当然就要下载feed文件了，因此也就造成了不好的体验。post cid="99"为确保 3 小时一定会有人访问，我想了一个笨办法。使用服务器的定时任务表（crontab），每 3 小时访问一次订阅页面。一、思路首先，用 vim 创建一个 auto.sh 的文件，并写入下面的语句（不喜欢的可以用 nano 创建）vim ~/auto.sh #!/bin/bash echo $(date +"%Y-%m-%d %H:%M:%S") >>abc.txt保存退出后，赋可执行权限chmod +x ~/auto.sh然后使用 crontab -e 命令创建一个定时任务，写入定时任务,每隔1分钟执行一次 auto.sh 文件0-59/1 * * * * ～/auto.sh过2-3分钟看看abc.txt文件中，就会有几条内容了，每隔分钟写入了一个时间cat ~/abc.txt 2025-03-03 22:07:01 2025-03-03 22:08:01 2025-03-03 22:09:01定时任务没有问题，接下来继续用 crontab -e 命令将定时任务改为每3隔小时执行1次（此时，我已将feed 缓存设为了178分钟，刚好超出2分钟执行定时任务）0 */3 * * * ～/auto.sh再将 auto.sh 的第二行的内容修改为curl 订阅页面地址 >/dev/nullvim ~/auto.sh #!/bin/bash curl https://www.hollowman.cn/feed.html > /dev/null至此，每隔3小时，服务器自己就会读取一下订阅地址，很快，缓存就会由定时任务主导了。下面是我回到服务器的操作，顺序没按上面来，无关紧要。二、修正在流情大佬的友情提问下，我重新回顾了一下我站点定时任务的执行过程，从缓存文件下载（此时定时任务开始）之后到距离下次需要下载缓存文件的时间为178分，此后到180分（定时任务再次运行）会有2分钟处于定时任务失管状态，若此时有人访问，将再次刷新缓存文件，然后：下次需要刷新缓存文件的时间会在2分钟基础上加上此次提前刷新缓存的时间。若是每次都这么碰巧，则每次都会增加0-2分钟的失管状态，我只能说“倒霉鬼”，再想办法吧。首先，我想到了一个办法。就是定时任务中的执行程序中先删除缓存文件，再访问页面。这样失管时间就永远都不会大于2分钟了。修改后的 auto.sh 文件内容为下面的样子：#!/bin/bash rm -f /path/to/tmp/*.xml curl https://www.hollowman.cn/feed.html > /dev/null为什么要将失管时间控制在 2 分钟而不是 1 分钟？主要是减少意外情况的发生。比如我所在服务器或者订阅网站带宽过窄，我下载缓存都用了1分多钟，那设置 1 分钟不就白瞎了？然后，我再次优化上面的修正办法，想着，既然 180 分钟时反正要删除缓存重新下载并重新刷新缓存时间，那我就是将缓存时间设置为 182 分钟甚至 1820 分钟，这时定时器小于缓存时间，一切都在定时器掌握中，应该没问题了吧。三、关于 crontab 学习手册（man 5 crontab 并 AI翻译后整理）NAMEcrontab - 定时任务表DESCRIPTIONcrontab 文件包含对 cron(8) 守护进程的指令，格式为："在指定日期时间的这个时刻运行此命令"。每个用户都有自己的 crontab 文件，其中包含的命令将以该用户的身份执行。Uucp 和 News 通常有自己的 crontab 文件，避免了在 cron 命令中显式运行 su(1) 的需求。空行、前导空格和制表符将被忽略。以井号（#）开头的行视为注释并被忽略。注意：注释不能与 cron 命令同行，否则会被视为命令的一部分。同样，环境变量设置行也不能包含注释。crontab 中的有效行可以是环境变量设置或 cron 命令。环境变量设置的格式为 name=value，等号两侧的空格可选，value 部分的后续非前导空格将作为变量的值。值可以用引号（单引号或双引号，需匹配）包裹以保留前后空白。cron(8) 守护进程会自动设置几个环境变量：SHELL 被设置为 /bin/sh，LOGNAME 和 HOME 根据 crontab 所有者的 /etc/passwd 文件设置。HOME 和 SHELL 可以通过 cron…

docker 基础学习
type: item
date: 2025-01-23T09:53:00+08:00
description: 一、docker 介绍Docker 是一个开源的应用容器引擎，让开发者可以打包他们的应用以及依赖包到一个可移植的容器中，然后发布到任何流行的 Linux 机器上，也可以实现虚拟化。容器是完全使用沙箱机制，相互之间不会有任何接口。三大核心： Docker 技术的三大核心概念，分别是：镜像 Image、容器 Container、仓库 Repository。Docker仓库(Registry): 保存镜像的仓库, 官方仓库 hub.docker.com 在国内已不能访问, 所幸国内的镜像仓库正在逐渐完善Docker镜像(Images): 镜像是一个可执行包，也是一个静态的隔离的文件系统，其包含运行应用程序所需的代码、运行时、库、环境变量和配置文件；镜像可以用来创建、传输、拷贝等；镜像本身是静态的，不包含任何动态数据，其内容在构建之后也不会被改变；镜像必须通过实例化来创建和运行容器Docker容器(Container): 容器是镜像运行后的一个环境，是一个进程，同一个镜像可以实例化并运行多个容器。其他术语： Docker主机(Host): 物理机或虚拟机, 用于运行 Docker 服务进程和容器, 也称之为宿主机, node 节点 Docker服务器端(Server): Docker 守护进程, 运行 Docker 容器 Docker客户端(Client): 客户端使用 docker 命令或其他工具调用 docker API 当我们请求 Docker 运行容器时，Docker 会在计算机上设置一个资源隔离的环境。然后将打包的应用程序和关联的文件复制到 Namespace 内的文件系统中，此时环境的配置就完成了。之后 Docker 会执行我们预先指定的命令，运行应用程序。既然访问国外 docker 资源比较困难，下面的操作就重点以国内 docker 资源为例来进行学习了。二、docker 管理docker 安装包有两个命名形式， docker.io 和 docker-ce ，但他们的维护者、依赖管理和安装方式是不相同的，我们只能选择其中一个安装。‌‌维护者‌：docker-ce ‌是由 Docker 官方维护的；docker.io ‌则是由 Debian 团队维护的‌。‌依赖管理‌：‌docker-ce‌ 使用自己的方式管理依赖，能够自行管理所有依赖‌；‌docker.io‌ 则采用 apt 的方式管理依赖。‌安装方式‌：‌docker-ce‌ 需要通过特定的命令和仓库进行安装，例如使用 curl 命令添加 Docker 的官方 GPG 密钥和仓库地址，然后再进行安装；docker.io ‌可以通过 apt 命令直接安装Debian 团队维护的 docker 版本一般会落后 docker-ce 版本很多，况且，得益于国内丰富的 docker-ce 镜像，我们就安装 docker-ce 吧。1.安装 docker 引擎国内很多大学的镜像源都有 docker 镜像，下面以[中科大docker-ce]](https://mirrors.ustc.edu.cn/help/docker-ce.html)为例来安装。如果你过去安装过 docker，先删掉：$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done安装依赖(如果没有的话)：$ apt-get install ca-certificates curl gnupg信任 Docker 的 GPG 公钥：$ sudo install -m 0755 -d /etc/apt/keyrings $ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc #或 wget -qO- https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo tee /etc/apt/keyrings/docker.asc $ sudo chmod a+r /etc/apt/keyrings/docker.asc # 确保可读，其实默认应该可读添加 docker 仓库:$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/debian $(. /e…

安装使用alist
type: item
date: 2025-01-13T12:31:00+08:00
description: 学习 fnOS 时发现一个好东西 AList,于是将其安装和使用学习了一下。其实，官方的 AList 文档已经可以帮我们理解和使用它了，但它的介绍中不少需要进行一些跳跃思维才能理解，于是我就先弄个操作步骤出来了。我使用的是 Linux 系统，使用 docker 是比较理想的办法：一、下载镜像$ sudo docker pull docker.1ms.run/xhofe/alist二、创建容器$ sudo docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" docker.1ms.run/xhofe/alist:latest到这里就安装好了，怎么使用？三、浏览器访问在浏览器输入：localhost:5244 或者 你的ip:5244 或者 域名:5244，就会进入登陆界面。不过问题来了，用户名和密码是什么？或者说我忘记了怎么办？AList 的管理员用户是 admin,要获取密码，需要进入容器四、进入容器获取密码$ sudo docker ps #查看容器ID CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57d3a08831e7 docker.1ms.run/xhofe/alist:latest "/entrypoint.sh" 13 minutes ago Up 13 minutes 0.0.0.0:5244->5244/tcp, :::5244->5244/tcp, 5245/tcp alist $ sudo docker exec -it 57d3a08831e7 bash # 登陆容器 57d3a08831e7 57d3a08831e7:/opt/alist# ./alist admin set admin # 设置容器的密码，命令格式为： ./alist admin set 你的密码 INFO[2025-01-11 14:15:00] reading config file: data/config.json INFO[2025-01-11 14:15:00] load config from env with prefix: ALIST_ INFO[2025-01-11 14:15:00] init logrus... INFO[2025-01-11 14:15:00] admin user has been updated: INFO[2025-01-11 14:15:00] username: admin INFO[2025-01-11 14:15:00] password: admin 五、重新在浏览器中登陆进入之后，什么也没有，需要自己添加存储才能让我们正确浏览，Alist 支持非常多的存储，尤其是网盘，这里我就按照文档中关于建立百度网盘和夸克的存储为例进行操作。1.建立百度网盘存储首先打开添加百度网盘存储的教程,学习一下文档在教程中找到刷新令牌那里，点击那个链接获取刷新令牌，会提示登陆百度网盘，进行扫码登陆后复制"refresh_token"的内容 回到之前登陆后的 alist 浏览器页面，点击下面的管理,进入管理页面点击左侧的列表中的存储，再点击右方页面上方的添加，驱动选择“百度网盘”，填写如下2个地方的信息：挂载路径：/baidunetdisk刷新令牌：粘贴刚才复制的"refresh_token"的内容点击最下面的添加，就算添加成功了点击左侧列表最下面的回到主页，你就可以看到baidunetdisk 的文件夹，里面的资源就是你的网盘全部内容啦2.建立夸克网盘存储还是打开添加夸克网盘存储的教程,先学习根据教程，需要我们使用谷歌浏览器登陆夸克网盘点击到我们需要添加进存储的文件夹，比如我进入的是test文件夹，地址为：https://pan.quark.cn/list#/list/all/67ea4c050d13407a910d71b7f878f7d7-test按 F12 ，选择网络(network),点击元素列表，看看那个列表右边的头部信息(Headers)能够出现Cookie,就是它了，复制它的内容回到之前登陆后的 alist 浏览器页面，点击下面的管理,进入管理页面点击左侧的列表中的存储，再点击右方页面上方的添加，驱动选择“夸克”，填写如下3个地方的信息：挂载路径：/quarklistCookie：粘贴刚才复制的"Cookie"的内容根文件夹ID：填写 test 地址链接中那串很长的代码，也就是67ea4c050d13407a910d71b…

wine 学习笔记
type: item
date: 2025-01-04T11:01:00+08:00
description: 目前 wine 版本为较为稳定的 9.0 版本，本文重点围绕 wine 9.0 安装、使用以及 wine 工具介绍等方面进行了学习和整理。一、安装 wine安装步骤主要参考的官方Debian 安装 wine 的文档1. 如果你使用的是 64 位系统，需要先开启 32 位架构支持：$ sudo dpkg --add-architecture i386 architecture，指的是cpu体系架构，如64位的amd64，arm64。下面是一些关于架构方面的指令：$ sudo dpkg --print-architecture #查看当前CPU体系架构： $ sudo dpkg --add-architecture [ amd64 | i386 | arm64 | ...] #开启或者说增加其他架构支持 $ sudo dpkg --print-foreign-architectures #查看开启的其他架构(非当前cpu体系架构) $ sudo dpkg --remove-architecture [ amd64 | i386 | arm64 | ...] #删除开启的其他架构i386 = Intel 80386。通常被用来作为对Intel（英特尔）32位微处理器的统称。 amd64，又称“x86-64”或“x64”。是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构，由AMD公司所开发。2. 信任来自 https://dl.winehq.org/ 的公钥：$ sudo mkdir -pm755 /etc/apt/keyrings $ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key上面的命令实现了将 https://dl.winehq.org/ 的公钥内容保存至 /etc/apt/keyrings/winehq-archive.key 文件。可以查看是否保存成功$ ls /etc/apt/keyrings/3.添加仓库（以 debian12 和 ubuntu 22.04 为例）：方法一：添加 winehq 官方仓库（不能保证下载速度）debian12 添加源命令：$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sourcesubuntu2404 添加源命令：$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources方法二：从镜像站添加仓库，如清华大学开源镜像站（推荐，能保证下载速度）清华大学开源镜像站只同步了 ubuntu/debian 部分，因此其他发行版不适用。在 /etc/apt/sources.list.d/ 目录中新增一个源列表文件 winehq.list，并将 winehq 源添加进来debian12 添加源命令：$ echo 'deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bookworm main' | sudo tee /etc/apt/sources.list.d/winehq.listubuntu2404 添加源命令：$ echo 'deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ noble main' | sudo tee /etc/apt/sources.list.d/winehq.list4. 更新源列表$ sudo apt update5. 安装 wine 稳定版这里选择安装的是稳定分支 (winehq-stable)，可以根据需要选择开发分支 (winehq-devel) 或Staging 分支 (winehq-staging)$ sudo apt install --install-recommends winehq-stable如果 apt 提示缺少依赖，请先安装缺少的依赖，然后重复以上两步（up…

linux文件存储之inode学习
type: item
date: 2024-12-25T21:16:00+08:00
description: inode 是 Linux 操作系统中存储文件时用到的一种数据结构，它包含了与文件系统中各个文件相关的一些重要信息。一、几个概念1.扇区(Sector)硬盘的最小存储单元叫做扇区(Sector)，每个扇区大小为 512 字节(相当于 0.5KB)。Linux 查看扇区大小：fdisk -l /dev/sda$ sudo fdisk -l /dev/nvme0n1 Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors Disk model: YMTC PC300-1TB-B Units: sectors of 1 * 512 = 512 bytes # 1 个扇区大小为 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9F0C9D9F-7225-4652-A3F7-C4E0312F138D Device Start End Sectors Size Type /dev/nvme0n1p1 2048 2000895 1998848 976M EFI System /dev/nvme0n1p2 2000896 64501759 62500864 29.8G Linux swap /dev/nvme0n1p3 64501760 357470207 292968448 139.7G Linux filesystem /dev/nvme0n1p4 357470208 357502975 32768 16M Microsoft reserved /dev/nvme0n1p5 357502976 650438655 292935680 139.7G Microsoft basic data /dev/nvme0n1p6 650438656 943407103 292968448 139.7G Linux filesystem /dev/nvme0n1p7 943407104 1250606322 307199219 146.5G Linux filesystem /dev/nvme0n1p8 1250607104 1557805055 307197952 146.5G Linux filesystem2.块(Block)Windows 文件系统的最小逻辑存储单元叫做簇（Cluster），而Unix/Linux 系统则将最小逻辑存储单位叫做块（Block），每个块或簇可以包括 2、4、8、16、32、64(2 的 n 次方)个相邻的扇区，Linux 文件系统中块的大小一般为 8 个相邻的扇区，也就是 4KB(这个值可以在格式化分区的时候修改)。系统读取数据时是一个块一个块的读取，而不是一个扇区一个扇区的读取。3.数据区和 Inode 区Linux 在格式化硬盘时，linux 系统在格式化硬盘时，会将硬盘分区分成 2 个区域。一个是数据区（data area），以块为最小存储单元，用于存放文件数据；另一个是inode 区（inode table，也叫 inode 索引表），以 inode 节点为最小存储单元，用于存放文件存储大小、权限、时间戳、链接数等关键的元信息。文件名并不属于 inode 信息，因此不会存放到 inode table，而是存放在目录表(见目录树)中二、文件读取方式先看一张图：1.目录树首先，Linux 文件系统是以目录树的形式来存储和读取的，根节点是”/”，因此所有的文件都必须处于目录内，目录中存放的数据实际上是一个目录表。而目录表中包含 2 个元素，一个是 inode 号码，一个是目录内文件名。2.inode 表Inode 表中存储着所有文件的元信息，其中包含 inode 号码，并有一个指针指向文件的数据存储位置，这个数据存储位置就在数据区中。3.数据区数据区中存放着文件的真实数据，因为数据区最小存储单元是块，每个块的大小固定(8 个扇区)，如 Linux 系统块的大小一般为 4KB，因此一个块只能存放一个文件的内容，无论这个文件有多小，也就是说一个文件占用的空间必然是 1 个或多个块的大小，也就是 4K 的倍数。先创建几个目录和文件进行演示：hy@hollowman:~$ mkdir inodes hy@hollowman:~$ cd inodes/ hy@hollowman:~/inodes$ ls -alih # 总计有 8KB 总计 8.0K 2650835 drwxr-xr-x …

linux系统管理常用命令
type: item
date: 2024-12-23T21:05:00+08:00
description: 本文列举了查看系统信息、查看发行版信息、进程管理等方面的一些常用命令一、查看系统信息1. unameuname，英文全称为“unix name”，用于输出一组系统信息。语法：uname [选项]有关选项 -a, --all 以如下次序输出所有信息。其中若 -p 和 -i 的探测结果不可知则被省略： -s, --kernel-name 输出内核名称(默认) -n, --nodename 输出网络节点上的主机名 -r, --kernel-release 输出内核发行号 -v, --kernel-version 输出内核版本 -m, --machine 输出主机的硬件架构名称 -p, --processor 输出处理器类型（不可移植） -i, --hardware-platform 输出硬件平台或（不可移植） -o, --operating-system 输出操作系统名称 --help 显示此帮助信息并退出 --version 显示版本信息并退出实例：$ uname -a Linux hollowman 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux2. cat /proc/version/proc/version文件中存储着系统版本有关信息。$ cat /proc/version Linux version 6.1.0-28-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22)二、查看发行版信息3. lsb_release -a有些发行版提供命令查看当前系统版本的详细信息，如Debian、ubuntu等发行版可通过lsb_release -a来查看$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm4. cat /etc/redhat-releaseredhat，centos的当前系统版本详细信息存储在/etc/redhat-release文件中cat /etc/redhat-release 5. cat /etc/os-releaseubuntu、debian以及华为的openEuler的当前系统版本详细信息存储在 /etc/os-release文件中$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"三、查看用户信息6. whoamiwhoami,who am i? 显示与当前的有效用户ID 相关联的用户名。$ whoami hy7. who显示当前已登录的用户信息。$ who hy tty7 2024-12-12 17:40 (:0) hy pts/0 2024-12-12 17:40 (:0) hy pts/4 2024-12-12 17:53 (:0)8. w比who更详细，能显示用户登录名、终端标志、星期几登录和具体登录时间、闲置时间、用户正在执行的程序、占用CPU时间、系统的运行时间和平均负载等。$ w 23:00:43 up 5:32, 3 users, load average: 0.21, 0.22, 0.21 USER TTY 来自 LOGIN@ IDLE JCPU PCPU WHAT hy tty7 :0 17:40 5:32m 2:23 0.08s /usr/bin/startplasma-x11 hy pts/0 :0 17:40 5:20m 0.00s 6.45s /usr/bin/kded5 hy pts/4 :0 17:53 3.00s 0.09s 0.01s…

阿里云ECS部署免费SSL证书
type: item
date: 2024-12-16T13:53:00+08:00
description: 阿里云个人测试 ssl 证书（原来的免费 ssl 证书）虽然将有效期缩短至了 3 个月，但我发现，他在部署上面进行了优化，无需再像以前那样，下载证书和上传证书，只需直接在部署界面进行选择即可，从而大大提高了部署的便利性。一、首先进入数字证书管理服务（原 ssl 证书）进入阿里云控制台--在左上角三条黄线那里停留--找到并点击：产品与服务--安全--数字证书管理服务（原 ssl 证书）二、购买个人测试证书（原免费证书）从 ssl证书管理--个人测试证书（原免费证书）界面，点击“立即购买”产品选择个人测试证书，类型免费半，同意协议确认即可，这样就会有20个免费证书供你使用了。三、创建个人证书点击“创建证书”,填写需要创建证书的域名，勾选：“快捷签发”，点击“提交审核”按钮四、验证个人证书刚创建的个人证书需要验证，如果信息正确，比如我们配置的域名 demo.hollowman.cn 正确的话，通常会验证成功五、部署个人证书这里我们将ssl部署到我们的云服务器中，如下界面，我们可以看到3个已经成功部署的证书，我们创建一个任务，来部署刚刚的 ssl 证书。接下来，进入下面的界面，我们选择“个人测试证书”，选中我们刚刚绑定的那个域名，点击下一步这里选择证书部署的路径，证书路径存放的公钥文件，私钥路径存放的私钥文件，而证书链路径存放的是证书链文件。点击确定即可部署完成。我们登陆远程ECS服务器，验证发现，已经创建了刚才部署的3个文件，表明已经部署成功@# ls -al /etc/apache2/cert/demo* -rw-r--r-- 1 root root 1679 Dec 14 14:13 /etc/apache2/cert/demo.hollowman.cn.cer -rw-r--r-- 1 root root 1679 Dec 14 14:13 /etc/apache2/cert/demo.hollowman.cn.key -rw-r--r-- 1 root root 3813 Dec 14 14:13 /etc/apache2/cert/demo.hollowman.cn.pem六、给我们的网站配置 ssl 证书在 /etc/apache2/sites-available 目录下，从默认存在的default-ssl.conf 文件拷贝一个到 demo-ssl.conf，修改邮箱、域名、站点路径及证书文件：ServerAdmin 你的邮箱 ServerName demo.hollowman.cn DocumentRoot /path/to/demowww SSLEngine on SSLCertificateFile etc/apache2/cert/demo.hollowman.cn.pem # 证书公钥文件 SSLCertificateKeyFile etc/apache2/cert/demo.hollowman.cn.key # 证书密钥文件 SSLCertificateChainFile etc/apache2/cert/demo.hollowman.cn.cer # 证书链文件 七、激活 ssl 文件并重启服务@# a2ensite demo-ssl.conf @# systemctl restart apache2此时，ssl 证书就算部署成功了。