Linux User Guide

Linux 管理员简明指引

系统管理及常用命令

常用路径

目录 说明
/etc/redhat-release RedHat / CentOS 版本标识
/etc/issue.net Ubuntu 版本标识
/etc/os-release Alpine Linux 版本标识
/etc/environment 系统环境变量
/etc/sysctl.conf 内核参数配置文件,修改后执行 sudo sysctl -p 生效

固件升级

sudo fwupdmgr update -y

常用内核参数

参数 推荐值 作用
fs.inotify.max_user_watches 524288 文件事件

使用网易 APT 镜像

# 已安装服务
systemctl list-unit-files 
# Ubuntu
sudo vim /etc/apt/sources.list

# 执行以下 VIM 命令替换网易 APT 镜像
:%s/security.ubuntu.com/mirrors.163.com/g
:%s/cn.archive.ubuntu.com/mirrors.163.com/g
:%s/archive.ubuntu.com/mirrors.163.com/g

切换 TTY

实机 Console 环境下需要执行多任务时,通过 Ctrl + Alt + F1 ~ F7 切换不同交互终端,类似 Windows / Mac 的多桌面。

安装包管理

apt

命令 作用
sudo dpkg --configure -a 修复 apt 安装中的配置错误错误
dpkg -L <Apt Package Name> 检查 apt 软件包内容

yum

命令 作用
yum repolist --all 查看所有注册库
yum list installed 罗列已安装软件
yum group list 查询安装包信息
rpm2cpio RPM | cpio -idmv 查看 rpm 内容
dnf 命令 作用
dnf repoquery -l PACKAGE 查看包内容

添加常用工具

# 命令行添加 apt 库
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
# 网络工具:ifconfig, netstat, etc.
sudo apt-get install -y net-tools          # Ubuntu

# 编译工具
sudo apt-get install -y build-essential    # Ubuntu

配置命令行默认编辑器 

select-editor          # Ubuntu
vim ~/.selected_editor # 修改配置保存文件

设置时区 

sudo apt-get install tzdata  
sudo dpkg-reconfigure tzdata # Ubuntu

多语言支持

# Ubuntu
# 简体中文支持
sudo apt-get install `check-language-support -l zh-hans`
sudo apt-get install language-selector-gnome

打印 man 手册

man zsh | col -b > zsh.txt

文件管理

# 找出当前目录下的所有子目录,给其他用户访问权限。
find . -type d | xargs grep chmod o+x

# 打包文件夹及所有 link 的资源,而不是 link 本身。
tar czfh <压缩包名>.tar.gz <文件夹>

常用示例

命令 作用
tar zcf - TARGET_DIRECTORY | split -b 4096m - PACKAGE.tar.gz. tar.gz 4GB 分卷压缩,- 减号代表标准输入/输出
gzcat PACKAGE.tar.gz.* | tar xvf - tar.gz 合并解压
tar jcf - TARGET_DIRECTORY | split -b 10240m - PACKAGE.tar.bz2. bz2.gz 10GB 分卷压缩
bzcat PACKAGE.tar.bz2.* | tar xvf - bz2.gz 合并解压

Systemd

/etc/systemd/system.conf # Timeout 时长

网络管理

无线网卡

# Ubuntu 18
apt install network-manager
apt install ifmetric
route -n    # 确认路由优先级
nmtui

网卡随机启动

# RedHat & CentOS
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

新建网桥

# 桥接两块网卡
ifconfig bridge1 create
ifconfig bridge1 up addm en0 addm vmnet8

snap 代理

# 设置代理
sudo snap set system proxy.http="http://<proxy_addr>:<proxy_port>"
sudo snap set system proxy.https="http://<proxy_addr>:<proxy_port>"

# 取消代理
sudo snap unset system proxy.http
sudo snap unset system proxy.https

安全管理

# 生成18位16进制随机数
openssl rand -hex 18

添加常用 Key 

# Ubuntu 
sudo apt-get install gnupg-curl
sudo apt-key adv --fetch-key https://nginx.org/keys/nginx_signing.key
sudo apt-key adv --fetch-key https://download.docker.com/linux/ubuntu/gpg
sudo apt-key adv --fetch-key https://dl-ssl.google.com/linux/linux_signing_key.pub
sudo apt-key adv --fetch-key https://download.sublimetext.com/sublimehq-pub.gpg

