Linux命令基础与高效运维实战指南
2026/9/7 17:39:51 网站建设 项目流程

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提供了完善的命令帮助系统,我强烈建议养成查阅帮助文档的习惯而不是直接搜索。主要帮助命令包括:

  1. man命令:最全面的手册,例如man ls
  2. --help选项:快速查看用法,如ls --help
  3. info命令:更详细的文档,如info coreutils

注意:在查阅帮助文档时,/键可以搜索内容,n键查找下一个匹配项,q键退出。

2. 文件与目录操作命令精要

2.1 基础文件操作

ls命令可能是使用频率最高的命令之一,但很多人只停留在基本用法。以下是我总结的高级技巧:

# 按文件大小排序显示(S大写) ls -lS # 显示隐藏文件并标记文件类型 ls -aF # 递归列出子目录内容并以颜色区分 ls -R --color=auto

cpmv命令使用时有一些重要注意事项:

  • 使用-i选项可以避免意外覆盖文件
  • mv命令在不同分区间移动文件实际上是复制+删除操作
  • 复制大文件时建议使用rsync而非cp

2.2 目录操作进阶

cd命令有几个实用技巧:

# 返回上一个工作目录 cd - # 快速返回家目录 cd ~ # 或者直接 cd # 使用pushd/popd管理目录栈 pushd /path/to/dir1 pushd /path/to/dir2 popd # 返回dir1

find命令是文件搜索的瑞士军刀,我常用的复杂查询示例:

# 查找7天内修改过的php文件 find /var/www -name "*.php" -mtime -7 # 查找大于10MB的文件并列出详细信息 find / -size +10M -exec ls -lh {} \; # 查找所有空目录 find . -type d -empty

3. 文本处理与系统监控

3.1 文本处理三剑客

grepawksed构成了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进入设置界面可以自定义显示 htop

dfdu组合使用可以精确掌握磁盘使用情况:

# 查看磁盘剩余空间(人类可读格式) df -h # 找出当前目录下最大的10个文件 du -ah . | sort -rh | head -n 10

4. 网络与进程管理

4.1 网络相关命令

netstat虽然被标记为过时,但在很多场景仍然实用:

# 查看所有TCP连接 netstat -ant # 查看监听端口 netstat -tulnp

ss是更现代的替代方案,速度更快:

# 显示所有TCP连接 ss -t -a # 显示进程使用的端口 ss -ltnp

curlwget的区别和使用场景:

  • curl更适合API交互和复杂请求
  • wget更适合下载文件和递归抓取

4.2 进程管理技巧

ps命令的常用组合:

# 显示所有进程完整信息 ps aux # 树状显示进程关系 ps -ef --forest # 查找特定进程 ps aux | grep nginx

kill命令的正确使用方式:

# 先尝试优雅终止 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 username

6. 实用工具与技巧

6.1 终端多路复用器

tmux是提高终端效率的神器,基本用法:

# 新建会话 tmux new -s session_name # 分离会话(后台运行) Ctrl+b d # 列出会话 tmux ls # 重新连接 tmux attach -t session_name

6.2 命令组合与历史

命令组合的几种方式:

# 顺序执行(无论前一个是否成功) command1; command2 # 只有前一个成功才执行下一个 command1 && command2 # 只有前一个失败才执行下一个 command1 || command2

历史命令的实用技巧:

# 搜索历史命令 Ctrl+r # 重复上条命令 !! # 重复上条命令的最后一个参数 !$

7. 常见问题排查

7.1 命令找不到问题

当遇到"command not found"时,排查步骤:

  1. 检查命令是否拼写错误
  2. 使用whichtype确认命令是否存在
  3. 检查PATH环境变量是否包含命令所在目录
  4. 确认命令是否已安装

7.2 权限被拒绝问题

