跳到主要内容

48 篇博文 含有标签「操作系统与命令」

操作系统和命令行相关知识

查看所有标签

Linux 使用 zstd 解压缩

· 阅读需 2 分钟
素明诚
Full stack development

zstd(Zstandard)是一个由 Facebook 开发的高效压缩算法和工具。

基本用法

安装 zstd 在大多数 Linux 发行版中,可以通过包管理器安装 zstd

sudo apt install zstd      # Debian/Ubuntu
sudo yum install zstd # CentOS
sudo dnf install zstd # Fedora

压缩文件 使用 zstd 压缩文件,命令格式如下

zstd [文件名]

例如,压缩一个名为 example.txt 的文件

zstd example.txt

这会创建一个压缩后的文件 example.txt.zst

解压文件 使用 zstd 解压文件,命令格式如下

zstd -d [压缩文件名]

或者使用长参数 --decompress

zstd --decompress example.txt.zst

调整压缩等级 zstd 允许你指定压缩等级(1-19),默认为 3。等级越高,压缩比越好,但需要更多的处理时间

zstd -[等级] example.txt

例如,使用压缩等级 5 压缩文件

zstd -5 example.txt

使用注意事项

内存使用,高压缩等级可能会显著增加内存使用。在资源受限的环境中,应避免使用过高的压缩等级。

文件覆盖,默认情况下,zstd 在压缩或解压时不会覆盖现有文件。如果需要覆盖,可以添加 -f(或 --force)参数。

批量处理,可以使用通配符一次压缩或解压多个文件

zstd *.txt           # 压缩当前目录下所有 .txt 文件
zstd -d *.zst # 解压当前目录下所有 .zst 文件

Linux 使用 skopeo

· 阅读需 1 分钟
素明诚
Full stack development

在 Fedora 和 RHEL 上安装

sudo dnf install skopeo

在 Ubuntu 上安装

sudo apt-get -y install skopeo

使用 Homebrew 在 macOS 上安装

brew install skopeo

基本用法

检查容器镜像

skopeo inspect docker://docker.io/library/alpine:latest

检查 Docker Hub 上的 Alpine 镜像并返回其元数据。可以使用类似的命令检查其他容器注册表中的镜像。

复制容器镜像

skopeo copy docker://docker.io/library/alpine:latest docker://myregistry.local/library/alpine:latest

将 Docker Hub 上的 Alpine 镜像复制到私有注册表 myregistry.local

复制镜像到本地目录

skopeo copy docker://docker.io/library/alpine:latest dir:/path/to/local/dir

将 Alpine 镜像复制到本地目录 /path/to/local/dir

删除容器镜像

skopeo delete docker://myregistry.local/library/alpine:latest

删除私有注册表 myregistry.local 上的 Alpine 镜像。

使用身份验证

对于需要身份验证的容器注册表,可以使用 --creds 参数:

skopeo copy --src-creds myusername:mypassword docker://docker.io/myrepo/myimage:latest docker://myregistry.local/myrepo/myimage:latest

将带有身份验证信息的 Docker Hub 上的镜像复制到私有注册表。

复制镜像到 OCI 格式

skopeo copy docker://docker.io/library/alpine:latest oci:/path/to/alpine-bundle:latest

将 Docker Hub 上的 Alpine 镜像保存为本地的 OCI 格式 tar 文件。

Win11 设置开机直接进入桌面

· 阅读需 2 分钟
素明诚
Full stack development

步骤 1: 打开注册表编辑器

打开运行对话框按下 Win + R

启动注册表编辑器输入 regedit 并按 Enter,确认提示以打开注册表编辑器。

步骤 2: 导航到登录设置的注册表位置

导航到以下路径

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

步骤 3: 修改或创建自动登录所需的值

设置默认用户名

  • Winlogon 键下,找到或创建一个名为 DefaultUserName 的字符串值(REG_SZ)。双击它,输入你希望自动登录的账户名称。

设置默认域名(如果适用)

  • 对于加入到域的计算机,找到或创建一个名为 DefaultDomainName 的字符串值(REG_SZ)。双击它,输入域名。个人 PC 不用设置这个

