Linux常用命令

7 阅读3分钟

Linux常用命令

文件操作

  • ls:列出目录内容
  • cd:进入指定文件目录
  • pwd:显示当前目录完整路径
  • find:寻找符合条件的文件
  • cp:复制文件(cp -r 复制目录)
  • mv:移动或重命名文件
  • rm:删除文件(rm -r 递归删除目录)
  • mkdir:创建新目录
  • cat:查看文件内容

文本处理(例如查看日志)

  • 查看
    • cat:显示整个日志文件内容(注意大文件会输出所有内容),cat + 日志文件
    • more和less:分页显示日志文件(类似vim),more / less + 日志文件
    • head和tail:查看日志文件前几行或后几行,head / tail + 日志文件
  • 统计
    • sort / uniq:排序和去重,这两个命令经常一起使用
    下面这个命令输出nginx日志的ip和每个ip的pv,展示pv最高的前10
    awk -F"|" '{print $3}' access.log | sort | uniq -c | sort -nk1 -r | head -n10
    
  • 过滤
    • sed:可以完成基本的文件编辑任务,sed 's/old/new/g' 文件名(将文件中的old替换为new,但是不修改文件本身,s表示替换,d删除,i插入,a追加)
    • diff:比较两个文件的差异并显示不同之处,diff 文件1 文件2
    • grep:对内容进行过滤
      • 搜索文件中包含指定文本的行:grep "指定文本" 文件名(-i忽略大小写,-n显示行号)
      • 搜索日志文件中的错误信息:grep "error" 日志文件(看某个异常前后相关的内容,可以使用ABC参数,A after 内容后n行 B before 内容前n行 C count? 内容前后n行,例如grep -rn --color Exception -A10 -B2 error.log)
      • grep搭配管道使用:ps aux | grep "进程名"
    • awk:强大的文本处理工具,主要作用是对复杂文本文件中的数据进行筛选、提取和处理。基本格式:awk '模式 {动作}' 文件名
    - 打印每行:awk '{ print }' 文件名
    - 打印每行第一个字段:awk '{ print $1 }' 文件名
    - 模式匹配,打印包含pattern的行:awk '/pattern/ { print $0}' 文件名
    

vim工具

  • 插入模式:i
  • 普通模式:在插入模式中按Esc
  • 保存:w,保存并退出:wq,强制退出(不保存):q!
  • 复制一行:yy,删除一行:dd
  • 粘贴:p,撤销:u

系统管理

  • ps:显示所有进程的详细信息
  • top:增强版ps,实时查看系统资源使用情况包括CPU使用率,平均负载,内存,交换空间,进程列表(PID,用户,CPU占用率,内存占用率,进程状态等)
  • free:查看内存和交换空间使用情况
  • df:显示磁盘使用情况
  • kill:终止进程
  • chmod:更改文件或目录权限(例如"chmod 777 文件名"表示赋予文件所有权限,7=4+2+1分别表示读写执行)
  • chown:修改文件或命令所有者和所属组
  • useradd / groupadd:创建用户/用户组
  • reboot:重启系统
  • shutdown:关机
  • systemctl restart network:重启服务,例如网络

进程管理

  • 查看所有进程信息:top
  • 查看进程的堆栈信息:pstack+PID 或 gdb调试器(附加到运行中的进程并打印堆栈跟踪)
  • 查看僵尸进程:top界面按z可以高亮僵尸进程 或 ps -aux | grep Z
  • 僵尸进程指执行完成但是父进程未读取其状态信息的进程,它进程描述符仍存在于系统中,但是它不会消耗CPU。僵尸进程通常出现在父进程没有调用wait系统调用来获取子进程状态时。
  • 孤儿进程指父进程已经结束,但它自己还在运行的进程,OS会为孤儿进程分配一个新的父进程来避免它成为僵尸进程。

网络管理

  • ping:检查网络连接
  • ifconfig / ip addr:查看网络配置
  • wget:从网络上下载文件
  • netstat查看网络连接,TCP/UDP连接,路由表、监听端口状态等。
    • netstat -a:查看所有网络连接(ip+端口)
    • netstat -t/-u/-l:查看所有TCP/UDP/监听状态的连接
    • netstat -p:显示在使用socket的进程信息
    • netstat -r:查看路由表
    • netstat -tnlp | grep pid或进程名:查看指定进程监听了哪些端口
  • ss:netstat的增强版
    • ss -ta:查看所有TCP连接
    • ss -atr:查看正在监听的TCP连接
    • ss -s:查看TCP连接信息(包括TIME_WAIT等)
  • tcpdump或wireshark:实现网络抓包。
  • ssh:登录到指定主机

压缩解压缩

  • tar:压缩/解压.tar文件
  • gzip:压缩/解压.gz文件
  • zip:压缩/解压.zip文件