1. Linux命令基础与核心概念
Linux命令是操作系统的核心交互方式,也是每位开发者必须掌握的生存技能。与图形界面不同,命令行提供了更直接、高效的系统控制能力。我在多年的运维工作中发现,熟练掌握命令行工具的开发者和系统管理员,其工作效率往往是普通用户的3-5倍。
Linux命令本质上都是可执行程序,主要存放在/bin、/sbin、/usr/bin等目录下。当我们在终端输入命令时,shell会按照PATH环境变量定义的路径顺序查找对应的可执行文件。理解这一点很重要 - 当你遇到"command not found"错误时,首先应该检查的是命令是否安装以及PATH设置是否正确。
提示:使用
type命令可以查看某个命令的类型和位置,例如type ls会显示ls是内置命令还是外部程序及其路径。
1.1 命令基本结构解析
一个完整的Linux命令通常由以下部分组成:
命令 [选项] [参数]- 命令:要执行的操作,如ls、cd等
- 选项:修改命令行为的标志,通常以-或--开头
- 参数:命令操作的对象,如文件名、目录名等
例如在ls -l /home这个命令中:
ls是命令本身-l是选项(长格式显示)/home是参数(要列出的目录)
1.2 命令帮助系统
Linux提供了完善的命令帮助系统,我强烈建议养成查阅帮助文档的习惯而不是直接搜索。主要帮助命令包括:
man命令:最全面的手册,例如man ls--help选项:快速查看用法,如ls --helpinfo命令:更详细的文档,如info coreutils
注意:在查阅帮助文档时,/键可以搜索内容,n键查找下一个匹配项,q键退出。
2. 文件与目录操作命令精要
2.1 基础文件操作
ls命令可能是使用频率最高的命令之一,但很多人只停留在基本用法。以下是我总结的高级技巧:
# 按文件大小排序显示(S大写) ls -lS # 显示隐藏文件并标记文件类型 ls -aF # 递归列出子目录内容并以颜色区分 ls -R --color=autocp和mv命令使用时有一些重要注意事项:
- 使用
-i选项可以避免意外覆盖文件 mv命令在不同分区间移动文件实际上是复制+删除操作- 复制大文件时建议使用
rsync而非cp
2.2 目录操作进阶
cd命令有几个实用技巧:
# 返回上一个工作目录 cd - # 快速返回家目录 cd ~ # 或者直接 cd # 使用pushd/popd管理目录栈 pushd /path/to/dir1 pushd /path/to/dir2 popd # 返回dir1find命令是文件搜索的瑞士军刀,我常用的复杂查询示例:
# 查找7天内修改过的php文件 find /var/www -name "*.php" -mtime -7 # 查找大于10MB的文件并列出详细信息 find / -size +10M -exec ls -lh {} \; # 查找所有空目录 find . -type d -empty3. 文本处理与系统监控
3.1 文本处理三剑客
grep、awk和sed构成了Linux文本处理的黄金组合。以下是我工作中积累的实用案例:
# 统计nginx日志中每个IP的访问次数 awk '{print $1}' access.log | sort | uniq -c | sort -nr # 替换文件中的字符串并备份原文件 sed -i.bak 's/old/new/g' file.txt # 提取docker容器的ID docker ps | awk '{print $1}' | grep -v "CONTAINER"3.2 系统监控命令
top命令的替代品htop提供了更友好的界面,安装和使用:
# Ubuntu/Debian sudo apt install htop # CentOS/RHEL sudo yum install htop # 使用F2进入设置界面可以自定义显示 htopdf和du组合使用可以精确掌握磁盘使用情况:
# 查看磁盘剩余空间(人类可读格式) df -h # 找出当前目录下最大的10个文件 du -ah . | sort -rh | head -n 104. 网络与进程管理
4.1 网络相关命令
netstat虽然被标记为过时,但在很多场景仍然实用:
# 查看所有TCP连接 netstat -ant # 查看监听端口 netstat -tulnpss是更现代的替代方案,速度更快:
# 显示所有TCP连接 ss -t -a # 显示进程使用的端口 ss -ltnpcurl和wget的区别和使用场景:
curl更适合API交互和复杂请求wget更适合下载文件和递归抓取
4.2 进程管理技巧
ps命令的常用组合:
# 显示所有进程完整信息 ps aux # 树状显示进程关系 ps -ef --forest # 查找特定进程 ps aux | grep nginxkill命令的正确使用方式:
# 先尝试优雅终止 kill -15 PID # 强制终止 kill -9 PID # 杀死所有匹配进程 pkill -f "pattern"5. 权限与用户管理
5.1 文件权限深度解析
Linux权限系统基于三组权限:所有者(u)、所属组(g)和其他用户(o)。每个权限用三位二进制表示(rwx),对应数字4、2、1。
修改权限的两种方式:
# 数字方式 chmod 755 file.sh # 符号方式 chmod u+x,g-w,o=r file.sh特殊权限位:
- SUID(4):执行时以文件所有者身份运行
- SGID(2):执行时以文件所属组身份运行
- Sticky(1):目录下文件只有所有者能删除
5.2 用户与组管理
创建用户时的最佳实践:
# 创建系统用户(无家目录) useradd -r -s /sbin/nologin mysql # 创建普通用户并指定shell useradd -m -s /bin/bash username # 设置密码 passwd username用户组管理命令:
# 创建组 groupadd developers # 将用户加入组 usermod -aG developers username # 查看用户所属组 groups username6. 实用工具与技巧
6.1 终端多路复用器
tmux是提高终端效率的神器,基本用法:
# 新建会话 tmux new -s session_name # 分离会话(后台运行) Ctrl+b d # 列出会话 tmux ls # 重新连接 tmux attach -t session_name6.2 命令组合与历史
命令组合的几种方式:
# 顺序执行(无论前一个是否成功) command1; command2 # 只有前一个成功才执行下一个 command1 && command2 # 只有前一个失败才执行下一个 command1 || command2历史命令的实用技巧:
# 搜索历史命令 Ctrl+r # 重复上条命令 !! # 重复上条命令的最后一个参数 !$7. 常见问题排查
7.1 命令找不到问题
当遇到"command not found"时,排查步骤:
- 检查命令是否拼写错误
- 使用
which或type确认命令是否存在 - 检查PATH环境变量是否包含命令所在目录
- 确认命令是否已安装
7.2 权限被拒绝问题
遇到"Permission denied"时的解决方案:
- 检查当前用户是否有权限(
ls -l) - 尝试使用
sudo(如果用户有sudo权限) - 检查SELinux状态(
getenforce) - 检查文件系统是否以只读方式挂载
7.3 磁盘空间不足
快速定位大文件的步骤:
# 查看磁盘使用情况 df -h # 找出大文件 du -ah / | sort -rh | head -n 20 # 或者使用ncdu工具 sudo apt install ncdu ncdu /8. 命令效率优化
8.1 命令别名设置
在~/.bashrc中添加常用别名可以大幅提高效率:
alias ll='ls -alF' alias grep='grep --color=auto' alias ..='cd ..' alias h='history'8.2 Shell脚本基础
简单的脚本示例:
#!/bin/bash # 检查参数 if [ $# -ne 1 ]; then echo "Usage: $0 directory" exit 1 fi # 检查目录是否存在 if [ ! -d "$1" ]; then echo "Error: $1 is not a directory" exit 2 fi # 统计文件类型 echo "File type statistics for $1:" find "$1" -type f | awk -F. '{print $NF}' | sort | uniq -c | sort -nr8.3 性能监控命令
dstat是一个全能系统监控工具:
# 安装 sudo apt install dstat # 使用(每秒刷新) dstat -cdngyiotop监控磁盘I/O:
sudo iotop -o9. 安全相关命令
9.1 SSH安全配置
最佳实践配置(/etc/ssh/sshd_config):
PermitRootLogin no PasswordAuthentication no AllowUsers yourusername Port 2222 # 修改默认端口9.2 防火墙管理
ufw简化了iptables配置:
# 允许SSH sudo ufw allow 22/tcp # 允许特定IP sudo ufw allow from 192.168.1.100 # 启用防火墙 sudo ufw enable9.3 日志检查
关键日志文件位置:
/var/log/auth.log:认证日志/var/log/syslog:系统日志/var/log/nginx/error.log:Nginx错误日志
检查登录失败的尝试:
grep "Failed password" /var/log/auth.log10. 容器与虚拟化命令
10.1 Docker基础命令
常用Docker命令示例:
# 查看运行中的容器 docker ps # 查看所有容器 docker ps -a # 启动/停止容器 docker start/stop container_name # 进入容器shell docker exec -it container_name /bin/bash10.2 虚拟机管理
virsh管理KVM虚拟机:
# 列出所有虚拟机 virsh list --all # 启动虚拟机 virsh start vm_name # 查看虚拟机信息 virsh dominfo vm_name11. 开发相关命令
11.1 版本控制
Git常用命令备忘:
# 克隆仓库 git clone https://github.com/user/repo.git # 查看状态 git status # 添加所有更改 git add . # 提交更改 git commit -m "message" # 推送更改 git push origin branch_name11.2 编译与构建
make命令的基本使用:
# 通常的编译流程 ./configure make sudo make install # 并行编译(加快速度) make -j$(nproc)12. 系统服务管理
12.1 systemd基础
管理系统服务:
# 启动服务 sudo systemctl start service_name # 停止服务 sudo systemctl stop service_name # 查看服务状态 sudo systemctl status service_name # 启用开机启动 sudo systemctl enable service_name12.2 日志查看
journalctl查看系统日志:
# 查看特定服务日志 journalctl -u nginx # 实时查看日志 journalctl -f # 按时间筛选 journalctl --since "2023-01-01" --until "2023-01-02"13. 环境配置与管理
13.1 环境变量设置
持久化环境变量的方法:
# 对当前用户生效 echo 'export PATH=$PATH:/new/path' >> ~/.bashrc source ~/.bashrc # 对所有用户生效(需要root) echo 'export VAR=value' >> /etc/environment13.2 软件包管理
不同发行版的包管理命令:
| 操作 | Debian/Ubuntu (apt) | RHEL/CentOS (yum/dnf) | Arch (pacman) |
|---|---|---|---|
| 安装 | sudo apt install pkg | sudo yum install pkg | sudo pacman -S pkg |
| 更新 | sudo apt update | sudo yum update | sudo pacman -Syu |
| 搜索 | apt search term | yum search term | pacman -Ss term |
14. 高级技巧与脚本
14.1 正则表达式应用
grep使用正则的高级示例:
# 匹配IP地址 grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' file # 匹配邮箱地址 grep -E '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}' file14.2 自动化脚本示例
自动备份脚本:
#!/bin/bash # 配置变量 BACKUP_DIR="/backups" SOURCE_DIR="/var/www" DB_USER="user" DB_PASS="password" DB_NAME="database" DATE=$(date +%Y%m%d) # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # 备份文件 tar -czf $BACKUP_DIR/$DATE/files.tar.gz $SOURCE_DIR # 备份数据库 mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DATE/db.sql # 删除7天前的备份 find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \; echo "Backup completed: $BACKUP_DIR/$DATE"15. 终端美化与效率
15.1 提示符定制
修改~/.bashrc自定义PS1:
# 彩色提示符 PS1='\[\e[32m\]\u@\h \[\e[34m\]\w \[\e[31m\]\$ \[\e[0m\]' # 添加git分支信息 parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } PS1='\[\e[32m\]\u@\h \[\e[34m\]\w\[\e[33m\]$(parse_git_branch)\[\e[31m\]\$ \[\e[0m\]'15.2 终端复用技巧
screen基础用法:
# 新建会话 screen -S session_name # 分离会话 Ctrl+a d # 列出会话 screen -ls # 恢复会话 screen -r session_name16. 硬件信息查询
16.1 系统信息
常用硬件信息命令:
# CPU信息 lscpu cat /proc/cpuinfo # 内存信息 free -h cat /proc/meminfo # 磁盘信息 lsblk fdisk -l16.2 PCI与USB设备
查看硬件设备:
# PCI设备 lspci -v # USB设备 lsusb -v # 硬件摘要 lshw -short17. 时间与计划任务
17.1 时间同步
配置NTP时间同步:
# 安装NTP sudo apt install ntp # 查看时间同步状态 timedatectl status # 手动同步 sudo ntpdate pool.ntp.org17.2 cron计划任务
管理定时任务:
# 编辑当前用户的任务 crontab -e # 查看任务列表 crontab -l # 删除所有任务 crontab -rcron表达式示例:
# 每天凌晨3点执行 0 3 * * * /path/to/script # 每5分钟执行 */5 * * * * /path/to/script # 每周一9点执行 0 9 * * 1 /path/to/script18. 文件传输与同步
18.1 SCP安全拷贝
scp基本用法:
# 本地复制到远程 scp file.txt user@remote:/path/ # 远程复制到本地 scp user@remote:/path/file.txt . # 递归复制目录 scp -r dir user@remote:/path/18.2 rsync高级同步
rsync是更强大的同步工具:
# 本地同步 rsync -avz /src/ /dest/ # 远程同步 rsync -avz -e ssh /src/ user@remote:/dest/ # 删除目标多余文件 rsync -avz --delete /src/ /dest/19. 压缩与归档
19.1 常见压缩工具
不同压缩格式的命令对比:
| 格式 | 压缩命令 | 解压命令 | 特点 |
|---|---|---|---|
| .gz | gzip file | gunzip file.gz | 快速压缩 |
| .bz2 | bzip2 file | bunzip2 file.bz2 | 较高压缩比 |
| .xz | xz file | unxz file.xz | 高压缩比 |
| .zip | zip archive.zip file | unzip archive.zip | 跨平台 |
| .tar | tar -cf archive.tar files | tar -xf archive.tar | 仅归档 |
19.2 组合使用示例
常用组合命令:
# 创建.tar.gz tar -czf archive.tar.gz files/ # 解压.tar.gz tar -xzf archive.tar.gz # 查看压缩包内容 tar -tzf archive.tar.gz20. 性能分析与优化
20.1 CPU性能分析
perf工具使用示例:
# 安装 sudo apt install linux-tools-common linux-tools-generic # 统计CPU使用 perf stat -B dd if=/dev/zero of=/dev/null count=1000000 # 记录调用图 perf record -g command perf report20.2 内存分析
valgrind检测内存问题:
# 安装 sudo apt install valgrind # 检测内存泄漏 valgrind --leak-check=yes ./program21. 内核与模块管理
21.1 内核信息查询
查看内核相关信息:
# 当前内核版本 uname -r # 加载的模块 lsmod # 模块信息 modinfo module_name21.2 模块管理
内核模块操作:
# 加载模块 sudo modprobe module_name # 移除模块 sudo modprobe -r module_name # 查看模块参数 cat /sys/module/module_name/parameters/*22. 系统启动与运行级别
22.1 启动过程分析
查看启动日志:
# 传统syslog dmesg # systemd日志 journalctl -b22.2 运行级别管理
systemd目标(相当于传统运行级别):
# 查看当前目标 systemctl get-default # 设置默认目标 sudo systemctl set-default multi-user.target # 切换目标 sudo systemctl isolate graphical.target23. 环境隔离与虚拟化
23.1 虚拟环境
Python虚拟环境创建:
# 创建 python3 -m venv myenv # 激活 source myenv/bin/activate # 退出 deactivate23.2 容器环境
使用podman作为docker替代:
# 运行容器 podman run -it ubuntu bash # 构建镜像 podman build -t myimage .24. 国际化与本地化
24.1 语言设置
查看和修改系统语言:
# 当前设置 locale # 可用语言包 locale -a # 生成语言环境 sudo locale-gen zh_CN.UTF-824.2 时区设置
修改时区:
# 查看当前时区 timedatectl # 列出可用时区 timedatectl list-timezones # 设置时区 sudo timedatectl set-timezone Asia/Shanghai25. 安全加固与审计
25.1 系统审计
auditd配置示例:
# 监控/etc/passwd修改 auditctl -w /etc/passwd -p wa -k passwd_changes # 查看日志 ausearch -k passwd_changes25.2 安全扫描
使用lynis进行安全审计:
# 安装 sudo apt install lynis # 运行扫描 sudo lynis audit system26. 网络调试与抓包
26.1 tcpdump使用
网络抓包示例:
# 抓取eth0网卡的所有HTTP流量 sudo tcpdump -i eth0 -A port 80 # 抓取特定主机的流量 sudo tcpdump host 192.168.1.100 # 保存到文件 sudo tcpdump -w capture.pcap26.2 网络测试工具
常用网络测试命令:
# 测试连通性 ping example.com # 跟踪路由 traceroute example.com # 测试端口 telnet example.com 80 nc -zv example.com 8027. 系统救援与恢复
27.1 单用户模式
进入单用户模式步骤:
- 重启系统
- 在GRUB菜单选择内核
- 按e编辑启动参数
- 在linux行末尾添加
single或init=/bin/bash - Ctrl+x启动
27.2 文件系统修复
fsck使用示例:
# 检查文件系统(未挂载) sudo fsck /dev/sda1 # 强制检查并修复 sudo fsck -y /dev/sda128. 日志轮转配置
28.1 logrotate设置
示例配置(/etc/logrotate.d/myapp):
/var/log/myapp/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 root adm sharedscripts postrotate systemctl reload myapp >/dev/null endscript }28.2 手动执行轮转
测试和运行logrotate:
# 测试配置 sudo logrotate -d /etc/logrotate.conf # 强制执行 sudo logrotate -f /etc/logrotate.conf29. 系统备份策略
29.1 全盘备份
使用dd命令备份磁盘:
# 备份整个磁盘到文件 sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress # 恢复备份 sudo dd if=/backup/sda.img of=/dev/sda bs=4M status=progress29.2 增量备份
rsync增量备份脚本:
#!/bin/bash SOURCE="/" DEST="/backup/$(date +%Y%m%d)" LINK_DEST="/backup/latest" mkdir -p "$DEST" rsync -a --delete --link-dest="$LINK_DEST" "$SOURCE" "$DEST" rm -f "$LINK_DEST" ln -s "$DEST" "$LINK_DEST"30. 命令组合与管道
30.1 复杂管道示例
分析日志的复杂管道:
# 统计nginx日志中每个URL的访问次数 cat access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20 # 监控目录变化并实时处理 inotifywait -m -r -e modify,create,delete /path | while read path action file; do echo "$file was $action in $path" done30.2 xargs高级用法
xargs并行处理示例:
# 多线程grep搜索 find . -type f -print0 | xargs -0 -P 4 grep "pattern" # 批量重命名 find . -name "*.jpg" | xargs -I {} mv {} {}.bak31. 终端快捷键与技巧
31.1 Bash快捷键
提高效率的快捷键:
- Ctrl+a:移动到行首
- Ctrl+e:移动到行尾
- Ctrl+u:删除到行首
- Ctrl+k:删除到行尾
- Ctrl+r:反向搜索历史
- Ctrl+l:清屏
- Alt+.:插入上一个命令的最后一个参数
31.2 命令行编辑
readline编辑技巧:
# 在~/.inputrc中添加 "\e[A": history-search-backward "\e[B": history-search-forward set show-all-if-ambiguous on set completion-ignore-case on32. 系统信息查询
32.1 综合信息工具
inxi提供全面系统信息:
# 安装 sudo apt install inxi # 显示完整系统信息 inxi -Fxz32.2 硬件详细信息
dmidecode获取硬件信息:
# BIOS信息 sudo dmidecode -t bios # 内存信息 sudo dmidecode -t memory # 系统信息 sudo dmidecode -t system33. 环境配置管理
33.1 配置文件管理
使用版本控制管理点文件:
# 初始化bare仓库 git init --bare $HOME/.cfg alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' # 添加文件 config add .bashrc config commit -m "Add bashrc" config push33.2 环境隔离
direnv自动加载环境:
# 安装 sudo apt install direnv # 在项目目录创建.envrc echo 'export PATH=$PATH:./bin' > .envrc direnv allow34. 系统调优与配置
34.1 内核参数调整
sysctl临时和永久修改:
# 查看所有参数 sysctl -a # 临时修改 sudo sysctl -w vm.swappiness=10 # 永久修改(/etc/sysctl.conf) echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf sudo sysctl -p34.2 文件系统优化
tune2fs调整ext4参数:
# 查看文件系统信息 sudo tune2fs -l /dev/sda1 # 禁用时间戳 sudo tune2fs -O ^has_journal /dev/sda1 # 调整保留块比例 sudo tune2fs -m 1 /dev/sda135. 容器编排命令
35.1 Docker Compose
常用命令示例:
# 启动服务 docker-compose up -d # 停止服务 docker-compose down # 查看日志 docker-compose logs -f35.2 Kubernetes基础
kubectl常用命令:
# 查看节点 kubectl get nodes # 部署应用 kubectl apply -f deployment.yaml # 查看pod kubectl get pods -A36. 远程管理技巧
36.1 SSH高级用法
SSH配置优化(~/.ssh/config):
Host * Compression yes ServerAliveInterval 60 TCPKeepAlive yes Host myserver HostName server.example.com User myuser Port 2222 IdentityFile ~/.ssh/myserver_key36.2 免密登录设置
配置SSH密钥认证:
# 生成密钥 ssh-keygen -t ed25519 # 复制公钥到服务器 ssh-copy-id user@host # 测试登录 ssh user@host37. 性能基准测试
37.1 CPU性能测试
sysbench测试CPU:
# 安装 sudo apt install sysbench # 运行测试 sysbench cpu --cpu-max-prime=20000 run37.2 磁盘IO测试
fio综合测试:
# 随机读写测试 fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting38. 系统清理与维护
38.1 清理旧内核
Ubuntu清理旧内核:
# 列出已安装内核 dpkg --list | grep linux-image # 删除旧内核(保留最新的2个) sudo apt purge $(dpkg -l | grep linux-image | awk '{print $2}' | head -n -2)38.2 包缓存清理
清理包管理器缓存:
# Debian/Ubuntu sudo apt clean sudo apt autoremove # RHEL/CentOS sudo yum clean all39. 系统监控仪表盘
39.1 使用netdata
安装和访问:
# 安装 bash <(curl -Ss https://my-netdata.io/kickstart.sh) # 访问 http://localhost:1999939.2 glances工具
glances使用:
# 安装 sudo apt install glances # 运行 glances # Web模式 glances -w40. 终端分屏工具
40.1 terminator使用
terminator分屏配置:
# 安装 sudo apt install terminator # 配置文件位置 ~/.config/terminator/config40.2 byobu增强
byobu基础命令:
# 启动 byobu # 新建窗口 F2 # 切换窗口 F3/F4 # 分屏 Ctrl+F241. 文件比较与合并
41.1 diff工具
文件比较命令:
# 简单比较 diff file1 file2 # 并排显示 diff -y file1 file2 # 递归比较目录 diff -r dir1 dir241.2 vimdiff使用
vimdiff合并文件:
vimdiff file1 file2 # 常用命令 ]c - 跳转到下一个差异 [c - 跳转到上一个差异 do - 获取对方修改 dp - 推送己方修改42. 密码与密钥管理
42.1 GPG加密
GPG基本用法:
# 生成密钥 gpg --full-generate-key # 加密文件 gpg -e -r recipient file # 解密文件 gpg -d file.gpg > file42.2 pass管理密码
pass密码管理器:
# 初始化 pass init "GPG Key ID" # 添加密码 pass insert Email/gmail # 查看密码 pass Email/gmail43. 系统诊断工具
43.1 strace跟踪
strace调试程序:
# 跟踪命令 strace ls # 统计系统调用 strace -c ls # 跟踪运行中进程 strace -p PID43.2 ltrace库调用
ltrace使用示例:
# 跟踪库调用 ltrace ls # 统计调用 ltrace -c ls44. 二进制文件分析
44.1 objdump反汇编
分析二进制文件:
# 查看段信息 objdump -h binary # 反汇编代码 objdump -d binary44.2 strings提取字符串
strings基本用法:
# 提取所有字符串 strings binary # 最小长度限制 strings -n 10 binary45. 系统调用参考
45.1 查询系统调用
查找系统调用信息:
# 列出所有系统调用 man syscalls # 查询特定调用 man 2 open45.2 系统调用表
查看系统调用号:
# x86_64系统调用表 cat /usr/include/x86_64-linux-gnu/asm/unistd_64.h46. 内核调试技巧
46.1 内核日志
查看内核消息:
# 实时查看 dmesg -wH # 查看特定级别 dmesg -l err,crit46.2 内核参数
运行时修改内核参数:
# 查看参数 cat /proc/sys/kernel/threads-max # 临时修改 echo 100000 > /proc/sys/kernel/threads-max47. 系统启动分析
47.1 启动时间优化
分析启动过程:
# 查看启动时间 systemd-analyze # 生成启动图表 systemd-analyze plot > boot.svg # 列出耗时服务 systemd-analyze blame47.2 服务依赖
查看服务依赖关系:
# 显示服务依赖树 systemd-analyze critical-chain service_name # 图形化显示 systemd-analyze dot | dot -Tsvg > deps.svg48. 虚拟文件系统
48.1 proc文件系统
常用/proc文件:
# CPU信息 cat /proc/cpuinfo # 内存使用 cat