[内容] Linux 分区建议

English

内容一:BIOS 分区建议

1.1 分区规划

/boot    >= 5G
/var/tmp >= 10G
/tmp     >= 10G
swap     >= 2G
/        all remaining space

1.2 标准分区和逻辑分区

/boot    Use standard partition
/var/tmp Use logical partition
/tmp     Use logical partition
swap     Use logical partition
/        Use logical partition

1.3 格式化

/boot    xfs
/var/tmp xfs
/tmp     xfs
swap     swap
/        xfs

1.4 挂载参数

/boot    defaults
/var/tmp rw,nosuid,nodev,noexec,relatime,strictatime
/tmp     rw,nosuid,nodev,noexec,relatime,strictatime
swap     defaults
/        defaults

内容二:EFI 分区建议

2.1 分区规划

/boot/efi >= 5G
/var/tmp  >= 10G
/tmp      >= 10G
swap      >= 2G
/         all remaining space

2.2 标准分区和逻辑分区

/boot/efi Use standard partition
/var/tmp  Use logical partition
/tmp      Use logical partition
swap      Use logical partition
/         Use logical partition

2.3 格式化

/boot/efi vfat
/var/tmp  xfs
/tmp      xfs
swap      swap
/         xfs

2.4 挂载参数

/boot/efi umask=0077,shortname=winnt 0 2
/var/tmp  rw,nosuid,nodev,noexec,relatime,strictatime
/tmp      rw,nosuid,nodev,noexec,relatime,strictatime
swap      defaults
/         defaults

[命令] Linux 命令 dnf (管理软件)

内容一: 帮助文档相关

1.1 显示 dnf 帮助信息

# dnf help

1.2 显示 dnf 子选项的帮助信息

# dnf help <option>

或者:

# dnf <option> help

内容二:软件包相关

2.1 安装软件包

2.1.1 交互式安装软件包
# dnf install <software>
2.1.2 非交互式安装软件包
# dnf -y install <software>

或者:

# dnf install <software> -y

2.2 删除软件包

2.2.1 交互式删除软件包
# dnf remove <software>
2.2.2 非交互式删除软件包
# dnf -y remove <software>

或者:

# dnf remove <software> -y

2.3 升级软件包

2.3.1 升级软件包
2.3.1.1 交互式升级软件包
# dnf update <software>
2.3.1.2 非交互式升级软件包
# dnf -y update <software>

或者:

# dnf update <software> -y
2.3.2 升级所有软件包
2.3.2.1 升级所有软件包
2.3.2.1.1 交互式升级所有软件包
# dnf update
2.3.2.1.2 非交互式升级所有软件包
# dnf -y update

或者:

# dnf update -y
2.3.2.2 升级所有软件包时允许删除冲突软件
2.3.2.2.1 交互式升级所有软件包时允许删除冲突软件
# yum update --best --allowerasing
2.3.2.2.1 非交互式升级所有软件包时允许删除冲突软件
# yum -y update --best --allowerasing

或者:

# yum update --best --allowerasing -y
2.3.2.3 升级除某软件外的所有软件包
2.3.2.3.1 交互式升级除某软件外的所有软件包
# dnf update --exclude=<software>
2.3.2.3.2 非交互式升级除某软件外的所有软件包
# dnf -y update --exclude=<software>

或者:

# dnf update --exclude=<software> -y
2.3.2.4 使用某 1 个配置文件升级所有软件包
2.3.2.4.1 交互式使用某 1 个配置文件升级所有软件包
# dnf ./yum.conf update

(补充:这里以使用 ./yum.conf 配置文件升级所有软件包为例)

2.3.2.4.2 非交互式使用某 1 个配置文件升级所有软件包
# dnf -y -c ./yum.conf update

(补充:这里以使用 ./yum.conf 配置文件升级所有软件包为例)

2.3.2.5 显示所有可以升级的软件包
# dnf check-update
2.3.2.6 显示所有升级后需要重启才生效的软件包
# dnf needs-restarting --reboothint

2.4 显示软件包

2.4.1 显示软件包
2.4.1.1 显示软件包
# dnf list <software>

或者:

# dnf list all | grep <software>
2.4.1.2 显示软件包详细信息
# dnf info <software>
2.4.1.3 显示软件包的所有可安装版本
# dnf list <software> --showduplicate  | sort -r
2.4.1.4 显示软件包来自某一个模块
2.4.1.4.1 显示软件包来自某一个模块的格式
# yum module provides <software>
2.4.1.4.2 显示软件包来自某一个模块的案例
# yum module provides ipa-client
Updating Subscription Management repositories.
Last metadata expiration check: 1:38:12 ago on Fri 26 Jul 2024 08:00:39 AM CST.
ipa-client-4.7.1-11.module+el8+2842+7481110c.x86_64
Module   : idm:DL1:820190227212412:5986f621:x86_64
Profiles : client common
Repo     : rhel-8-for-x86_64-appstream-rpms
Summary  : The Red Hat Enterprise Linux Identity Management system module

......

