Archlinux系统运维

本文将针对Archlinux下的系统运维进行介绍。

内核相关

查看当前内核版本

1
2
3
$ uname -r
------------------------------------------------------------------------
4.19.67-1-lts

内核版本更换

最新的内核版本滚动过于频繁,新增的许多特性也不稳定,因此将archlinux运行在稳定版本的内核上,即lts kernel

直接用pacman进行安装即可

旧内核删除

1
2
3
sudo rm -f /boot/vmlinuz-kernel_3.xxx
sudo rm -f /boot/initrd.img-kernel_3.xxx
sudo rm -rf /lib/modules/kernel_3.xxx

systemctl命令

服务管理

开启和停止服务

开启服务
1
2
sudo systemctl start mariadb.service      # 立即启动,一次性生效
sudo systemctl enable mariadb.service # 会在下一次boot后自动启动,如果需要开机自启动用enable
停止服务
1
2
systemctl stop mariadb.service
systemctl disable mariadb.service

检查运行失败的service

  1. 找到运行失败的service
1
2
3
$ systemctl --failed  
------------------------------------------------------------------------
systemd-modules-load.service loaded failed failed Load Kernel Modules
  1. 查看运行失败的原因
1
2
3
4
5
6
7
8
9
$ systemctl status systemd-modules-load.service
-----------------------------------------------------------------------
● systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: dis>
Active: failed (Result: exit-code) since Fri 2019-08-23 12:16:54 CST; 6min ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 190 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
Main PID: 190 (code=exited, status=1/FAILURE)
  1. 根据Main PID查看对应的问题
1
2
3
4
5
6
7
8
9
10
11
12
13
$ journalctl _PID=190
-----------------------------------------------------------------------
-- Logs begin at Thu 2019-04-25 23:48:52 CST, end at Fri 2019-08-23 12:24:50 CST. --
8月 23 12:16:54 husky systemd-modules-load[190]: Failed to find module 'vfs_monitor'
8月 23 12:16:54 husky systemd-modules-load[190]: Failed to find module 'vboxdrv'
8月 23 12:16:54 husky systemd-modules-load[190]: Failed to find module 'vboxpci'
8月 23 12:16:54 husky systemd-modules-load[190]: libkmod: kmod_config_parse: /etc/modprobe.d/iwlwif>
8月 23 12:16:54 husky systemd-modules-load[190]: libkmod: kmod_config_parse: /etc/modprobe.d/iwlwif>
8月 23 12:16:54 husky systemd-modules-load[190]: libkmod: kmod_config_parse: /etc/modprobe.d/iwlwif>
8月 23 12:16:54 husky systemd-modules-load[190]: libkmod: kmod_config_parse: /etc/modprobe.d/iwlwif>
8月 23 12:16:54 husky systemd-modules-load[190]: libkmod: kmod_config_parse: /etc/modprobe.d/iwlwif>
8月 23 12:16:54 husky systemd-modules-load[190]: Failed to find module 'vboxnetadp'
8月 23 12:16:54 husky systemd-modules-load[190]: Failed to find module 'vboxnetflt'
  1. 我们有一些module系统没有找到,因此在/etc/modules-load.d/下查看对应设置
1
2
3
ls -Al /etc/modules-load.d 
-----------------------------------------------------------------------
总用量 0

结果发现什么都没有,通过modinfo命令检查对应模块,发现找不到对应的模块

1
2
3
modinfo vfs_monitor
-----------------------------------------------------------------------
modinfo: ERROR: Module vfs_monitor not found.

查看日志

有些情况下,我们需要查看系统发生了哪些动作,此时需要命令journalctl,当不带任何选项时,该命令将会无脑输出所有日志记录,基本没什么用,我们要进行一些筛选。

检查高优先级错误

1
$ journalctl -p 3 -xb

清理文件系统

包管理

官方包管理 pacman

archlinux下的包管理软件为pacman(吃豆人),这个软件非常好用,能够有效解决不同包之间的依赖问题。

更新包数据库

1
sudo pacman -Syy

建议安装软件前先执行这个命令。

搜索包

搜索包的命令为:

1
pacman -Ss pacname

其中pacname为待搜索的包的名称

安装包

安装包的命令为:

1
sudo pacman -S pacname

删除包

删除包的命令为:

1
sudo pacman -Rs pacname

其中s表示没有被其他已经安装的软件包使用的依赖关系。

包查看

  • 查看所有已经安装的包:$pacman -Qq
  • 查看所有显式安装的包:$pacman -Qqe
  • 列出孤立包(并删除):pacman -Qqdt | sudo pacman -Rs -
  • 按照包大小排列:expac "%n %m" -l'\n' -Q $(pacman -Qq) | sort -rhk 2 | less

非官方包管理

对于一些非官方包,我们可以使用AUR(Archlinux user repository)进行管理。AUR是一个社区驱动的软件仓库,包含了非官方的软件或包

工具

我们使用yay对AUR中的包进行管理,下载命令如下:

1
2
3
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

安装包

1
$ sudo yay -S gparted

系统更新

Archlinux是滚动更新的系统,不支持局部更新,所以尽可能定期更新系统。更新系统的命令为

1
pacman -Syu

文件损坏处理

在有一些情况下,无效的或者已经损坏的文件可能会导致签名错误,从而使更新失败,这种情况的处理过程如下:

  1. 安装archlinux-keyring,这个包用于
0%