设置默认密码

  • 找到或创建一个名为 DefaultPassword 的字符串值(REG_SZ)。双击它,输入该账户的密码。如果这个值不存在,你需要新建它。

启用自动登录

  • 找到或创建一个名为 AutoAdminLogon 的字符串值(REG_SZ)。双击它,并设置值为 1

步骤 4: 完成修改并重启计算机

  • 完成上述所有设置后,关闭注册表编辑器。
  • 重启计算机以应用更改。如果设置无误,电脑将会在启动时自动登录指定的用户账户。

备份和还原注册表

由于直接编辑注册表具有一定风险,强烈建议在进行任何更改之前备份注册表

  • 在注册表编辑器中,选择你想备份的键(例如,Winlogon 键)。
  • 点击“文件” > “导出”。
  • 在弹出的对话框中,选择一个保存位置,为备份文件命名,然后点击“保存”。

如果需要恢复原先的注册表设置,可以通过“文件” > “导入”来恢复你保存的备份文件。

常用的 docker-compose 命令行选项

· 阅读需 3 分钟
素明诚
Full stack development

常用的 docker-compose 命仅行选项

-p | --project-name 用于指定项目名称。默认情况下,docker-compose 使用当前目录名作为项目名称。使用此选项可以自定义项目名称,这在同一台机器上运行多个配置实例时非常有用。

-d | --detachup 命令结合使用,使服务在后台运行。这样,docker-compose 命令执行后会立即返回控制台,而不占用命令行。

docker-compose up -d

--no-deps 启动服务时不启动其依赖的服务。当只需重启单个服务而不影响其他依赖服务时使用。

--build

  1. 构建或重新构建镜像:根据 docker-compose.yml 文件中定义的 build 上下文和配置自动构建或更新服务所需的镜像。
  2. 停止并移除当前运行的容器:如果这些服务的容器已经在运行,且相关镜像有更新,Docker Compose 会停止并移除这些容器。
  3. 启动新容器:使用新构建的镜像启动新的容器实例,确保服务运行的是最新的代码和依赖版本。
docker-compose up --build

--no-build 启动服务时跳过构建步骤,直接使用现有镜像。

--no-color 禁用彩色输出,适用于输出日志时避免颜色代码造成的阅读困难。

--verbose 输出更多的调试信息,包括与 Docker 引擎的通信。

--no-ansi 禁止输出 ANSI 控制字符,适用于需要清晰日志输出的场景。

-t | --timeout 设置命令超时时间(单位为秒)。这对于控制容器停止等操作的响应时间非常有用。

-v | --version 显示 docker-compose 的版本。

--scale 动态调整服务的副本数量。

docker-compose up --scale web=3

进阶和特定用途的 docker-compose 命令行选项

--env-file 指定一个环境变量文件。这允许从外部文件加载环境变量,而不是在 docker-compose.yml 文件中硬编码。

docker-compose --env-file .env.production up

--log-level 设置日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL),以控制输出的详细程度。

--profile 指定包含在启动时的配置文件。这可以用于根据不同的环境或条件启动不同的服务集合。

--remove-orphans 在执行 updown 命令时移除不再定义在配置文件中的孤立容器。

--force-recreate 即使配置未更改,也强制重新创建容器。这在更新环境或修复问题时非常有用。

--always-recreate-deps 当服务被重新创建时,强制重新创建其所有依赖的服务。

--abort-on-container-exit 当任何容器退出时,停止所有容器。这在自动化测试环境中尤为重要,确保如果一个组件失败,整个环境都将停止。

--exit-code-from 使用 up 命令时,设置从特定服务获取退出代码。这对 CI/CD 管道中的错误处理非常有用。

--follow 跟随日志输出,通常与 logs 命令结合使用,用于实时监控日志。

Windows 设置程序开机自动启动

· 阅读需 1 分钟
素明诚
Full stack development

创建批处理文件 - 首先确保你的 .bat 文件已经编写完成并能够正常运行。