遇到"Permission denied"时的解决方案:

  1. 检查当前用户是否有权限(ls -l
  2. 尝试使用sudo(如果用户有sudo权限)
  3. 检查SELinux状态(getenforce
  4. 检查文件系统是否以只读方式挂载

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 -nr

8.3 性能监控命令

dstat是一个全能系统监控工具:

# 安装 sudo apt install dstat # 使用(每秒刷新) dstat -cdngy

iotop监控磁盘I/O:

sudo iotop -o

9. 安全相关命令

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 enable

9.3 日志检查

关键日志文件位置:

  • /var/log/auth.log:认证日志
  • /var/log/syslog:系统日志
  • /var/log/nginx/error.log:Nginx错误日志

检查登录失败的尝试:

grep "Failed password" /var/log/auth.log

10. 容器与虚拟化命令

10.1 Docker基础命令

常用Docker命令示例:

# 查看运行中的容器 docker ps # 查看所有容器 docker ps -a # 启动/停止容器 docker start/stop container_name # 进入容器shell docker exec -it container_name /bin/bash

10.2 虚拟机管理

virsh管理KVM虚拟机:

# 列出所有虚拟机 virsh list --all # 启动虚拟机 virsh start vm_name # 查看虚拟机信息 virsh dominfo vm_name

11. 开发相关命令

11.1 版本控制

Git常用命令备忘:

# 克隆仓库 git clone https://github.com/user/repo.git # 查看状态 git status # 添加所有更改 git add . # 提交更改 git commit -m "message" # 推送更改 git push origin branch_name

11.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_name

12.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/environment

13.2 软件包管理

不同发行版的包管理命令:

操作Debian/Ubuntu (apt)RHEL/CentOS (yum/dnf)Arch (pacman)
安装sudo apt install pkgsudo yum install pkgsudo pacman -S pkg
更新sudo apt updatesudo yum updatesudo pacman -Syu
搜索apt search termyum search termpacman -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}' file

14.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_name

16. 硬件信息查询

16.1 系统信息

常用硬件信息命令:

# CPU信息 lscpu cat /proc/cpuinfo # 内存信息 free -h cat /proc/meminfo # 磁盘信息 lsblk fdisk -l

16.2 PCI与USB设备

查看硬件设备:

# PCI设备 lspci -v # USB设备 lsusb -v # 硬件摘要 lshw -short

17. 时间与计划任务

17.1 时间同步

配置NTP时间同步:

# 安装NTP sudo apt install ntp # 查看时间同步状态 timedatectl status # 手动同步 sudo ntpdate pool.ntp.org

17.2 cron计划任务

管理定时任务:

# 编辑当前用户的任务 crontab -e # 查看任务列表 crontab -l # 删除所有任务 crontab -r

cron表达式示例:

# 每天凌晨3点执行 0 3 * * * /path/to/script # 每5分钟执行 */5 * * * * /path/to/script # 每周一9点执行 0 9 * * 1 /path/to/script

18. 文件传输与同步

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 常见压缩工具

不同压缩格式的命令对比:

格式压缩命令解压命令特点
.gzgzip filegunzip file.gz快速压缩
.bz2bzip2 filebunzip2 file.bz2较高压缩比
.xzxz fileunxz file.xz高压缩比
.zipzip archive.zip fileunzip archive.zip跨平台
.tartar -cf archive.tar filestar -xf archive.tar仅归档

19.2 组合使用示例

常用组合命令:

# 创建.tar.gz tar -czf archive.tar.gz files/ # 解压.tar.gz tar -xzf archive.tar.gz # 查看压缩包内容 tar -tzf archive.tar.gz

20. 性能分析与优化

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 report

20.2 内存分析

valgrind检测内存问题:

# 安装 sudo apt install valgrind # 检测内存泄漏 valgrind --leak-check=yes ./program

21. 内核与模块管理

21.1 内核信息查询

查看内核相关信息:

# 当前内核版本 uname -r # 加载的模块 lsmod # 模块信息 modinfo module_name

21.2 模块管理

内核模块操作:

# 加载模块 sudo modprobe module_name # 移除模块 sudo modprobe -r module_name # 查看模块参数 cat /sys/module/module_name/parameters/*

22. 系统启动与运行级别

22.1 启动过程分析

查看启动日志:

# 传统syslog dmesg # systemd日志 journalctl -b

22.2 运行级别管理

systemd目标(相当于传统运行级别):

# 查看当前目标 systemctl get-default # 设置默认目标 sudo systemctl set-default multi-user.target # 切换目标 sudo systemctl isolate graphical.target

23. 环境隔离与虚拟化

23.1 虚拟环境

Python虚拟环境创建:

# 创建 python3 -m venv myenv # 激活 source myenv/bin/activate # 退出 deactivate

23.2 容器环境

使用podman作为docker替代:

# 运行容器 podman run -it ubuntu bash # 构建镜像 podman build -t myimage .

24. 国际化与本地化

24.1 语言设置

查看和修改系统语言:

# 当前设置 locale # 可用语言包 locale -a # 生成语言环境 sudo locale-gen zh_CN.UTF-8

24.2 时区设置

修改时区:

# 查看当前时区 timedatectl # 列出可用时区 timedatectl list-timezones # 设置时区 sudo timedatectl set-timezone Asia/Shanghai

25. 安全加固与审计

25.1 系统审计

auditd配置示例:

# 监控/etc/passwd修改 auditctl -w /etc/passwd -p wa -k passwd_changes # 查看日志 ausearch -k passwd_changes

25.2 安全扫描

使用lynis进行安全审计:

# 安装 sudo apt install lynis # 运行扫描 sudo lynis audit system

26. 网络调试与抓包

26.1 tcpdump使用

网络抓包示例:

# 抓取eth0网卡的所有HTTP流量 sudo tcpdump -i eth0 -A port 80 # 抓取特定主机的流量 sudo tcpdump host 192.168.1.100 # 保存到文件 sudo tcpdump -w capture.pcap

26.2 网络测试工具

常用网络测试命令:

# 测试连通性 ping example.com # 跟踪路由 traceroute example.com # 测试端口 telnet example.com 80 nc -zv example.com 80

27. 系统救援与恢复

27.1 单用户模式

进入单用户模式步骤:

  1. 重启系统
  2. 在GRUB菜单选择内核
  3. 按e编辑启动参数
  4. 在linux行末尾添加singleinit=/bin/bash
  5. Ctrl+x启动

27.2 文件系统修复

fsck使用示例:

# 检查文件系统(未挂载) sudo fsck /dev/sda1 # 强制检查并修复 sudo fsck -y /dev/sda1

28. 日志轮转配置

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.conf

29. 系统备份策略

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=progress

29.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" done

30.2 xargs高级用法

xargs并行处理示例:

# 多线程grep搜索 find . -type f -print0 | xargs -0 -P 4 grep "pattern" # 批量重命名 find . -name "*.jpg" | xargs -I {} mv {} {}.bak

31. 终端快捷键与技巧

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 on

32. 系统信息查询

32.1 综合信息工具

inxi提供全面系统信息:

# 安装 sudo apt install inxi # 显示完整系统信息 inxi -Fxz

32.2 硬件详细信息

dmidecode获取硬件信息:

# BIOS信息 sudo dmidecode -t bios # 内存信息 sudo dmidecode -t memory # 系统信息 sudo dmidecode -t system

33. 环境配置管理

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 push

33.2 环境隔离

direnv自动加载环境:

# 安装 sudo apt install direnv # 在项目目录创建.envrc echo 'export PATH=$PATH:./bin' > .envrc direnv allow

34. 系统调优与配置

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 -p

34.2 文件系统优化

tune2fs调整ext4参数:

# 查看文件系统信息 sudo tune2fs -l /dev/sda1 # 禁用时间戳 sudo tune2fs -O ^has_journal /dev/sda1 # 调整保留块比例 sudo tune2fs -m 1 /dev/sda1

35. 容器编排命令

35.1 Docker Compose

常用命令示例:

# 启动服务 docker-compose up -d # 停止服务 docker-compose down # 查看日志 docker-compose logs -f

35.2 Kubernetes基础

kubectl常用命令:

# 查看节点 kubectl get nodes # 部署应用 kubectl apply -f deployment.yaml # 查看pod kubectl get pods -A

36. 远程管理技巧

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_key

36.2 免密登录设置

配置SSH密钥认证:

# 生成密钥 ssh-keygen -t ed25519 # 复制公钥到服务器 ssh-copy-id user@host # 测试登录 ssh user@host

37. 性能基准测试

37.1 CPU性能测试

sysbench测试CPU:

# 安装 sudo apt install sysbench # 运行测试 sysbench cpu --cpu-max-prime=20000 run

37.2 磁盘IO测试

fio综合测试:

# 随机读写测试 fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting

38. 系统清理与维护

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 all

39. 系统监控仪表盘

39.1 使用netdata

安装和访问:

# 安装 bash <(curl -Ss https://my-netdata.io/kickstart.sh) # 访问 http://localhost:19999

39.2 glances工具

glances使用:

# 安装 sudo apt install glances # 运行 glances # Web模式 glances -w

40. 终端分屏工具

40.1 terminator使用

terminator分屏配置:

# 安装 sudo apt install terminator # 配置文件位置 ~/.config/terminator/config

40.2 byobu增强

byobu基础命令:

# 启动 byobu # 新建窗口 F2 # 切换窗口 F3/F4 # 分屏 Ctrl+F2

41. 文件比较与合并

41.1 diff工具

文件比较命令:

# 简单比较 diff file1 file2 # 并排显示 diff -y file1 file2 # 递归比较目录 diff -r dir1 dir2

41.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 > file

42.2 pass管理密码

pass密码管理器:

# 初始化 pass init "GPG Key ID" # 添加密码 pass insert Email/gmail # 查看密码 pass Email/gmail

43. 系统诊断工具

43.1 strace跟踪

strace调试程序:

# 跟踪命令 strace ls # 统计系统调用 strace -c ls # 跟踪运行中进程 strace -p PID

43.2 ltrace库调用

ltrace使用示例:

# 跟踪库调用 ltrace ls # 统计调用 ltrace -c ls

44. 二进制文件分析

44.1 objdump反汇编

分析二进制文件:

# 查看段信息 objdump -h binary # 反汇编代码 objdump -d binary

44.2 strings提取字符串

strings基本用法:

# 提取所有字符串 strings binary # 最小长度限制 strings -n 10 binary

45. 系统调用参考

45.1 查询系统调用

查找系统调用信息:

# 列出所有系统调用 man syscalls # 查询特定调用 man 2 open

45.2 系统调用表

查看系统调用号:

# x86_64系统调用表 cat /usr/include/x86_64-linux-gnu/asm/unistd_64.h

46. 内核调试技巧

46.1 内核日志

查看内核消息:

# 实时查看 dmesg -wH # 查看特定级别 dmesg -l err,crit

46.2 内核参数

运行时修改内核参数:

# 查看参数 cat /proc/sys/kernel/threads-max # 临时修改 echo 100000 > /proc/sys/kernel/threads-max

47. 系统启动分析

47.1 启动时间优化

分析启动过程:

# 查看启动时间 systemd-analyze # 生成启动图表 systemd-analyze plot > boot.svg # 列出耗时服务 systemd-analyze blame

47.2 服务依赖

查看服务依赖关系:

# 显示服务依赖树 systemd-analyze critical-chain service_name # 图形化显示 systemd-analyze dot | dot -Tsvg > deps.svg

48. 虚拟文件系统

48.1 proc文件系统

常用/proc文件:

# CPU信息 cat /proc/cpuinfo # 内存使用 cat

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询