(补充:从这里的输出结果可以看出 ipa-client 软件包来自 idm 模块,版本是 DL1)

2.4.2 显示所有软件包
# dnf list all

内容三:软件组相关

3.1 安装软件组

3.1.1 交互式安装软件组
# dnf groupinstall <group>
3.1.2 非交互式安装软件组
# dnf -y groupinstall <group>

或者:

# dnf groupinstall <group> -y

3.2 删除软件组

3.2.1 交互式删除软件组
# dnf groupremove <group>
3.2.2 非交互式删除软件组
# dnf -y groupremove <group>

或者:

# dnf groupremove <group> -y

3.3 显示所有可用软件组

# dnf group list

内容四:安全相关

4.1 Errata

4.1.1 Errata
4.1.1.1 安装 Errata
4.1.1.1.1 交互式安装 Errata
# dnf update --advisory=<errata>
4.1.1.1.2 非交互式安装 Errata
# dnf -y update --advisory=<errata>

或者:

# dnf update --advisory=<errata> -y
4.1.1.2 显示 Errata 的详细信息
# dnf updateinfo <errata>
4.1.2 所有 Errata
4.1.2.1 安装所有 Errata
4.1.2.1.1 交互式安装所有 Errata
# dnf update-minimal --security
4.1.2.1.2 非交互式安装所有 Errata
# dnf -y update-minimal --security

或者:

# dnf update-minimal --security -y
4.1.2.2 显示所有 Errata 和相关软件版本
# dnf updateinfo list
4.1.2.3 显示所有 Errata 和相关的 CVE
# dnf updateinfo info security

4.2 CVE

4.2.1 CVE
4.2.1.1 安装 CVE
4.2.1.1.1 交互式安装 CVE
# dnf update --cve <CVE>
4.2.1.1.2 非交互式安装 CVE
# dnf -y update --cve <CVE>

或者:

# dnf update --cve <CVE> -y
4.2.2 所有 CVE
4.2.2.1 显示所有 CVE 和相关软件版本
# dnf updateinfo list cves
4.2.2.2 显示所有 CVE 和相关的 Errata
# dnf updateinfo info security

4.2 安全补丁

4.2.1 安全补丁
4.2.1.1 安装安全补丁
4.2.1.1.1 交互式安装安全补丁
# dnf update <security patch>
4.2.1.1.2 非交互式安装安全补丁
# dnf -y update <security patch>

或者:

# dnf update <security patch> -y
4.2.2 所有安全补丁
4.2.2.1 安装所有安全补丁
4.2.2.1.1 交互式安装所有安全补丁
# dnf update --security
4.2.2.1.2 非交互式安装所有安全补丁
# dnf -y update --security

或者:

# dnf update --security -y
4.2.2.2 显示所有安全补丁
# dnf check-update --security

内容五:软件源相关

5.1 显示所有软件源

# dnf repolist

5.2 缓存软件源列表

5.2.1 缓存所有已启用软件源列表
# dnf repolist
5.2.2 清除所有软件源列表缓存
# dnf clean all
5.2.3 保存所有软件源列表缓存
# dnf makecache

内容六:软件模块相关 (切换软件可用的版本)

6.1 软件模块相关的格式

6.1.1 显示软件模块
6.1.1.1 显示某个软件库来自某个软件模块
# yum module provides <software>
6.1.1.2 显示所有软件模块
# dnf module list
6.1.1.3 显示某个软件模块
# dnf module list | grep <software>
6.1.1.4 显示某个软件模块的详细信息
# dnf module info <module>
6.1.1.5 显示某个软件模块的某个模块流的详细信息
# dnf module info <module>:<stream>
6.1.2 重置软件模块
# dnf module reset <module>
6.1.3 设置软件模块
# dnf module enable <module>:<version>

6.2 切换软件模块的案例

6.2.1 检测当前软件兼容情况
# dnf distro-sync

(注意:需要确保这条命令执行有以后没有报错)

6.2.2 显示要切换软件模块的软件包属于哪个软件模块
# yum module provides podman

(补充:这里以显示 podman 软件包属于哪个软件模块为例)

6.2.3 显示所有软件模块
# dnf module list | grep podman
container-tools      rhel8 [d]       common [d]                               Most recent (rolling) versions of podman, buildah, skopeo, runc, conmon, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and updated as frequently as every 12 weeks.
container-tools      1.0             common [d]                               Stable versions of podman 1.0, buildah 1.5, skopeo 0.1, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and supported for 24 months.                                 
container-tools      2.0             common [d]                               Stable versions of podman 1.6, buildah 1.11, skopeo 0.1, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.    
container-tools      3.0             common [d]                               Stable versions of podman 3.0, buildah 1.19, skopeo 1.2, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.    
container-tools      4.0             common [d]                               Stable versions of podman 4.0, buildah 1.24, skopeo 1.6, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page. 

(补充:这里以显示所有和 podman 软件相关的软件模块为例)

6.2.4 设置软件模块
6.2.4.1 重置软件模块
# dnf module reset container-tools

(补充:这里以重置 container-tools 软件模块为例)

