Linux常用命令(后端开发版)
目录结构
- /usr/local/test.txt:第一个 “/” 表示根目录,后面的所有 “/” 表示层级关系
shell 命令的执行过程
1. 目录相关
- ls 命令:
ls [-a -l -h] 路径
查看当前目录下的文件信息
ls # 平铺输出当前文件夹下的所有文件名(默认是/home/当前用户目录)
ls -a # 显示当前文件夹下所有文件名(包括隐藏文件,Linux中以"."开头的文件会自动隐藏)
ls -l # 竖向排列信息(类似于windows的列表形式,一行是一个文件项,包含更多文件信息)
ls -lh # "-h"必须和"-l"搭配使用,用于以人易于阅读的方式显示文件大小信息
- cd 命令:
cd 路径
切换目录
cd # 不加参数就返回/home目录
"~": 表示home目录
".": 表示当前目录
"..": 表示上一级目录
- pwd 命令:
pwd
查看当前路径
# 没有选项和参数,直接输出当前工作路径
- mkdir 命令:
mkdir [-p] 路径
创建新文件夹
mkdir -p # 自动创建不存在的父目录
# 在/home目录之外创建文件夹需要更高的权限,若权限不足会报错
2. 文件相关
- touch 命令:
touch 路径
创建新文件
# 使用ls -lh命令时,"d"表示目录,"-"表示文件
- 查看文件内容
cat [路径] # 输出全部内容
more [路径] # 支持分页查看(按"空格键"翻页,按"Q键"退出)
less [路径] # 分页查看
head [路径] # 查看文件头部
- cp 命令
cp [-r] 源路径 目标路径
复制文件/文件夹
cp -r # 这个选项表示递归复制文件夹
- mv 命令
mv [-r] 源路径 目标路径
移动文件/文件夹 - rm 命令
rm [-r -f] 参数1 ... 参数N
删除文件/文件夹
rm -r #递归删除文件夹
rm -f # 强制删除(不弹出提示信息,仅仅管理员适用)
# 每个参数表示一个要删除的文件/文件夹
# 支持通配符"*",类似于MySQL的模糊查询
- which 命令
which 要查找的命令
#查找【命令】
# 命令本质上是一个可执行的二进行文件(类比.exe),使用此命令输出命令程序文件的存放位置
- find 命令 #查找文件
## 按照文件名查找
find [起始路径] -name "待查文件名[*]"
# 支持通配符"*"## 按照文件大小查找
find [起始路径] -size [+, -]n[kMG]
# [+, -] 表示大于或小于
# n表示数量级
# [kMG]分表表示KB,MB,GB
- grep 命令:
grep [-n] 关键字 文件路径
通过关键字过滤文件内容
grep -n # 表示输出结果显示内容在原文件的行号
# 文件路径可以作为内容输入端口
后端开发场景:日志分析
- wc 命令
wc [-c -m -l -w] 文件路径
统计数量
wc -c # 统计bytes
wc -m # 统计字符
wc -l # 统计行数
wc -w # 统计词数
# 文件路径可以作为内容输入端口
- 管道符 “|”
# 作用:将左边命令的结果作为右边命令的输入
- echo命令
echo "要输出的内容"
# 在命令行输出内容
"`" 称为反引号(或飘号)
作用:飘号包裹的部分将被当成命令执行
echo `pwd` 含义为在控制台输出pwd的执行内容
- 重定向符
">" # 将左侧命令结果【覆盖】掉右边指向的文件
">>" # 将左侧命令结果【追加】到右边指向的文件
- tail 命令
tail [-f -num] 文件路径
查看文件末尾或追踪文件更新
tail -f # 持续追踪文件更新
tail -num # 查看文件倒数num行, 默认10行
# "Ctrl + C" 退出查看
后端开发场景:实时查看日志文件
3. 用户 / 用户组
- 用户组
下面的两个命令都需要root
## 创建用户组
groupadd 组名## 删除用户组
groupdel 组名
- 用户
## 创建用户
useradd [-g -d] 用户名
useradd -g 指定用户所在组, 不指定则自动创建同名组,指定的话组必须存在
useradd -d 指定创建新用户的/home路径## 删除用户
userdel [-r] 用户名
userdel -r 删除此用户的/home## 查看用户所属组
id [用户名]## 将指定用户加入指定组
usermod -aG 用户名 用户组
4. 权限管理
- ls -l命令输出的前10位信息:
r — 读权限、 w — 写权限、 x — 执行权限。对于文件/文件夹有不同含义
- r, 文件表示可查看; 文件夹表示可用 ls 命令查看
- w, 文件表示可修改; 文件夹表示可在文件夹内进行增删改
- x, 文件表示可以将文件作为可执行程序; 文件夹表示可以使用 cd 进入
- chmod 命令
#修改文件权限
chmod [-R] 权限 用户/用户组`
# -R对文件夹内所有文件采取同样的操作
权限怎么写?
方案一
u=rwx,g=rwx,o=rwx
方案二
# 使用数字表示
r = 4, w = 2, x = 1
# 例: chmod 751 test.txt, 其中 7 <=> u=rwx
- chown 命令
#修改文件/文件夹的用户/用户组
chown [-R] [用户][:][用户组] 文件/文件夹
# chown -R 同chmod
# [:] 用于分隔用户和用户组
5. 系统相关
- systemctl 命令
#控制内置或第三方服务
systemctl [start, stop, status, enable, disable] 服务名
# start 启动
# stop 关闭
# status 查看状态
# enable 开启开机自启
# disable 关闭开机自启
- ln 命令
#建立链接
ln [-s] 文件路径 目的路径`
# -s 表示建立软链接,不加则是建立硬链接
- ps 命令
# 查看进程信息
ps [-e -f]
# -e 显示所有进程
# -f 显示所有信息## 重要指标1. PID, 进程号2. UID, 进程所属用户ID3. C, CPU占用率4. TIME, 进程占用CPU时间## 常用的方式
ps -ef | grep 进程号 结合通配符和grep过滤进程信息(精准查询)## 其他类似命令
lsof 查看进程打开的文件和网络连接
- 端口占用情况
# 查看ip地址暴露的端口
nmap ip地址 # 查看指定端口的占用情况(ss -lntp 这个命令更快)
netstat -anp | grep 端口号
后端开发场景:检查网络连接和端口
- 主机状态管理
# top 命令 查看CPU、内存的使用情况,类似于windows 任务管理器,5秒刷新一次
# htop 命令是更友好的替代方案
# 按 "Q键" 退出
后端开发场景:实时监控系统资源(CPU、内存等)
- free 命令 ——查看内存使用情况
- df 命令
# 查看硬盘使用情况
df -h # 以人更易看懂的方式显示信息
- iostat 命令
iostat [-x] [nums1] [nums2]
查看CPU、磁盘相关信息
iostat -x 显示更多信息
nums1 刷新间隔
nums2 刷新次数# 需要重点关注的指标
%util 磁盘利用率
rKB/s 每秒发送到设备的读取请求数
wKB/s 每秒发送到设备的写入请求数
- sar 命令 ——查看网络的统计信息
6. 补充(后端开发常用Linux命令)
jstack
命令
用途:抓取Java线程堆栈(排查死锁、高CPU)
示例:
jstack [pid] > thread_dump.txt # 保存线程快照
jstack -l [pid] # 包含锁信息
jstat
命令
用途:监控JVM内存和GC情况
示例:
jstat -gcutil [pid] 1000 # 每秒打印一次GC统计
jstat -gc [pid] # 显示堆内存各区域用量
jmap
命令
用途:生成Java堆内存快照(用于内存泄漏分析)
示例:
jmap -heap [pid] # 打印堆内存配置
jmap -dump:format=b,file=heap.hprof [pid] # 导出堆快照(用MAT分析)
crontab
命令
用途:定时任务(日志切割、备份)
示例:
crontab -e # 编辑定时任务
0 3 * * * /opt/clean_logs.sh # 每天3点执行日志清理脚本
- VI / VIM 编辑器
练习题
1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?
3、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
4、Ls命令执行什么功能? 可以带哪些参数,有什么区别?
5、查看文件有哪些命令?
6、你平时是怎么查看日志的?
7、建立软链接(快捷方式),以及硬链接的命令
8、目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
9、随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
10、终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
11、移动文件用哪个命令?改名用哪个命令?
12、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
13、删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
14、Linux下命令有哪几种可使用的通配符?分别代表什么含义?
15、用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
16、Grep命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
17、Linux中进程有哪几种状态?在ps显示出来的信息中分别用什么符号表示的?
18、怎么使一个命令在后台运行?
19、利用ps怎么显示所有的进程? 怎么利用ps?
20、哪个命令专门用来查看后台任务?
21、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
22、终止进程用什么命令? 带什么参数?
23、怎么查看系统支持的所有信号?
24、搜索文件用什么命令? 格式是怎么样的?
25、查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
26、使用什么命令查看用过的命令列表?
27、使用什么命令查看磁盘使用空间?空闲空间呢?
28、使用什么命令查看网络是否连通?
19、使用什么命令查看IP地址及接口信息?
30、查看各类环境变量用什么命令?
31、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
32、通过什么命令查找执行命令?
33、怎么对命令进行取别名?
34、du和df的定义,以及区别?
35、awk详解。
36、如果一个Linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
37、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
38、怎样查看一个linux命令的概要与用法?假设你在/bin 目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?