1. Linux服务器基础操作入门
作为一名长期与Linux服务器打交道的开发者,我深知命令行操作是每位技术人员必须掌握的生存技能。不同于Windows的图形界面,Linux系统的高效管理几乎全部依赖于命令行。这里我将分享多年来在Ubuntu服务器上最常用的命令集,这些命令构成了日常工作的基础骨架。
提示:所有命令示例均基于Ubuntu 22.04 LTS版本测试,其他Linux发行版可能存在细微差异。
1.1 终端操作与远程连接
SSH(Secure Shell)是连接远程Linux服务器的标准方式,其加密传输特性保障了操作安全。我常用的连接命令格式如下:
bash复制ssh username@server_ip -p port_number
其中-p参数指定非标准SSH端口(默认为22)。首次连接时会提示确认服务器指纹,输入yes后需要提供密码。为提高安全性,建议后续配置SSH密钥认证。
在终端操作中,这些快捷键能极大提升效率:
Ctrl + C:不仅是取消当前命令,当程序无响应时,它实际上是发送SIGINT信号终止前台进程Tab键补全:不仅能补全命令和文件名,还能补全命令参数(如git checkout br+Tab可补全分支名)Ctrl + R:反向搜索历史命令,输入关键词即可快速定位之前执行过的命令
1.2 文件系统导航基础
Linux文件系统采用树形结构,理解路径概念至关重要。pwd(Print Working Directory)命令看似简单,但在复杂目录结构中能快速定位当前位置。而cd命令的几个特殊用法值得注意:
bash复制cd - # 返回上一个工作目录
cd ~username # 切换到指定用户的家目录
ls命令的-lh组合参数非常实用,能以人类可读格式(KB/MB/GB)显示文件大小:
bash复制ls -lh /var/log # 查看日志目录文件详情
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录管理实战技巧
2.1 安全的文件操作
rm命令的破坏性众所周知,但通过alias设置可以增加安全防护。我通常在~/.bashrc中添加:
bash复制alias rm='rm -i' # 删除前确认
alias cp='cp -i' # 覆盖前确认
alias mv='mv -i' # 覆盖前确认
对于重要目录,使用chattr设置不可删除属性更为可靠:
bash复制sudo chattr +i /critical_directory # 禁止删除/修改
2.2 高级文件操作
find命令比简单的ls更强大,能根据多种条件搜索文件。例如查找7天内修改过的.log文件:
bash复制find /var/log -name "*.log" -mtime -7
rsync是比cp更优秀的文件同步工具,支持断点续传和增量备份:
bash复制rsync -avzP /source/ user@remote:/destination/ # 跨服务器同步
3. 文本处理与编辑器深度使用
3.1 Vim高效编辑技巧
Vim的学习曲线陡峭,但掌握后编辑效率极高。几个实用技巧:
:%s/old/new/g:全局替换文本gg=G:自动格式化整个文件缩进Ctrl+v进入可视块模式,可进行列编辑
配置~/.vimrc可以大幅提升体验:
vim复制set number " 显示行号
syntax on " 语法高亮
set tabstop=4 " Tab显示为4空格
set expandtab " 将Tab转为空格
3.2 文本分析工具链
grep配合正则表达式能实现复杂文本搜索。例如查找包含ERROR或WARN的日志行:
bash复制grep -E 'ERROR|WARN' app.log
awk是更强大的文本处理工具,例如统计Nginx日志中各IP的访问次数:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
4. 系统监控与进程管理
4.1 进程监控进阶
htop比传统top更直观,需要先安装:
bash复制sudo apt install htop
htop
ps命令的--forest参数能显示进程树结构,便于理解进程关系:
bash复制ps auxf
4.2 系统资源分析
free -h查看内存使用情况,df -h查看磁盘空间,du -sh *查看当前目录各文件/文件夹大小。组合使用可以快速定位资源瓶颈。
nmon工具提供全面的系统监控界面:
bash复制sudo apt install nmon
nmon
5. 网络配置与故障排查
5.1 网络诊断工具集
ping和traceroute是基础网络测试工具。更高级的mtr结合了两者功能:
bash复制sudo apt install mtr
mtr google.com
telnet测试端口连通性(需先安装):
bash复制sudo apt install telnet
telnet example.com 80
5.2 防火墙管理
Ubuntu默认使用ufw防火墙。常用操作:
bash复制sudo ufw status # 查看状态
sudo ufw allow 22/tcp # 开放SSH端口
sudo ufw enable # 启用防火墙
6. 软件包管理与环境配置
6.1 APT高级用法
apt的缓存清理和维护命令:
bash复制sudo apt autoremove # 删除无用包
sudo apt clean # 清理下载缓存
查找软件包依赖关系:
bash复制apt-cache depends package_name
6.2 第三方仓库管理
添加PPA仓库示例:
bash复制sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10
7. 数据库服务管理
7.1 PostgreSQL专项操作
安装PostgreSQL:
bash复制sudo apt install postgresql postgresql-contrib
常用管理命令:
bash复制sudo -u postgres psql # 进入交互终端
\list # 列出数据库
\connect dbname # 切换数据库
7.2 备份与恢复
PostgreSQL数据库备份:
bash复制sudo -u postgres pg_dump dbname > backup.sql
恢复备份:
bash复制sudo -u postgres psql dbname < backup.sql
8. 应用部署实战
8.1 SpringBoot应用管理
使用systemd管理SpringBoot服务更可靠。创建服务文件:
bash复制sudo nano /etc/systemd/system/myapp.service
示例服务配置:
ini复制[Unit]
Description=My SpringBoot App
After=syslog.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /path/to/app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
管理命令:
bash复制sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
8.2 日志轮转配置
使用logrotate管理应用日志,创建配置:
bash复制sudo nano /etc/logrotate.d/myapp
示例配置:
conf复制/path/to/app.log {
daily
rotate 7
compress
missingok
notifempty
create 644 appuser appuser
postrotate
systemctl restart myapp
endscript
}
9. 安全加固措施
9.1 SSH安全配置
编辑/etc/ssh/sshd_config重要参数:
conf复制PermitRootLogin no
PasswordAuthentication no
AllowUsers myuser
Port 2222
修改后重启服务:
bash复制sudo systemctl restart sshd
9.2 用户权限管理
创建受限用户并加入sudo组:
bash复制sudo adduser devuser
sudo usermod -aG sudo devuser
设置sudo无需密码(谨慎使用):
bash复制echo "devuser ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/devuser
10. 自动化运维技巧
10.1 定时任务管理
crontab是定时任务标准工具。编辑当前用户的任务:
bash复制crontab -e
示例每天备份:
conf复制0 2 * * * /usr/bin/pg_dump -U postgres dbname > /backups/db_$(date +\%Y\%m\%d).sql
10.2 批量操作工具
使用parallel并行执行命令:
bash复制sudo apt install parallel
ls *.log | parallel gzip # 并行压缩所有日志
11. 性能调优指南
11.1 系统参数优化
调整内核参数/etc/sysctl.conf:
conf复制vm.swappiness=10
net.core.somaxconn=4096
生效配置:
bash复制sudo sysctl -p
11.2 磁盘IO优化
使用ionice调整进程IO优先级:
bash复制ionice -c2 -n7 -p $(pgrep mysqld) # 设置MySQL为低IO优先级
12. 容器化部署
12.1 Docker基础操作
安装Docker:
bash复制sudo apt install docker.io
sudo systemctl enable --now docker
管理容器:
bash复制docker ps -a # 查看所有容器
docker stats # 实时资源监控
12.2 Docker Compose使用
安装Compose:
bash复制sudo apt install docker-compose
示例docker-compose.yml:
yaml复制version: '3'
services:
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
13. 故障排查手册
13.1 系统日志分析
查看系统日志:
bash复制journalctl -xe # 查看最新日志
journalctl -u nginx --since "1 hour ago" # 服务特定日志
13.2 性能问题诊断
使用perf进行性能分析:
bash复制sudo apt install linux-tools-common
perf top # 实时性能监控
14. 实用脚本集合
14.1 自动备份脚本
示例数据库备份脚本/usr/local/bin/backup_db.sh:
bash复制#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups"
DB_USER="postgres"
mkdir -p $BACKUP_DIR
pg_dump -U $DB_USER mydb | gzip > $BACKUP_DIR/mydb_$DATE.sql.gz
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete
14.2 日志清理脚本
示例日志清理脚本/usr/local/bin/clean_logs.sh:
bash复制#!/bin/bash
LOG_DIR="/var/log/myapp"
find $LOG_DIR -name "*.log*" -mtime +7 -exec rm -f {} \;
15. 终端环境定制
15.1 Bashrc优化
在~/.bashrc中添加实用配置:
bash复制# 彩色提示符
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# 命令别名
alias ll='ls -alF'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
15.2 历史命令优化
增强命令历史记录:
bash复制export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%F %T "
shopt -s histappend
16. 远程开发环境
16.1 SSH隧道应用
创建本地到远程的端口转发:
bash复制ssh -L 3306:localhost:3306 user@remote
这样本地3306端口就映射到了远程MySQL服务。
16.2 Visual Studio Code远程开发
安装Remote-SSH扩展后,可通过VSCode直接编辑远程文件,配合以下配置:
json复制{
"remote.SSH.showLoginTerminal": true,
"remote.SSH.defaultExtensions": [
"ms-vscode.cpptools",
"ms-python.python"
]
}
17. 版本控制集成
17.1 Git基础配置
设置全局Git配置:
bash复制git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global core.editor vim
17.2 常用Git工作流
典型功能分支工作流:
bash复制git checkout -b feature/new-module
# 开发完成后
git add .
git commit -m "Implement new module"
git push origin feature/new-module
# 创建PR/MR合并到主分支
18. 性能监控体系
18.1 Prometheus基础监控
安装Prometheus监控:
bash复制sudo apt install prometheus
sudo systemctl enable --now prometheus
18.2 Grafana可视化
安装Grafana:
bash复制sudo apt install grafana
sudo systemctl enable --now grafana-server
访问http://localhost:3000配置数据源和仪表盘。
19. 安全扫描工具
19.1 Lynis系统审计
安装运行Lynis:
bash复制sudo apt install lynis
sudo lynis audit system
19.2 ClamAV病毒扫描
安装运行病毒扫描:
bash复制sudo apt install clamav clamav-daemon
sudo freshclam # 更新病毒库
sudo clamscan -r /home # 扫描用户目录
20. 内核与驱动管理
20.1 内核版本操作
查看已安装内核:
bash复制dpkg --list | grep linux-image
删除旧内核(保留当前和上一个版本):
bash复制sudo apt purge $(dpkg --list | grep linux-image | awk '{print $2}' | tail -n +3)
20.2 硬件信息查询
查看PCI设备:
bash复制lspci -v
查看USB设备:
bash复制lsusb -v
查看CPU信息:
bash复制lscpu
21. 虚拟化技术
21.1 KVM虚拟化
安装KVM相关组件:
bash复制sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
验证安装:
bash复制virsh list --all
21.2 虚拟机管理
创建虚拟机:
bash复制virt-install \
--name myvm \
--ram 2048 \
--disk path=/var/lib/libvirt/images/myvm.qcow2,size=20 \
--vcpus 2 \
--os-type linux \
--os-variant ubuntu22.04 \
--network bridge=virbr0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'
22. 备份与恢复策略
22.1 系统全盘备份
使用dd命令创建磁盘镜像:
bash复制sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
22.2 增量备份方案
配置rsnapshot进行增量备份:
bash复制sudo apt install rsnapshot
编辑/etc/rsnapshot.conf:
conf复制interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
backup /home/ localhost/
backup /etc/ localhost/
23. 网络服务配置
23.1 Nginx基础配置
安装Nginx:
bash复制sudo apt install nginx
管理命令:
bash复制sudo nginx -t # 测试配置
sudo systemctl reload nginx # 重载配置
23.2 HTTPS证书配置
使用Certbot获取Let's Encrypt证书:
bash复制sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
自动续期测试:
bash复制sudo certbot renew --dry-run
24. 开发环境配置
24.1 Python多版本管理
安装pyenv:
bash复制curl https://pyenv.run | bash
使用示例:
bash复制pyenv install 3.10.6
pyenv global 3.10.6
24.2 Node.js环境配置
使用nvm管理Node版本:
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
nvm install 18
nvm use 18
25. 系统救援与修复
25.1 单用户模式修复
重启进入恢复模式:
- 重启系统,在GRUB菜单选择"Advanced options"
- 选择"recovery mode"内核
- 选择"root"进入单用户模式
25.2 文件系统修复
检查并修复文件系统:
bash复制fsck /dev/sda1
对于ext4文件系统:
bash复制e2fsck -f /dev/sda1
26. 时间同步配置
26.1 Chrony时间服务
安装配置Chrony:
bash复制sudo apt install chrony
sudo systemctl enable --now chronyd
检查同步状态:
bash复制chronyc tracking
chronyc sources
26.2 时区设置
修改时区:
bash复制sudo timedatectl set-timezone Asia/Shanghai
27. 内核模块管理
27.1 模块操作命令
查看已加载模块:
bash复制lsmod
加载/卸载模块:
bash复制sudo modprobe module_name
sudo rmmod module_name
27.2 模块参数配置
查看模块参数:
bash复制modinfo module_name
临时修改参数:
bash复制sudo modprobe module_name param=value
永久配置(在/etc/modprobe.d/中创建.conf文件)
28. 系统启动优化
28.1 启动服务管理
查看启动时间:
bash复制systemd-analyze blame
禁用不必要的服务:
bash复制sudo systemctl disable service_name
28.2 内核启动参数
编辑/etc/default/grub:
conf复制GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
更新GRUB:
bash复制sudo update-grub
29. 用户会话管理
29.1 多会话处理
查看当前登录用户:
bash复制who
向所有用户发送消息:
bash复制wall "系统将在5分钟后重启"
29.2 会话保持
使用screen保持会话:
bash复制sudo apt install screen
screen -S session_name # 新建会话
Ctrl+a d # 分离会话
screen -r session_name # 恢复会话
30. 高级权限管理
30.1 ACL权限控制
设置ACL权限:
bash复制sudo apt install acl
setfacl -m u:user:rwx /path/to/file
查看ACL:
bash复制getfacl /path/to/file
30.2 Sudo精细控制
配置sudo权限:
bash复制sudo visudo
示例配置:
conf复制%developers ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade
31. 磁盘管理进阶
31.1 LVM逻辑卷管理
创建物理卷:
bash复制sudo pvcreate /dev/sdb
创建卷组:
bash复制sudo vgcreate vg_data /dev/sdb
创建逻辑卷:
bash复制sudo lvcreate -L 100G -n lv_data vg_data
31.2 磁盘配额配置
启用配额:
bash复制sudo apt install quota
sudo edquota -u username
32. 环境变量管理
32.1 全局环境配置
系统级环境变量:
bash复制sudo nano /etc/environment
添加如:
conf复制JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
32.2 用户环境配置
用户级配置:
bash复制nano ~/.profile
添加如:
bash复制export PATH="$PATH:/home/user/bin"
33. 系统信息查询
33.1 硬件详细信息
查看主板信息:
bash复制sudo dmidecode -t baseboard
查看内存信息:
bash复制sudo dmidecode -t memory
33.2 系统运行时间
查看系统运行时间:
bash复制uptime
查看启动历史:
bash复制last reboot
34. 终端复用器
34.1 Tmux基础使用
安装Tmux:
bash复制sudo apt install tmux
基本操作:
bash复制tmux new -s session_name # 新建会话
Ctrl+b d # 分离会话
tmux attach -t session_name # 恢复会话
34.2 Tmux配置优化
~/.tmux.conf示例:
conf复制set -g mouse on
set -g base-index 1
set-window-option -g pane-base-index 1
35. 压缩与归档
35.1 高效压缩工具
使用pigz并行压缩:
bash复制sudo apt install pigz
tar -I pigz -cf archive.tar.gz directory/
35.2 分卷压缩
创建分卷压缩包:
bash复制tar czvf - directory/ | split -b 2G - archive.tar.gz.
解压分卷:
bash复制cat archive.tar.gz.* | tar xzvf -
36. 系统裁剪与优化
36.1 最小化安装
Ubuntu最小化安装:
bash复制sudo apt install ubuntu-minimal
36.2 服务精简
查看所有服务:
bash复制sudo systemctl list-unit-files --type=service
禁用图形界面:
bash复制sudo systemctl set-default multi-user.target
37. 日志集中管理
37.1 Rsyslog配置
编辑/etc/rsyslog.conf:
conf复制module(load="imudp")
input(type="imudp" port="514")
37.2 日志转发
转发日志到远程服务器:
conf复制*.* @remote-server:514
38. 网络存储挂载
38.1 NFS挂载
安装NFS客户端:
bash复制sudo apt install nfs-common
挂载远程目录:
bash复制sudo mount -t nfs server:/path /local/mountpoint
38.2 Samba配置
安装Samba客户端:
bash复制sudo apt install cifs-utils
挂载Samba共享:
bash复制sudo mount -t cifs //server/share /mnt -o username=user,password=pass
39. 系统快照管理
39.1 Timeshift备份
安装Timeshift:
bash复制sudo apt install timeshift
创建快照:
bash复制sudo timeshift --create --comments "Before major update"
39.2 快照恢复
从Live CD恢复:
- 启动Live环境
- 安装Timeshift
- 选择快照恢复
40. 内核调试工具
40.1 strace追踪
追踪系统调用:
bash复制strace -f -o trace.log command
40.2 ltrace库调用
追踪库函数调用:
bash复制ltrace -f -o trace.log command
41. 内存分析工具
41.1 Valgrind检测
内存泄漏检测:
bash复制sudo apt install valgrind
valgrind --leak-check=yes ./program
41.2 pmap分析
查看进程内存映射:
bash复制pmap -x $(pgrep process_name)
42. 系统基准测试
42.1 CPU性能测试
使用sysbench:
bash复制sudo apt install sysbench
sysbench cpu --cpu-max-prime=20000 run
42.2 磁盘IO测试
测试随机读写:
bash复制sysbench fileio --file-total-size=10G prepare
sysbench fileio --file-test-mode=rndrw run
sysbench fileio cleanup
43. 电源管理优化
43.1 TLP电源管理
安装TLP:
bash复制sudo apt install tlp tlp-rdw
sudo systemctl enable tlp
43.2 CPU频率调节
查看当前频率:
bash复制cpufreq-info
设置性能模式:
bash复制sudo cpufreq-set -g performance
44. 系统本地化配置
44.1 语言环境设置
查看可用locale:
bash复制locale -a
生成新locale:
bash复制sudo locale-gen zh_CN.UTF-8
44.2 输入法配置
安装fcitx:
bash复制sudo apt install fcitx fcitx-googlepinyin
设置环境变量:
bash复制export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
45. 蓝牙设备管理
45.1 蓝牙服务配置
安装蓝牙工具:
bash复制sudo apt install bluez blueman
扫描设备:
bash复制bluetoothctl
[bluetooth]# scan on
45.2 音频设备连接
连接蓝牙耳机:
bash复制[bluetooth]# pair MAC_ADDRESS
[bluetooth]# connect MAC_ADDRESS
46. 打印系统管理
46.1 CUPS打印服务
安装配置CUPS:
bash复制sudo apt install cups
sudo systemctl enable --now cups
访问http://localhost:631进行管理。
46.2 打印机驱动
安装通用驱动:
bash复制sudo apt install printer-driver-gutenprint
47. 虚拟终端管理
47.1 多终端切换
Linux默认有6个虚拟终端(tty1-tty6),通过Ctrl+Alt+F1到F6切换。F7通常返回图形界面。
47.2 终端字体设置
修改终端字体:
bash复制sudo dpkg-reconfigure console-setup
48. 系统温度监控
48.1 传感器检测
安装lm-sensors:
bash复制sudo apt install lm-sensors
sudo sensors-detect
查看温度:
bash复制sensors
48.2 过热保护
安装thermald:
bash复制sudo apt install thermald
sudo systemctl enable --now thermald
49. 内核头文件安装
49.1 开发环境准备
安装内核头文件:
bash复制sudo apt install linux-headers-$(uname -r)
49.2 DKMS模块管理
使用DKMS管理内核模块:
bash复制sudo apt install dkms
sudo dkms install module/version
50. 系统更新策略
50.1 自动化更新
配置无人值守更新:
bash复制sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
50.2 更新前快照
使用Timeshift创建更新前快照:
bash复制sudo timeshift --create --comments "Pre-update snapshot"
更新系统:
bash复制sudo apt update && sudo apt upgrade -y