6.2.4.2 设置软件模块
# dnf module enable container-tools:3.0

(补充:这里以设置 container-tools 软件模块版本号为 3.0 为例)

或者:

# dnf module enable container-tools:rhel8


补充:
1) 这里以设置最新的 container-tools 软件模块版本号为例
2) 当站主在测试这条命令时,最新的 container-tools 软件模块版本号刚好是 3.0

(注意:有些时候只能设置成最新的软件模块版本号后才能升级到最新的软件)

6.2.4.3 显示设置 container-tools 软件模块版本号为 3.0 时 podman 软件的可用版本
# dnf list all | egrep ^podman\.x         
podman.x86_64                                           3.0.1-9.module+el8.6.0+14874+64436299                       rhel-8-for-x86_64-appstream-rpms 

(补充:可以看到此时 podman 软件的可用版本是 3.0.1-9)

6.2.5 重置软件模块
6.2.5.1 重置软件模块
# dnf module reset container-tools

(补充:这里以重置 container-tools 软件模块为例)

6.2.5.2 显示 container-tools 软件模块没有设置时 podman 软件的可用版本
# dnf list all | egrep ^podman\.x
podman.x86_64                                           2:4.0.2-6.module+el8.6.0+14877+f643d2d6                     rhel-8-for-x86_64-appstream-rpms

(补充:可以看到此时 podman 软件的可用版本是 2:4.0.2-6)

内容七:管理相关

7.1 显示 dnf 历史命令

# dnf history

7.2 显示 dnf 安装记录

# dnf history info

7.3 操作回滚

# dnf history
# dnf history undo <ID>

(补充:上面第 1 条命令会实现操作的 ID 号,在第 2 条命令中写入那个 ID 号就可以取消那次操作)

[内容] Linux 退出状态代码 (转载)

Linux Shell学习笔记:exit退出状态代码

inux提供$?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值。

正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错。

该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效。

 

自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用echo $?检查。

退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数。

 

 

退出状态代码:

0 命令成功完成

1通常的未知错误

2误用shell命令

126命令无法执行

127没有找到命令

128无效的退出参数

128+x使用Linux信号x的致命错误。

130使用Ctrl-C终止的命令

255规范外的退出状态

ubuntu下测试结果如下

    wl@wl-MS-7673:/home/python$ date
     
    2013年 11月 14日 星期四 19:12:45 CST
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    0
     
    wl@wl-MS-7673:/home/python$ kkllk
     
    kkllk: command not found
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    127
     
    wl@wl-MS-7673:/home/python$ ls
     
    hello.py hello.py~
     
    wl@wl-MS-7673:/home/python$ vim a.c
     
    wl@wl-MS-7673:/home/python$ ls
     
    hello.py hello.py~
     
    wl@wl-MS-7673:/home/python$ gedit a.c
     
    wl@wl-MS-7673:/home/python$ ./hello.py
     
    bash: ./hello.py: 权限不够
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    126
     
    wl@wl-MS-7673:/home/python$ date %t
     
    date: 无效的日期"%t"
     
    wl@wl-MS-7673:/home/python$ echo $?
     
    1
     
    wl@wl-MS-7673:/home/python$


 

    root@wl-MS-7673:~# ls -sail test
     
    790207 4 -rwxr--r-- 1 root root 30 11月 14 19:25 test
     
    root@wl-MS-7673:~# ./test
     
    root@wl-MS-7673:~# echo $?
     
    44
     
    root@wl-MS-7673:~# cat test
     
    #!/bin/bash
     
    var=300
     
    exit $var
     
    root@wl-MS-7673:~#

————————————————
版权声明:本文为CSDN博主「ChasingdreamLY」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26591517/article/details/82492829

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z

[排错] 解决 Linux 发送邮件时报错 “send-mail: fatal: parameter inet_interfaces: no local interface found for ::1”

报错代码

send-mail: fatal: parameter inet_interfaces: no local interface found for ::1

解决方法

步骤一:修改 postfix 的配置文件

# vim /etc/postfix/main.cf

将以下内容:

......
inet_interfaces = localhost
......
inet_protocols = all
......

修改为:

......
inet_interfaces = all
......
inet_protocols = all
......

步骤二:重启 postfix 服务

# systemctl restart postfix

[内容] Linux 前台命令的后台执行 (GNOME 版)

内容一:直接执行前台命令

1.1 设置显示变量

# export DISPLAY=":0"

1.2 执行前台命令

# gnome-terminal -x bash -c "ls; exec bash"

(补充:这里以从后台在前台执行 1 次 ls 命令为例)

(注意:此种方法只对连接了显示器的真机 GNOME 桌面有效,对虚拟机的 GNOME 桌面无效)

内容二:周期执行前台命令

# crontab -e

添加以下内容:

......
*/1 * * * * export DISPLAY=":0" && gnome-terminal -x bash -c "ls; exec bash"

(补充:这里以每 1 分钟从后台在前台执行 1 次 ls 命令为例)

(注意:此种方法只对连接了显示器的真机 GNOME 桌面有效,对虚拟机的 GNOME 桌面无效)