SSH/SFTP

# 公钥位置
mkdir ~/.ssh/
touch ~/.ssh/authorized_keys

Ubuntu 可以从公开服务导入公钥,避免手动编辑以上文件:

命令 作用
ssh-import-id-gh GITHUB_ID 从 github 导入公钥
ssh-import-id-lp ID 从 launchpad.net 导入公钥

服务器端配置文件:/etc/ssh/sshd_config 

# 禁止密码登录
PasswordAuthentication no

# 禁止 root 用户登录
PremitRootLogin no

sudo 免密码

# sudo 免密码
# Ubuntu
sudo vim /etc/sudoers
# 在 %sudo   ALL=(ALL:ALL) ALL 那行下面按以下格式配置需要 sudo 免密码的用户,位置错误配置可能无效。
<需要免密码的用户名> ALL=(ALL) NOPASSWD: ALL

分配 sudo 组

# CentOS
usermod -a -G wheel USERNAME

# Ubuntu
usermod -a G sudo USERNAME

重置密码

启动到 Grub 菜单,按 E 键,编辑启动项。找到 linux 开始到配置行,在 ro 后面添加 init=/bin/bash,完成后按 Ctrl + X 键引导系统,出现提示符后,输入 mount –o remount,rw / 重新挂载系统为可写模式。使用 passwd 命令修改密码。

安装证书

参考不同操作系统版本,复制/上传根证书到制定位置,运行更新命令导入证书:

版本 证书位置 更新命令
CentOS 8 /etc/pki/ca-trust/source/anchors/ update-ca-trust extract
CentOS 9 /etc/pki/tls/certs/ca-bundle.crt
Ubuntu/Debian /usr/local/share/ca-certificates/ update-ca-certificates
Java keytool -import -keystore STORE -file KEY

Debian 系统需要 PEM 格式证书。 

# Ubuntu
# 复制 crt 证书到 /usr/local/share/ca-certificates
/usr/sbin/update-ca-certificates

# CentOS
# V6 /usr/local/share/ca-certificates
# V7 /etc/pki/ca-trust/source/anchors
/bin/update-ca-trust

磁盘

常用命令

# 测试磁盘速度
hdparm -tT /dev/vda1

LVM 相关

LVM 在 OS 和磁盘中间引入卷的概念,使 Linux 文件系统基于卷挂载,方便自由扩展存储容量。

# 安装 LVM 套件
apt install lvm2 # Ubuntu
# 通过 LVM 安装磁盘
fdisk /dev/sdc       n    w
fdisk -l
partprobe /dev/sdc1
fdisk -l
pvcreate /dev/sdc1
vgcreate content_vg /dev/sdc1
lvcreate -n content_lv -L 100G content_vg       # 先用大写 L 确定大小
lvcreate -n content_lv -l 25599 content_vg      # 再用小写 l 指定簇的精确大小
lvs
mkfs.ext4 /dev/content_vg/content_lv
mkdir MOUNT_PATH
mount /dev/content_vg/content_lv MOUNT_PATH

# 修改 /etc/fstab 自动挂载 LVM 分区
/dev/content_vg/content_lv MOUNT_PATH             ext4    defaults        0 0
# 扩展 LVM 分区
sudo lvextend -L+40G /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
命令 作用
lvm
vgs 显示 Volumn Groups 信息
lvs 显示 Logical Volumes 信息

Samba

默认安装的 Linux 服务器,即使设置了服务器名,还是需要通过 IP 来远程访问。Samba 服务可以让服务器通过 hostname 访问。

EL 7

yum install samba samba-client samba-common
systemctl enable nmb.service # 设置随机启动 NetBIOS 服务。
systemctl start nmb.service

电源管理

笔记本合盖不休眠

编辑 /etc/systemd/logind.conf 文件,添加一行 HandleLidSwitch=ignore, 重启 systemd-logind 服务。

# Ubuntu 16
sudo vim /etc/systemd/logind.conf

HandleLidSwitch=ignore

sudo service systemd-logind restart
Author: njun
njun's picture
Updated: 2023/09/30