添加到启动文件夹

  • 打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 文件夹。
  • 将你的批处理文件或其快捷方式拖放到这个文件夹中。

重启计算机 - 重启你的计算机以测试批处理文件是否如预期那样在启动时自动执行。

注意事项

权限问题:确保批处理文件在没有管理员权限的情况下也能运行,否则可能需要额外的步骤来确保其能正常执行。

用户账户控制:如果你的脚本需要管理员权限,可能会遇到用户账户控制(UAC)的弹窗。这种情况下,可以考虑使用任务计划程序来设置脚本以管理员权限运行,同时避免 UAC 弹窗。

Linux ufw 常用命令

· 阅读需 2 分钟
素明诚
Full stack development

开放单个端口

要使用 ufw 开放单个端口,你可以使用以下命令,其中 <port> 是你希望开放的端口号

sudo ufw allow <port>

例如,如果你想开放端口 80(通常用于 HTTP),你可以执行

sudo ufw allow 80

开放端口范围

如果你需要开放一系列的端口,可以指定端口范围和协议。例如,要开放端口 6000 到 7000,可以使用

sudo ufw allow 6000:7000/tcp

这里指定了 TCP 协议。如果需要同时开放 TCP 和 UDP,你可以分别添加规则,或者简单地省略协议部分,这样会对两种协议都开放

sudo ufw allow 6000:7000

开放特定的服务

ufw 还允许你根据服务名称开放端口,前提是 /etc/services 文件中有相应的服务定义。例如,开放 HTTP 服务

sudo ufw allow http

或者开放 SSH 服务

sudo ufw allow ssh

使用规则指定来源 IP

ufw 也允许你指定特定的来源 IP 地址或者子网,从而只允许来自特定 IP 的流量通过特定的端口。例如,只允许 IP 地址 192.168.1.100 通过端口 22

sudo ufw allow from 192.168.1.100 to any port 22

管理和查看 ufw 状态

在添加规则之前,确保 ufw 是启用的。你可以使用以下命令来启用 ufw

sudo ufw enable

查看所有已经设置的规则和 ufw 的状态

sudo ufw status verbose

如果需要禁用 ufw,可以使用

sudo ufw disable

删除或重置规则

如果你需要删除之前设置的规则,可以使用 delete 命令,后跟先前添加的相同规则

sudo ufw delete allow 80

或者,你可以重置所有 ufw 规则,返回到初始状态(注意这会删除所有自定义的规则)

sudo ufw reset

使用 firewalld 放开关闭端口

· 阅读需 1 分钟
素明诚
Full stack development

使用 firewalld 放开/关闭端口

确保 firewalld 服务正在运行

sudo systemctl start firewalld
sudo systemctl enable firewalld

使用 firewall-cmd 命令放开 3000 和 3001 端口

sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3001/tcp --permanent

关闭 3000 和 3001 端口

sudo firewall-cmd --zone=public --remove-port=3000/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=3001/tcp --permanent

重载防火墙以使更改生效

sudo firewall-cmd --reload

验证端口是否已放开

sudo firewall-cmd --list-all

iptables 和 ufw 的常用命令

· 阅读需 2 分钟
素明诚
Full stack development

iptables 基础命令

基本语法

iptables [-t table] command chain rule-specification [options]

常用命令

命令描述
-A, --append在指定链的末尾添加规则
-D, --delete删除指定的规则
-I, --insert在指定位置插入规则
-L, --list列出指定链中的所有规则
-F, --flush清空指定链中的所有规则
-N, --new-chain创建新的用户自定义链
-X, --delete-chain删除用户自定义链
-P, --policy设置指定链的默认策略

常用示例

  1. 查看当前规则:
sudo iptables -L
  1. 允许特定端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  1. 允许特定 IP:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
  1. 删除特定规则:
sudo iptables -D INPUT 1

ufw 基础命令

常用命令

命令描述
ufw enable启用防火墙
ufw disable禁用防火墙
ufw status查看防火墙状态
ufw allow允许端口或服务
ufw deny拒绝端口或服务
ufw delete删除规则
ufw reset重置为默认设置

