# cat /etc/sudoers | egrep -v "^#|Defaults logfile"| egrep -i ":.*all|/su" ; cat /etc/sudoers.d/* | egrep -v "^#|Defaults logfile"| egrep -i ":.*all|/su"
[步骤] Rocky Linux & RHEL 本地缓存的软件包的安装
步骤一:将 yum 工具 & dnf 工具缓存下来的软件包设置为持续保存
# vi /etc/yum.conf
或者:
# vi /etc/dnf/dnf.conf
将部分内容修改如下:
......
keepcache = 1
步骤二:清空本地 yum 工具 & dnf 工具的缓存
# yum clean all
或者:
# dnf clean all
步骤三:将 yum 工具 & dnf 工具的软件包清单缓存到本地
# yum makecache
步骤四:将 yum 工具 & dnf 工具所有可以升级的软件包缓存到本地
# yum update --downloadonly
或者:
# dnf update --downloadonly
步骤五:显示已经缓存的软件包
5.1 显示所有已经缓存的软件包
# yum -C list
或者:
# dnf -C list
5.2 显示某个已经缓存的软件包
# yum -C list kernel
或者:
# dnf -C list kernel
(补充:这里以显示已经缓存的 kernel 软件包为例)
步骤六:使用 yum 工具 & dnf 工具缓存的所有软件包提到系统里现存的老的软件包
# yum -C update
或者:
# dnf -C update
[排错] 解决 Linux 启动时某些服务没有开机自启 (日志里报错: “deleted to break ordering cycle starting”)
报错代码
某些服务没有开机自启例如 NetworkManager.service
原因分析
在系统日志里可以类似 …… Job network.target/start deleted to break ordering cycle starting with …… 报错例如:
# cat /var/log/messages
Jan 1 10:09:24 server systemd[1]: network-online.target: Found ordering cycle on network.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on NetworkManager.service/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on basic.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on slices.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on mysql.slice/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on remote-fs.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on remote-fs-pre.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on iscsi.service/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Found dependency on network-online.target/start
Jan 1 10:09:24 server systemd[1]: network-online.target: Job network.target/start deleted to break ordering cycle starting with network-online.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found ordering cycle on NetworkManager.service/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on basic.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on slices.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on mysql.slice/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on remote-fs.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on remote-fs-pre.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on iscsi.service/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on network-online.target/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Found dependency on NetworkManager-wait-online.service/start
Jan 1 10:09:24 server systemd[1]: NetworkManager-wait-online.service: Job NetworkManager.service/start deleted to break ordering cycle starting with NetworkManager-wait-online.service/start
从案例中日志里的内容可以判断:
1) network.target/NetworkManager.service 启动
2) NetworkManager.service 作为基础服务依赖 basic.target
3) basic.target 依赖所有 slice 包括 mysql.slice
4) mysql.slice 依赖 iscsi.service/remote-fs.target/remote-fs-pre.target
5) iscsi.service/remote-fs.target/remote-fs-pre.target 依赖 network.target/NetworkManager.service
6) 系统为了防止启动时陷入死循环,systemd 报错 Job NetworkManager.service/start deleted to break ordering cycle 并放弃启动 NetworkManager.service
解决方法
取消不太重要的服务的依赖要求
# vi /etc/systemd/system/mysql.slice
将以下内容:
......
Before=slices.target
Wants=-.slice
After=-.slice remote-fs.target
......
修改为:
......
Before=slices.target
Wants=-.slice
After=-.slice #remote-fs.target
......
(
补充:
1) 这里以取消使用 /etc/systemd/system/mysql.slice 文件的服务的依赖要求为例
2) 这里以注释掉 After=-.slice remote-fs.target 中的 remote-fs.target 为例
)
[步骤] Linux 救援模式软件的安装 (把系统目录当作根目录前)
步骤一:挂载官方镜像
(步骤略)
步骤二:登录拯救模式
2.1 选择通过光盘启动
(步骤略)
2.2 进入拯救模式
(步骤略)
2.3 登录拯救模式
rescue login:root
步骤三:在救援模式确定系统的根 “/” 目录分区
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
步骤四:在救援模式将系统的根 “/” 分区挂载到救援模式的 /mnt 目录
# mount <root spartition> /mnt
步骤五:在救援模式将系统的光驱挂载到救援模式的 /mnt/mnt 目录
# mount /dev/sr0 /mnt/mnt
步骤六:重新安装 mount 软件
# rpm -ivh --root=/mnt /mnt/mnt/Module-Basesystem/x86_64/util-linux-2.39.3-150600.2.1.x86_64.rpm
(补充:这里以安装 util-linux-2.39.3-150600.2.1.x86_64.rpm 软件包为例)
步骤七:重启系统
7.1 从当前系统的根 “/” 目录切换回救援模式的根 “/” 目录
bash-4.3# exit
7.2 重启系统
tty1:rescue:~ # reboot
[排错] 解决 Linux 无法进入系统且 Linux 进入救援模式以后挂载系统目录时乱码
报错代码
Linux 无法进入系统,进入拯救模式后乱码
原因分析
mount 命令损坏,导致系统在启动的过程中无法挂载所有需要挂载的分区,例如 /boot 目录、根 “/” 分区等
解决方法
步骤一:挂载官方镜像
(步骤略)
步骤二:登录拯救模式
2.1 选择通过光盘启动
(步骤略)
2.2 进入拯救模式
(步骤略)
2.3 登录拯救模式
rescue login:root
步骤三:在救援模式确定系统的根 “/” 目录分区
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
步骤四:在救援模式将系统的根 “/” 分区挂载到救援模式的 /mnt 目录
# mount <root spartition> /mnt
步骤五:在救援模式将系统的光驱挂载到救援模式的 /mnt/mnt 目录
# mount /dev/sr0 /mnt/mnt
步骤六:重新安装 mount 软件
# rpm -ivh --root=/mnt /mnt/mnt/Module-Basesystem/x86_64/util-linux-2.39.3-150600.2.1.x86_64.rpm
(补充:这里以安装 util-linux-2.39.3-150600.2.1.x86_64.rpm 软件包为例)
步骤七:重启系统
7.1 从当前系统的根 “/” 目录切换回救援模式的根 “/” 目录
bash-4.3# exit
7.2 重启系统
tty1:rescue:~ # reboot
