1. Linux学习笔记:从零开始的系统探索
作为一名从Windows转向Linux的老用户,我清楚地记得第一次在终端输入ls命令时的新奇感。Linux系统以其强大的稳定性和灵活性,逐渐成为开发者、运维人员和技术爱好者的首选操作系统。与图形界面主导的Windows不同,Linux的精髓在于命令行——这个看似简单的文本界面背后,隐藏着操控整个系统的强大能力。
我最初接触Linux是为了搭建一个Web服务器,当时面对黑底白字的终端窗口完全不知所措。经过多年的使用和摸索,我整理出这套学习笔记,希望能帮助同样从Windows转来的新手避开我当年踩过的坑。本系列将从最基础的命令行操作开始,逐步深入到系统管理、网络配置等实用技能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Linux基础命令全解析
2.1 文件与目录操作核心命令
ls命令是每个Linux用户的起点,但它的参数组合才是真正发挥威力的地方:
bash复制ls -alh
这个组合中,-a显示所有文件(包括隐藏文件),-l以长格式显示详细信息,-h以人类可读的格式显示文件大小。我经常用这个命令检查目录内容,特别是当需要查看文件权限和所有者时。
cd命令看似简单,但有几个技巧很实用:
bash复制cd - # 返回上一个工作目录
cd ~ # 返回用户主目录
cp和mv命令在使用时容易混淆:
bash复制cp -r dir1 dir2 # 递归复制目录
mv file1 file2 # 重命名或移动文件
重要提示:Linux中没有回收站概念,
rm删除的文件很难恢复,建议新手先使用-i参数交互式删除:
bash复制rm -i filename
2.2 文本处理三剑客:grep、awk、sed
grep是文本搜索的利器,我最常用的组合是:
bash复制grep -rn "keyword" /path/to/search
-r表示递归搜索,-n显示行号,这在排查代码问题时特别有用。
awk特别适合处理结构化文本,比如提取日志中的特定字段:
bash复制awk '{print $1,$4}' access.log
sed则擅长流编辑,我最常用它来批量替换文件内容:
bash复制sed -i 's/old/new/g' filename
注意:
-i参数会直接修改文件内容,操作前建议先备份。
2.3 系统监控与进程管理
top命令是实时监控系统的首选,但它的交互式界面对新手不太友好。我推荐使用:
bash复制htop
需要先安装:
bash复制sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
查看磁盘使用情况:
bash复制df -h # 查看文件系统使用情况
du -sh * # 查看当前目录各文件/目录大小
管理服务的最常用命令:
bash复制systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl status nginx # 查看服务状态
3. Linux系统管理进阶
3.1 用户与权限管理
Linux的权限系统是其安全性的基石。查看文件权限:
bash复制ls -l filename
输出类似:
code复制-rw-r--r-- 1 user group 1024 Jun 1 10:00 filename
其中rw-r--r--表示所有者有读写权限,组用户和其他用户只有读权限。
修改权限的chmod命令:
bash复制chmod 755 script.sh # 所有者rwx,组和其他rx
chmod +x script.sh # 添加执行权限
用户管理常用命令:
bash复制sudo adduser newuser # 添加用户
sudo usermod -aG sudo newuser # 将用户加入sudo组
sudo passwd username # 修改用户密码
3.2 软件包管理
不同Linux发行版使用不同的包管理系统:
Ubuntu/Debian系列:
bash复制sudo apt update # 更新软件包列表
sudo apt install package # 安装软件包
sudo apt remove package # 移除软件包
CentOS/RHEL系列:
bash复制sudo yum install package # 安装软件包
sudo yum remove package # 移除软件包
查找软件包:
bash复制apt search keyword # Ubuntu/Debian
yum search keyword # CentOS/RHEL
3.3 网络配置与故障排查
查看IP地址:
bash复制ip a
或传统命令:
bash复制ifconfig
测试网络连通性:
bash复制ping google.com
traceroute google.com
查看网络连接:
bash复制netstat -tulnp # 查看监听端口
ss -tulnp # 更现代的替代方案
下载文件:
bash复制wget https://example.com/file.zip
curl -O https://example.com/file.zip
4. 实用技巧与常见问题解决
4.1 终端生产力提升技巧
使用history命令可以查看命令历史,配合grep快速找到之前执行的命令:
bash复制history | grep "apt install"
命令别名可以大幅提高效率,在~/.bashrc中添加:
bash复制alias ll='ls -alh'
alias update='sudo apt update && sudo apt upgrade'
然后执行:
bash复制source ~/.bashrc
使用tmux或screen可以在断开SSH连接后保持会话:
bash复制sudo apt install tmux
tmux new -s session_name
# 按Ctrl+b然后d分离会话
tmux attach -t session_name # 重新连接
4.2 常见问题解决方案
问题1:忘记sudo前缀导致权限不足
解决方法:不必重新输入整条命令,只需:
bash复制sudo !!
!!表示上一条命令。
问题2:误删重要文件
预防措施:
- 为
rm设置别名:
bash复制alias rm='rm -i'
- 使用
trash-cli替代rm:
bash复制sudo apt install trash-cli
alias rm='trash-put'
问题3:磁盘空间不足
快速定位大文件:
bash复制sudo du -ah / | sort -rh | head -n 20
问题4:进程占用端口
查找占用端口的进程:
bash复制sudo lsof -i :8080
sudo netstat -tulnp | grep 8080
然后使用kill终止进程:
bash复制sudo kill -9 PID
4.3 学习资源推荐
-
在线练习平台:
- Linuxzoo.net
- OverTheWire Bandit游戏
-
免费电子书:
- 《Linux命令行大全》
- 《鸟哥的Linux私房菜》
-
社区支持:
- Stack Overflow
- 各发行版官方论坛
-
进阶工具:
tldr- 简化的命令手册cheat.sh- 命令行速查工具
5. 环境配置与开发准备
5.1 开发环境搭建
安装编译工具链:
bash复制sudo apt install build-essential # Ubuntu/Debian
sudo yum groupinstall "Development Tools" # CentOS/RHEL
Python环境配置:
bash复制sudo apt install python3 python3-pip python3-venv
python3 -m venv myenv
source myenv/bin/activate
Node.js安装:
bash复制curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
5.2 服务器常见服务配置
Nginx基础配置:
bash复制sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
配置文件位于/etc/nginx/nginx.conf和/etc/nginx/sites-available/。
MySQL安装:
bash复制sudo apt install mysql-server
sudo mysql_secure_installation
5.3 备份与自动化
使用cron设置定时任务:
bash复制crontab -e
添加如下行每天凌晨3点备份:
code复制0 3 * * * tar -czf /backups/home_$(date +\%Y\%m\%d).tar.gz /home
简单备份脚本示例:
bash复制#!/bin/bash
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
tar -czf "$BACKUP_DIR/home_$DATE.tar.gz" /home
find $BACKUP_DIR -type f -mtime +7 -delete
6. 安全加固基础
6.1 SSH安全配置
编辑/etc/ssh/sshd_config:
code复制Port 2222 # 修改默认端口
PermitRootLogin no
PasswordAuthentication no # 仅允许密钥登录
重启SSH服务:
bash复制sudo systemctl restart sshd
生成SSH密钥对:
bash复制ssh-keygen -t ed25519
ssh-copy-id user@remote_host
6.2 防火墙配置
UFW(Uncomplicated Firewall)基本用法:
bash复制sudo ufw allow 22/tcp # 允许SSH
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
sudo ufw enable
查看状态:
bash复制sudo ufw status numbered
6.3 系统更新与漏洞修复
定期更新系统:
bash复制sudo apt update && sudo apt upgrade # Ubuntu/Debian
sudo yum update # CentOS/RHEL
检查需要重启的服务:
bash复制sudo needrestart -b
查看已安装的安全更新:
bash复制grep security /var/log/apt/history.log # Ubuntu/Debian
yum updateinfo list installed # CentOS/RHEL
7. 性能调优入门
7.1 系统监控工具
glances是一个全面的监控工具:
bash复制sudo apt install glances
glances
iotop监控磁盘I/O:
bash复制sudo apt install iotop
sudo iotop
nmon提供全面的性能数据:
bash复制sudo apt install nmon
nmon
7.2 内存优化
查看内存使用:
bash复制free -h
清理缓存:
bash复制echo 3 | sudo tee /proc/sys/vm/drop_caches
调整swappiness:
bash复制sudo sysctl vm.swappiness=10
永久生效需添加到/etc/sysctl.conf:
code复制vm.swappiness=10
7.3 磁盘I/O优化
测试磁盘速度:
bash复制sudo apt install hdparm
sudo hdparm -Tt /dev/sda
使用ionice调整I/O优先级:
bash复制ionice -c2 -n7 command
-c2表示最佳effort,-n7是最低优先级。
文件系统优化:
bash复制sudo tune2fs -o journal_data_writeback /dev/sda1 # ext4
sudo mount -o remount,noatime / # 禁用atime
8. 容器化与虚拟化入门
8.1 Docker基础
安装Docker:
bash复制sudo apt install docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
运行第一个容器:
bash复制docker run hello-world
常用命令:
bash复制docker ps -a # 查看所有容器
docker images # 查看镜像
docker exec -it container_id bash # 进入运行中的容器
8.2 LXC/LXD轻量级容器
安装LXD:
bash复制sudo apt install lxd
sudo lxd init
创建容器:
bash复制lxc launch ubuntu:20.04 mycontainer
lxc exec mycontainer -- bash
8.3 KVM虚拟化
检查虚拟化支持:
bash复制grep -E '(vmx|svm)' /proc/cpuinfo
安装KVM:
bash复制sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo adduser $USER libvirt
sudo adduser $USER kvm
创建虚拟机:
bash复制virt-install --name=vm1 --ram=2048 --vcpus=2 --disk size=20 --cdrom=/path/to/iso
9. 脚本编程实战
9.1 Bash脚本基础
一个简单的备份脚本示例:
bash复制#!/bin/bash
# 定义变量
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
tar -czf "$BACKUP_DIR/home_$DATE.tar.gz" /home
# 删除7天前的备份
find $BACKUP_DIR -type f -mtime +7 -delete
echo "Backup completed on $(date)"
脚本执行权限:
bash复制chmod +x backup.sh
./backup.sh
9.2 实用脚本示例
日志分析脚本:
bash复制#!/bin/bash
LOG_FILE="/var/log/nginx/access.log"
echo "Top 10 IP addresses:"
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | head -n 10
echo -e "\nTop 10 requested URLs:"
awk '{print $7}' $LOG_FILE | sort | uniq -c | sort -nr | head -n 10
系统监控脚本:
bash复制#!/bin/bash
# 监控CPU、内存、磁盘使用率
CPU=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
MEM=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
DISK=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
echo "CPU Usage: $CPU%"
echo "Memory Usage: $MEM%"
echo "Disk Usage: $DISK%"
# 超过阈值发送警告
WARNING=80
if (( $(echo "$CPU > $WARNING" | bc -l) )); then
echo "Warning: High CPU usage!" | mail -s "System Alert" admin@example.com
fi
9.3 脚本调试技巧
调试模式运行:
bash复制bash -x script.sh
在脚本中设置调试:
bash复制#!/bin/bash
set -x # 开启调试
# 脚本内容
set +x # 关闭调试
检查脚本语法:
bash复制bash -n script.sh
记录脚本输出:
bash复制./script.sh 2>&1 | tee output.log
10. 图形界面与远程访问
10.1 桌面环境安装
Ubuntu安装GNOME:
bash复制sudo apt install ubuntu-desktop
安装Xfce(轻量级):
bash复制sudo apt install xfce4
10.2 VNC远程桌面
安装TigerVNC:
bash复制sudo apt install tigervnc-standalone-server tigervnc-xorg-extension
配置VNC密码:
bash复制vncpasswd
启动VNC服务器:
bash复制vncserver :1 -geometry 1920x1080 -depth 24
10.3 X11转发
通过SSH转发X11:
bash复制ssh -X user@remote_host
运行图形程序:
bash复制gedit &
10.4 远程开发环境
使用VS Code远程开发:
- 安装Remote - SSH扩展
- 配置SSH连接
- 直接编辑远程文件
使用Jupyter Notebook远程访问:
bash复制jupyter notebook --no-browser --port=8889 --ip=0.0.0.0
然后通过SSH隧道访问:
bash复制ssh -L 8888:localhost:8889 user@remote_host
11. 文件系统深入理解
11.1 Linux文件系统架构
重要目录说明:
/bin:基本命令二进制文件/etc:系统配置文件/home:用户主目录/var:可变数据(日志等)/tmp:临时文件/usr:用户程序和数据
查看文件系统类型:
bash复制df -Th
11.2 磁盘分区与管理
查看磁盘信息:
bash复制sudo fdisk -l
lsblk
分区工具使用:
bash复制sudo fdisk /dev/sdb
# 交互式命令:n(新建),d(删除),w(写入)
格式化分区:
bash复制sudo mkfs.ext4 /dev/sdb1
挂载分区:
bash复制sudo mkdir /mnt/data
sudo mount /dev/sdb1 /mnt/data
永久挂载需添加到/etc/fstab:
code复制/dev/sdb1 /mnt/data ext4 defaults 0 2
11.3 文件权限深入
特殊权限:
- SUID(4):以文件所有者身份执行
- SGID(2):以文件所属组身份执行
- Sticky Bit(1):只有所有者能删除
设置特殊权限:
bash复制chmod 4755 file # 设置SUID
chmod 2755 dir # 设置SGID
chmod 1777 /tmp # 设置Sticky Bit
ACL(访问控制列表):
bash复制sudo apt install acl
setfacl -m u:username:rwx file
getfacl file
12. 内核与模块管理
12.1 内核信息查询
查看内核版本:
bash复制uname -r
cat /proc/version
查看加载的模块:
bash复制lsmod
模块详细信息:
bash复制modinfo module_name
12.2 内核参数调整
查看当前参数:
bash复制sysctl -a
临时修改:
bash复制sudo sysctl -w kernel.sysrq=1
永久修改:
bash复制echo "kernel.sysrq = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
12.3 编译自定义内核
安装依赖:
bash复制sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
获取内核源码:
bash复制wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.12.tar.xz
tar -xf linux-5.15.12.tar.xz
配置内核:
bash复制cd linux-5.15.12
make menuconfig
编译安装:
bash复制make -j$(nproc)
sudo make modules_install
sudo make install
更新GRUB:
bash复制sudo update-grub
13. 日志管理与分析
13.1 系统日志位置
主要日志文件:
/var/log/syslog:通用系统日志(Ubuntu)/var/log/messages:通用系统日志(RHEL/CentOS)/var/log/auth.log:认证日志/var/log/kern.log:内核日志/var/log/nginx/access.log:Nginx访问日志/var/log/mysql/error.log:MySQL错误日志
使用journalctl查看systemd日志:
bash复制journalctl -xe
journalctl -u nginx --since "2023-01-01" --until "2023-01-02"
13.2 日志轮转配置
logrotate配置文件示例(/etc/logrotate.d/nginx):
code复制/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reload
endscript
}
手动执行轮转:
bash复制sudo logrotate -vf /etc/logrotate.conf
13.3 日志分析工具
grep基础分析:
bash复制grep "ERROR" /var/log/syslog
grep -c "Failed password" /var/log/auth.log
awk高级分析:
bash复制awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
使用goaccess分析Web日志:
bash复制sudo apt install goaccess
goaccess /var/log/nginx/access.log --log-format=COMBINED
14. 备份与恢复策略
14.1 完整系统备份
使用dd命令备份整个磁盘:
bash复制sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
使用rsync增量备份:
bash复制sudo rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /backup/
14.2 数据库备份
MySQL备份:
bash复制mysqldump -u root -p --all-databases > all_databases.sql
PostgreSQL备份:
bash复制pg_dumpall -U postgres > pg_backup.sql
MongoDB备份:
bash复制mongodump --out /backup/mongodb
14.3 自动化备份方案
使用cron定时备份:
bash复制0 2 * * * /path/to/backup_script.sh
备份脚本示例:
bash复制#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups"
MYSQL_USER="backup"
MYSQL_PASS="password"
# MySQL备份
mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
# 文件备份
tar -czf $BACKUP_DIR/files_$DATE.tar.gz --exclude=$BACKUP_DIR /home /etc
# 保留最近7天备份
find $BACKUP_DIR -type f -mtime +7 -delete
15. 网络服务配置实战
15.1 Web服务器配置
Nginx虚拟主机配置示例(/etc/nginx/sites-available/example.com):
nginx复制server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
启用配置:
bash复制sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
15.2 数据库服务器优化
MySQL性能优化配置(/etc/mysql/my.cnf):
ini复制[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
query_cache_size = 64M
thread_cache_size = 8
max_connections = 100
15.3 邮件服务器基础
Postfix基础配置(/etc/postfix/main.cf):
ini复制myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
测试邮件发送:
bash复制echo "Test email" | mail -s "Test Subject" user@example.com
16. 高可用与负载均衡
16.1 Keepalived配置
安装Keepalived:
bash复制sudo apt install keepalived
配置示例(/etc/keepalived/keepalived.conf):
conf复制vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
192.168.1.100/24
}
}
16.2 HAProxy负载均衡
安装HAProxy:
bash复制sudo apt install haproxy
基础配置(/etc/haproxy/haproxy.cfg):
conf复制frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check
16.3 数据库主从复制
MySQL主库配置(/etc/mysql/my.cnf):
ini复制[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = example_db
从库配置:
ini复制[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = example_db
配置复制:
sql复制-- 在主库执行
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 在从库执行
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107;
START SLAVE;
17. 安全审计与入侵检测
17.1 基础安全扫描
使用lynis进行安全审计:
bash复制sudo apt install lynis
sudo lynis audit system
使用rkhunter检测rootkit:
bash复制sudo apt install rkhunter
sudo rkhunter --check
17.2 文件完整性检查
安装aide:
bash复制sudo apt install aide
初始化数据库:
bash复制sudo aideinit
每日检查:
bash复制sudo aide --check
17.3 入侵检测系统
安装snort:
bash复制sudo apt install snort
基本配置(/etc/snort/snort.conf):
conf复制ipvar HOME_NET 192.168.1.0/24
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
启动IDS模式:
bash复制sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
18. 性能调优实战
18.1 CPU性能优化
查看CPU信息:
bash复制lscpu
cat /proc/cpuinfo
调整CPU频率策略:
bash复制sudo apt install cpufrequtils
sudo cpufreq-set -g performance
18.2 内存优化
查看内存使用:
bash复制vmstat 1
调整内核参数(/etc/sysctl.conf):
conf复制vm.swappiness = 10
vm.vfs_cache_pressure = 50
18.3 磁盘I/O优化
使用ionice调整优先级:
bash复制ionice -c2 -n0 command
文件系统挂载选项优化(/etc/fstab):
conf复制UUID=xxx / ext4 defaults,noatime,nodiratime,commit=60 0 1
18.4 网络调优
内核网络参数优化:
conf复制net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
19. 自动化运维工具
19.1 Ansible基础
安装Ansible:
bash复制sudo apt install ansible
基础使用:
bash复制ansible all -m ping -i inventory.ini
ansible-playbook playbook.yml
简单playbook示例(playbook.yml):
yaml复制---
- hosts: webservers
become: yes
tasks:
- name: Ensure Nginx is installed
apt:
name: nginx
state: present
- name: Start Nginx service
service:
name: nginx
state: started
enabled: yes
19.2 监控系统部署
Prometheus安装:
bash复制wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
tar -xzf prometheus-*.tar.gz
cd prometheus-*
./prometheus --config.file=prometheus.yml
Node Exporter安装(用于收集主机指标):
bash复制wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar -xzf node_exporter-*.tar.gz
cd node_exporter-*
./node_exporter
19.3 日志集中管理
ELK Stack安装:
bash复制# Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-linux-x86_64.tar.gz
tar -xzf elasticsearch-*.tar.gz
cd elasticsearch-*/bin
./elasticsearch
# Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.15.1-linux-x86_64.tar.gz
tar -xzf logstash-*.tar.gz
cd logstash-*/bin
./logstash -e 'input { stdin { } } output { stdout {} }'
# Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.1-linux-x86_64.tar.gz
tar -xzf kibana-*.tar.gz
cd kibana-*/bin
./kibana
20. 云平台集成
20.1 AWS CLI配置
安装AWS CLI:
bash复制sudo apt install awscli
配置凭证:
bash复制aws configure
基本使用:
bash复制aws ec2 describe-instances
aws s3 ls
20.2 阿里云CLI工具
安装aliyun-cli:
bash复制wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar -xzvf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
配置:
bash复制aliyun configure
20.3 Terraform基础
安装Terraform:
bash复制wget https://releases.hashicorp.com/terraform/1.0.9/terraform_1.0.9_linux_amd64.zip
unzip terraform_*.zip
sudo mv terraform /usr/local/bin/
简单示例(main.tf):
hcl复制provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
初始化并应用:
bash复制terraform init
terraform plan
terraform apply
21. 嵌入式Linux开发
21.1 交叉编译环境
安装工具链:
bash复制sudo apt install gcc-arm-linux-gnueabihf
简单交叉编译:
bash复制arm-linux-gnueabihf-gcc -o hello hello.c
21.2 嵌入式系统构建
使用Buildroot构建:
bash复制wget https://buildroot.org/downloads/buildroot-2021.08.1.tar.gz
tar -xzf buildroot-*.tar.gz
cd buildroot-*
make menuconfig
make
21.3 内核裁剪与移植
获取内核源码:
bash复制git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
配置内核:
bash复制make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
编译内核:
bash复制make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)
22. 故障排查方法论
22.1 系统启动问题
查看启动日志:
bash复制journalctl -b
dmesg
修复GRUB:
bash复制sudo grub-install /dev/sda
sudo update-grub
22.2 性能问题排查
使用perf工具:
bash复制sudo apt install linux-tools-common linux-tools-generic
perf top
火焰图生成:
bash复制git clone https://github.com/brendangregg/FlameGraph
perf record -F 99 -a -g -- sleep 60
perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > perf.svg
22.3 网络问题排查
数据包捕获:
bash复制sudo tcpdump -i eth0 -w capture.pcap
分析HTTP流量:
bash复制tshark -r capture.pcap -Y "http"
22.4 存储问题排查
检查磁盘健康:
bash复制sudo smartctl -a /dev/sda
文件系统检查:
bash复制sudo fsck /dev/sda1
23. Linux桌面环境定制
23.1 主题与图标定制
安装主题工具:
bash复制sudo apt install gnome-tweaks
下载主题:
bash复制mkdir -p ~/.themes ~/.icons
wget https://github.com/theme/archive/master.zip -O theme.zip
unzip theme.zip -d ~/.themes
应用主题:
bash复制gnome-tweaks
23.2 快捷键自定义
查看当前快捷键:
bash复制gsettings list-recursively org.gnome.desktop.w