常用示例

  1. 开启防火墙:
sudo ufw enable
  1. 允许特定端口:
sudo ufw allow 80/tcp
  1. 允许特定服务:
sudo ufw allow ssh
  1. 删除规则:
sudo ufw delete allow 80

注意事项

  1. 在远程服务器上修改防火墙规则时要特别小心,确保不会把自己锁在外面
  2. 建议先添加允许 SSH 连接的规则,再添加其他规则
  3. 对于生产环境,建议使用 ufw,它更简单且不容易配置错误
  4. 重要的更改前先备份当前规则

Linux 下目录的用途和功能

· 阅读需 3 分钟
素明诚
Full stack development
目录用途描述
/bin存放基本的系统命令和程序,如 ls、cp 等,这些命令对所有用户都是可用的。
/boot包含启动 Linux 系统所需的文件,如内核和引导加载程序(如 GRUB)。
/dev包含设备文件,这些特殊文件代表或访问系统上的硬件设备。
/etc存放系统配置文件,如系统启动、运行所需的配置脚本和设置。
/home用户的主目录,通常每个用户有一个以用户名命名的目录。
/lib存放系统最基本的动态链接共享库,其功能类似于 Windows 里的 DLL 文件。
/lib32存放 32 位系统的库文件,主要用于在 64 位系统上支持 32 位应用。
/lib64存放 64 位系统的库文件。
/libx32存放用于支持 x32 ABI 的库文件,这种 ABI 允许在 64 位系统上运行 32 位代码。
/lost+found通常用于系统非正常关机后,存放 fsck 检查文件系统时恢复的文件。
/media用于挂载可移动媒体设备,如 CD-ROMs、USB 驱动器等。
/mnt临时挂载文件系统的传统挂载点。
/opt用于存放可选的应用软件包和数据文件。
/proc虚拟文件系统,表示系统内存中的进程信息,以文件系统的方式提供访问。
/root超级用户(系统管理员)的主目录。
/run一个临时文件系统,存放自系统启动以来的信息。如当前登录的用户和运行的服务。
/sbin存放系统管理命令,如用于启动、修复、恢复系统的命令。
/snap用于存放 Snap 应用程序包。
/srv存放一些服务启动之后需要访问的数据。
/swap.img一个文件,被用作交换空间;在某些配置中用文件而非分区作为交换空间。
/sys虚拟文件系统,提供对内核内部数据结构的访问,以及更改内核运行时设置的接口。
/tmp存放临时文件,系统重启时,此目录下的数据通常会被删除。
/usr用户应用程序和文件的存储目录,包含大多数用户安装的软件、库文件、文档等。
/var存放经常变化的文件,如日志文件、邮件队列等。

Ubuntu nano 启动鼠标滚动

· 阅读需 1 分钟
素明诚
Full stack development

nano 设置鼠标滚动

在某些版本的 nano 和在某些终端中,你可以启用鼠标支持,使得可以使用鼠标来移动光标和滚动文本。要尝试启用鼠标支持,你可以启动 nano 时加上 -m--mouse 选项:

nano -m filename

或者,你可以在 ~/.nanorc 文件(如果没有,就创建一个)中添加以下设置来永久启用鼠标支持:

set mouse

这个设置会允许你使用鼠标点击位置来移动光标,但是否能滚动取决于终端和 nano 的版本。

使用 micro

https://github.com/zyedidia/micro.git## 使用

一开始我只是想让 nano 开启默认的鼠标滚轮,后来发现了 micro 这款编辑器,推荐一下

micro 是一个现代的、易于使用的终端基文本编辑器,自带全面的鼠标支持

sudo apt install micro  # 在 Debian/Ubuntu 上安装

然后,使用 micro 打开文件

micro filename

24d016039b834699cc6b316d685eb49f

使用 ctrl + E 进入命令模式

quit  // 退出

如果您喜欢这篇文章,不妨给它点个赞并收藏,感谢您的支持!