Linux常用命令与权限理解总结 续篇

        接着前文(Linux常用命令与权限理解总结-CSDN博客)来继续说明一些常见的指令。

5. 进程管理详解

ps - 显示进程状态

ps 命令用于显示当前运行的进程信息。

详细用法:

  • ps:显示当前终端的进程
  • ps -e 或 ps -A:显示所有进程
  • ps -f:全格式列表
  • ps -ef:显示所有进程的完整格式
  • ps -u username:显示指定用户的进程
  • ps -aux:BSD风格显示所有进程详情
  • ps -axjf:树状结构显示进程(显示父子关系)
  • ps -o pid,user,cmd:自定义输出格式

输出字段解释:

  • PID:进程ID
  • TTY:与进程关联的终端
  • STAT:进程状态代码(R=运行,S=睡眠,T=停止,Z=僵尸等)
  • TIME:累计CPU时间
  • CMD:命令名称和参数
  • %CPU:CPU使用率
  • %MEM:内存使用率
  • VSZ:虚拟内存大小
  • RSS:实际内存使用量

常用组合:

# 查找特定进程
ps -ef | grep apache

# 按CPU使用率排序显示
ps aux --sort=-%cpu | head -10

# 按内存使用率排序显示
ps aux --sort=-%mem | head -10

# 查看进程树
ps -axjf

top - 系统监控工具

top 实时显示系统资源使用情况和进程活动。

交互式命令:

  • q:退出
  • k:杀死进程(会提示输入PID)
  • r:调整进程优先级
  • f:选择显示字段
  • o 或 O:更改排序字段
  • 1:显示所有CPU核心状态
  • m:切换内存显示模式
  • t:切换任务/CPU显示模式
  • c:显示完整命令行
  • M:按内存使用率排序
  • P:按CPU使用率排序
  • T:按运行时间排序
  • W:保存配置

顶部信息详解:

  • 负载平均值:1分钟、5分钟和15分钟系统负载
  • 任务统计:总数、运行、睡眠、停止和僵尸进程数
  • CPU状态:用户空间、系统、空闲、等待IO、硬中断和软中断百分比
  • 内存使用:物理内存和交换空间的总量、使用量和空闲量

kill - 发送信号到进程

kill 命令用于终止进程或发送其他信号。

详细用法:

  • kill PID:终止指定进程(发送TERM信号)
  • kill -9 PID:强制终止进程(发送KILL信号,无法被捕获或忽略)
  • kill -l:列出所有可用信号
  • killall process_name:终止所有指定名称的进程
  • pkill pattern:根据模式匹配终止进程

常用信号:

  • 1 (HUP):重新加载配置
  • 2 (INT):中断(同Ctrl+C)
  • 9 (KILL):强制终止
  • 15 (TERM):正常终止(默认)
  • 18 (CONT):继续执行已停止的进程
  • 19 (STOP):停止进程

# 重新加载配置而不停止服务
kill -HUP $(pidof nginx)

# 强制终止无响应程序
kill -9 $(pgrep firefox)

# 终止特定用户的所有进程
pkill -u username

# 使用killall终止特定程序的所有实例
killall -9 chrome

6. 网络命令详解

netstat - 网络统计

netstat 命令显示网络连接、路由表、接口统计等。

详细用法:

  • netstat -a:显示所有连接和监听端口
  • netstat -t:显示TCP连接
  • netstat -u:显示UDP连接
  • netstat -n:不解析名称(显示IP和端口号)
  • netstat -p:显示与连接关联的程序名和PID
  • netstat -l:只显示监听中的连接
  • netstat -r:显示路由表
  • netstat -s:显示各种协议的统计信息
  • netstat -i:显示网络接口状态

常用组合:

# 查看所有TCP监听端口和关联程序
netstat -tlnp

# 查看当前所有活动TCP连接
netstat -atnp

# 统计TCP连接状态
netstat -ant | awk '{print $6}' | sort | uniq -c

# 查看特定端口是否在监听
netstat -tuln | grep 80

7. 管道和重定向详解

Linux的强大之处在于可以将多个命令组合使用,通过管道传递数据和重定向输入输出。

输入/输出重定向

  • >:将输出重定向到文件(覆盖)
  • >>:将输出追加到文件
  • <:从文件读取输入
  • 2>:重定向错误输出
  • 2>&1:将错误输出重定向到标准输出
  • &>:重定向标准输出和错误输出

详细示例:

# 保存命令输出到文件
ls -la > directory_contents.txt

# 追加输出到日志
echo "$(date) - Backup completed" >> backup.log

# 丢弃错误信息
find / -name "*.conf" 2>/dev/null

# 同时保存标准输出和错误到不同文件
command > output.txt 2> error.txt

# 保存标准输出和错误到同一文件
command > all_output.txt 2>&1
# 或使用简写
command &> all_output.txt

# 从文件读取命令输入
mysql -u root -p < database_script.sql

管道 (|)

管道将一个命令的输出作为另一个命令的输入。

实用管道组合:

# 过滤文件内容
cat /var/log/syslog | grep "ERROR" | less

# 统计文件数量
ls -l | grep "^-" | wc -l

# 按内存使用量查找前10个进程
ps aux | sort -rnk 4 | head -10

# 查找大文件并排序
find /home -type f -size +100M | xargs du -sh | sort -hr

# 查找并替换文件内容
grep -l "old-text" *.txt | xargs sed -i 's/old-text/new-text/g'

# 监控特定进程的CPU使用率
top -bn1 | grep "process-name" | awk '{print $9}'

# 批量压缩日志文件
find . -name "*.log" | xargs gzip

小结

        最后在实际使用中,建议结合命令的man手册(man 命令名)来获取更详细的信息和选项。

示例:

man ls

Linux常用命令与权限理解总结 续篇_第1张图片

man grep

Linux常用命令与权限理解总结 续篇_第2张图片

你可能感兴趣的:(Linux,linux,运维,服务器)