linux学习
目录结构
/ :根目录,所有文件系统起点
- /bin 基础可执行命令,所有用户可用、系统启动必需指令(ls、cat 等)。现代系统大多软链接到
/usr/bin。 - /boot 系统启动文件:内核、引导程序 grub、initramfs。
- /dev 设备文件目录。Linux 一切皆文件,硬盘、鼠标、串口等硬件都在此映射。
- /etc 全局配置文件目录。系统、服务所有配置(网卡、用户、软件配置)。
- /home 普通用户家目录。每个用户独立文件夹(如图 alice、bob、eve),存放个人数据。
- /root 超级管理员 root 的专属家目录,独立于 /home。
- /run 运行时临时数据,进程 pid、套接字、锁文件,重启自动清空。
- /sbin 系统管理命令,主要供 root 管理员使用(ifconfig、fdisk 等),通常软链接
/usr/sbin。 - /tmp 全局临时目录,所有用户可读写,系统会定期清理文件。
- /usr Unix Software Resource,系统软件资源目录。存放大量应用程序、文档、库文件(图中 /usr/bin、/usr/sbin、/usr/local 都在此)。
- /var 可变数据目录。存放持续变化内容:日志、缓存、数据库、邮件、运行数据。图中
/var/tmp长期临时文件。
基础命令
- Ls 命令
a:all,显示所有文件,包含
.开头的隐藏文件 l:long,长格式展示,权限、所有者、大小、修改时间等详情 ll:别名 (alias),等价于ls -l,非独立命令。 h:human-readable,配合-l,文件大小自动换算 KB/MB/GB - Cd
- Pwd
- Mkdir 语法:
mkdir [-p] Linux路径作用:创建文件夹 -p:递归创建多级目录;上级目录不存在时自动创建,目录已存在不会报错 - Touch 创建文件
- Cat 查看文件
- More 多页逐页查看文件
空格下一页 B上一页 - Mv 可以用移动/改名 示例
mv shaige shuaige1mv shuaige1 shuaige/移动到文件夹(使用‘/’代表是个文件夹不执行改名操作)
- Cp
- Rm -rf
*模糊匹配,等价 sql 中% 示例:*test/test*/*test* - Which 查看命令的地址
which cat/cd/touch - Find :
- 按名字参数
示例 find / -name "*vscode*" - 按大小-size ` find / -size +1G find / -size -100M
- 按名字参数
- Grep ⭐
- 功能:从文件内按关键字过滤文本行 语法:
grep [-n] 关键字 文件路径 -
-n展示匹配内容行号
-
- 关键字必填;存在空格 / 特殊字符建议用
""包裹 ps(不支持)通配符*
- 关键字必填;存在空格 / 特殊字符建议用
-
- 文件路径必填;可通过管道接收标准输入作为数据源
- 功能:从文件内按关键字过滤文本行 语法:
- Wc
- 功能:统计文件的字节、字符、行数、单词数语法:
wc [-c -m -l -w] 文件路径 -
-c:统计字节 (bytes) 数量
-
-m:统计字符数量
-
-l:统计行数(面试最常用)
-
-w:统计单词数量
-
- 文件路径:待统计文件,支持管道接收标准输入
- 功能:统计文件的字节、字符、行数、单词数语法:
- 管道符⭐
- 作用:把前一条命令的标准输出,作为后一条命令的标准输入 语法:
命令1 | 命令2 - 可嵌套使用,如 ls -a | wc -l
- 作用:把前一条命令的标准输出,作为后一条命令的标准输入 语法:
- Echo
‘’使用反引号标注这个是特殊的命令不要输出命令的名字而是命令执行后的结果
-
与>>重定向 指代覆写或追加到文件
- Tail 查看文件尾部内容,-f 表示持续追踪实施查看更新(ctrl+c 退出),-num 指代只看尾部几行
- 格式顺序要求正确: tail -参数 -文件路径 参数要在中间
- Vim⭐⭐⭐
- i 在当前光标位置进入输入模式
- a 在当前光标位置 之后 进入输入模式
- I 在当前行的开头,进入输入模式
- A 在当前行的结尾,进入输入模式
- o 在当前光标下一行进入输入模式
- O 在当前光标上一行进入输入模式
- esc 任何情况下输入 esc 都能回到命令模式 命令模式:
敲打:触发:w 保存文件,不退出:w 文件名 另存为新文件:q 退出(修改没保存报E37错误):q! 强制退出,**丢弃所有修改**:wq 保存+退出:wq! 强制保存退出(只读文件需要):x 等价wq,有改动才写盘,无改动直接退出权限章节
以下在 ROOT ( psw: P@3 )权限下可用:
- Su -【用户名】
- Groupadd 创建用户组
- Groupdel
- Useradd -g ,g 表示是否加入用户组,若不添加则自动创建同名组,若已经冲突存在的同名组必须补充 -g 选项参数; -d ,添加用户的目录,默认/home/用户名字
- Userdel -r,-r 则选择是否保留 home 下的用户数据
- Id 【用户】查询用户对应用户组
- Usermod -aG 【用户组】 【用户】 修改用户到指定用户组
- Getent passwd 查询系统用户 显示结果格式
用户名:密码 x(非明文显示): 用户 ID: 组 ID: 描述信息 (无用):HOME 目录:执行终端 (默认 bash)
权限字符串
Linux 权限字符串共 10 位:第 1 位标识文件类型(- 普通文件 / d 目录 / l 软链接),后续 9 位分为三组,依次为所属用户、所属用户组、其他用户的 r/w/x 读写执行权限。
- Chmod 命令:
格式
chmod 【-R 文件夹】 ---(权限) 文件
u=user o=other其他组权限 g=groupr read 读取文件内容 列出目录内文件名(ls)w write 修改 / 覆盖文件内容 新建、删除、重命名目录内文件x execute 运行该程序 / 脚本 进入目录(cd),访问目录内部文件元数据数字权限 r = 4 w = 2 x = 1 相加组合最高为7,例如4+2+1=7,则rwx权限
- Chown 命令: 修改指定文件所属 (仅 root)
格式
chown 【-R】 【用户】:【用户组】 文件/文件夹,ps::左右可选,不选默认为用户组 示例root:空,空:root,test1:miaomiao
快捷键
- Ctrl+c
!历史最近的前缀命令- Ctrl+r,模糊查询历史命令
- History 查询历史命令
- Ctrl+a,ctrl+e,a:光标到行头,e 到尾
- Ctrl+d 退出账号
Systemctl
常用systemctl start xxx 启动服务systemctl stop xxx 停止服务systemctl restart xxx 重启服务,中断连接systemctl reload xxx 重载配置,不停止进程,需要程序支持systemctl try-restart xxx 仅运行状态才重启systemctl status xxx 查看服务完整状态、pid、最近日志自启systemctl enable xxx 设置开机自启systemctl enable --now xxx 设置开机自启同时立刻启动systemctl disable xxx 取消开机自启systemctl is-enabled xxx 查询开机自启状态,输出 enabled/disabled/static/maskedsystemctl is-active xxx 查询当前是否正在运行屏蔽systemctl mask xxx 屏蔽服务,禁止手动 / 开机启动systemctl unmask xxx 解除屏蔽杂项systemctl daemon-reload 修改 service 单元文件后执行,重新加载 systemd 配置systemctl list-units --type=service 列出当前已加载服务systemctl list-unit-files --type=service 列出全部已安装服务文件,附带自启状态systemctl --failed 列出启动失败的服务systemctl reset-failed 清除失败状态标记系统操作systemctl reboot 重启机器systemctl poweroff 关机
补充.service 后缀可以省略,普通用户操作服务需要 sudojournalctl -u xxx -f 配套,实时看服务日志状态输出说明enabled:开机自启;disabled:不自启static:不能直接 enable,被其他服务依赖拉起masked:被屏蔽active (running):当前正在运行inactive (dead):当前已停止软连接
Ln -s 被链接文件 要创建的文件连接(不可同名已存在)
Date
date +%Y-%m-%d-%H:%M:%S
ps:不能有空格,可以用 - 进行间隙的连接,既可提高可读性又可以保证不出错。
-d:解析时间字符串 -s:修改系统时间 +:自定义输出格式
date +%Y-%m-%d+%H 2026-08-20+16date %Y-%m-%d+%H date: invalid date ‘%Y-%m-%d+%H’date -d:按给定字符串输出日期,用于日期计算 支持如下
- year 年
- month 月
- day 天
- hour 小时
- minute 分钟
- second 秒
示例date -d "+1 day" +%Y%m%d # 后一天date -d "-1 day" +% Y% m% d # 前一天date -d "-1 month" +% Y% m% d # 上一月date -d "+1 month" +% Y% m% d # 下一月date -d "-1 year" +% Y% m% d # 前一年date -d "+1 year" +% Y% m% d # 下一年-d 可和 + 格式化配合使用Wget /curl
wget/curl [选项] [url]-b 指代后台下载
curl:通用数据传输工具,侧重 API 调试、HTTP 交互、协议测试wget:专注 文件下载,原生支持递归下载、断点续传、后台执行
端口
Linux 支持 65535 个:
- 1-1023:系统用
- 1024-49151:随意
- 49152-65535:应用自行临时使用
Nmap 命令
nmap [-p] 192.168.1.10:扫描该 ip 主机开启的端口
常用参数:
-p:指定端口-sn:仅主机存活探测,跳过端口扫描-oN:普通文本输出
Netstat 命令⭐
适用:Linux,工具包:net-tools,新系统优先 ss 替代
参数分级
| 级别 | 参数 |
|---|---|
| 高频 | -t tcp 协议、-u udp 协议、-l 仅监听端口、-n 数字形式不域名解析、-p 显示进程 pid 与名称、需 root 权限、-a 所有连接(监听 + 已建立) |
| 中频 | -r 路由表、-s 网络协议统计、-i 网卡信息 |
| 低频 | -g 多播组成员、-M 伪装连接、-c 持续输出实时刷新、-W 宽输出 |
常用组合
netstat -tunlp # 查看 tcp/udp 监听端口 + 进程,端口占用排查首选netstat -antp # 全部 tcp 连接,含已建立、等待状态 + 进程netstat -tuln # 监听端口,不显示进程,无需 rootnetstat -s # 网络收发、错误、重传等统计netstat -r # 查看系统路由表netstat -ant # 全部 tcp 连接,不展示进程netstat -i # 网卡收发、丢包统计netstat -tunlp | grep 端口号 # 筛选指定端口占用进程netstat -antp | grep ESTABLISHED # 筛选已建立 tcp 连接netstat -c -ant # 持续实时查看所有 tcp 连接tcp 关键状态
| 状态 | 含义 |
|---|---|
| LISTEN | 端口监听,等待外部接入 |
| ESTABLISHED | 连接正常通信 |
| TIME_WAIT | 连接主动关闭后等待端口释放 |
| CLOSE_WAIT | 被动关闭,程序未释放连接,资源泄漏常见 |
| FIN_WAIT1/FIN_WAIT2 | 四次挥手中间状态 |
输出字段说明
| 字段 | 含义 |
|---|---|
| Proto | 协议 |
| Recv-Q | 接收队列,非 0 代表阻塞堆积 |
| Send-Q | 发送队列,非 0 代表阻塞堆积 |
| Local Address | 本地地址端口 |
| Foreign Address | 远端地址端口 |
| State | 连接状态 |
| PID/Program name | 进程 id 和程序名 |
Ps 进程命令
ps [-e -f]
- -e 显示全部进程
- -f 格式化显示
1. UID:进程所属用户2. PID:进程 ID3. PPID:父进程 ID4. C:CPU 使用率5. STIME:进程启动时间6. TTY:终端(就是刚才说的 pts/1)7. TIME:占用 CPU 总时间8. CMD:启动命令Kill [pid]
top 命令详解
top 是 Linux 下实时动态查看系统进程、资源占用的工具,默认 3 秒刷新一次。
语法:
top [-选项]
常用选项-d 秒数:设置刷新间隔,例 top -d 1 每秒刷新-p pid:只监控指定进程,多个逗号分隔,例 top -p 1234,5678-H:开启线程视图,把线程单独展示,排查高 CPU 线程常用-b:批处理模式,输出不交互,适合脚本采集日志-n 次数:配合 - b 使用,采集指定次数快照后退出,例 top -b -n3-i:启动默认不显示空闲休眠进程-c:显示完整命令行(COMMAND 全路径参数)中频补充:-u 用户名:只展示该用户的进程-U uid:按 UID 过滤进程命令快捷键 H:显示 help 命令速查快捷键
Df 磁盘 du
Df -h Du 查看目录的磁盘状态
Iostat
使用 iostat 查看 CPU、磁盘的相关信息 语法: iostat [-x] [num 1] [num 2] 选项: -x, 显示更多信息 num 1: 数字,刷新间隔,num 2: 数字,刷新几次
环境变量路径
Env 命令获取环境变量集合
Path 核心的环境变量路径 env | grep PATH
$符号:取值
Echo 打印
Export 临时改变环境变量值
Tips永久生效 :
- 针对用户:~/.bashrc 文件中配置- 针对全部用户:/etc/profile 文件中配置` 配置完成,可以通过 source 命令立刻生效
解压缩
压缩格式:
- zip 格式: Linux、Windows、MacOS, 常用
- 7zip: Windows 系统常用
- rar: Windows 系统常用
- tar: Linux、MacOS 常用
- gzip: Linux、MacOS 常用
语法: tar [-c -v -x -f -z -C] 参数 1 参数 2 … 参数 N
- -c, 创建压缩文件,用于压缩模式
- -v, 显示压缩、解压过程,用于查看进度
- -x, 解压模式
- -f, 要创建的文件,或要解压的文件,-f 选项必须在所有选项中位置处于最后一个
- -z, gzip 模式,不使用 - z 就是普通的 tarball 格式
- -C, 选择解压的目的地,用于解压模式
示例压缩: tar -cvf xx压缩包 1/2/3(文件)解压: tar -xvf xx压缩包 -C url路径 ps:格式gzip文件须加入z选项参数支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!