# linux 基础
# 冯诺依曼体系结构
硬件,软件体系
# 运算器
# 控制器
# 存储器
# 输入设备
# 输出设备
内存:容量小,效率高,运行效率快,快速集成数据
硬盘:容量大,运行速度慢
# 硬盘的分类
所有的形式都是以二进制存取的
# 读取方式
1 个扇区 4kb, 等大
# shell
注意:
参数之间用空格隔开
区分大小写
# 常见命令:
# 特殊字符
# . 指向 y 隐藏文件,当前目录
# .. 上一层目录
# $ 变量
- 通配符,所有
# ~ 家目录
超级管理员 root/
# / 目录
# - 参数 -- 参数
- 简写
-- 单词
# 文件系统
因为每个用户项目分区不一样
没有盘符:采用树
当存储空间不够的时候采用文件挂载增加内存,理论值:可挂在 65536 个硬盘
扩容
mount 挂载
bin 可执行文件,脚本
boot 引导分区
dev 设备信息
etc 配置文件
home 家
lib 内库
lib64
media 多媒体
mnt 硬盘挂载 U 盘
opt 默认安装目录
proc 进程信息
root 管理员家目录
run 运行时的系统常量,变量
sbin 管理员可执行的权限和命令
srv 服务启动之后需要提取额数据
sys 系统内核信息
tmp 临时存放信息,变量,重启后可能会清除
usr 共享文件
var 临时存放信息,变量,重启不清除 eg: 日志
# cd 改变文件路径
# ll 显示目录
# ls 显示目录
中
- 开头表示文件
d 开头表示文件夹
l 开头表示链接 [win 中叫快捷方式]
# mkdir 创建目录
-p 创建多级目录 mkdir -p a
mkdir -p haoduo {test1,test2,test3} 创建多个文件夹
{}: 类似 java 中数组的含义
# rmdir 删除目录
rmdir 要求文件时空文件夹
# cp 复制文件
cp 源文件 目标文件
-r 文件夹,目录时
# mv 文件和目录移动和改名
文件和目录
# rm 删除
-f 强制删除
-r 文件夹
# touch 创建文件
# stat 查看文件信息
# ln 链接
快捷方式
-s 软链接
# cat 查看内容
# tac 查看内容倒序
# more,less 查看内容分页
# head 查看取前几行
显示某一行
head -8 | tail -1
# tail 查看取后几行
-f -F 显示追加内容,监控到数据变动
# find 搜索文件
find / 表示全局搜索
-name 文件名
用法
find [命令选项] [路径] [表达式选项]
选项
选项 用法
- empty 查找空白文件或目录
- group 按组查找
- name 按文档名称查找
- iname 按文档名称查找,且不区分大小写
- mtime 按修改时间查找
- size 按容量大小查找
- type 按文档类型查找,文件(f)、目录 (d)、设备 (b,c)、链接 (l) 等
- user 按用户查找
- exec 对找到的档案执行特定的命令
- a 并且
- o 或者
举例
查找当前目录下名称为 hello.txt 的文档
[root@test ~]# find -name hello.txt
1
查找 /root 目录下所有名称以.log 结尾的文件
[root@test ~]# find /var/log/ -name "*.log"
1
不区分大小写查找文件 test
[root@test ~]# find -iname "test"
1
查找系统中所有的空白文件
[root@test ~]# find / -empty
1
查找系统中所属组为 tom 的文件
[root@test ~]# find / -group tom
1
查找系统中所有 3 天内被修改过的文件
[root@test ~]# find / -mtime -3
1
查找系统中所有 4 天前被修改过的文件
[root@test ~]# find / -mtime +4
1
查找系统中 2 天前的当天被修改过的文件
[root@test ~]# find / -mtime 2
1
查找当前目录下大于 10MB 的文件
[root@test ~]# find ./ -size +10M
1
查找当前目录下的所有普通文件
[root@test ~]# find ./ -type f
1
查找计算中 tom 所拥有的所有文件
[root@test ~]# find / -user tom
1
查找当前目录下大于 1MB 的文件后列出文件的详细信息
[root@test ~]# find ./ -size +1M -exec ls -l {} ;
1
查找计算机中所有大于 1MB 的文件
[root@test ~]# find / -size +1M -a -type f
1
# sort 排序文件列表输出
语法:sort (选项)(参数)
1
选项:
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了 040 至 176 之间的 ASCII 字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面 3 个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o <输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t <分隔字符>:指定排序时所用的栏位分隔字符;
+<起始栏位>-< 结束栏位 >:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
-u 去重
# vi 编辑
# 打开文件
# 编辑模式
常用的
15gg: 进入第 15 行
shift+G 最后一行
dd 删除一行
3dd 删除 3 行
w 光标单词移动
dw 将后面的单词删除
3dw 删除后面 3 个单词
yy 复制
pp 粘贴
yw 复制一个单词
yp 粘贴一个单词
u 撤销
shift+6 行首
shift+4 行尾
shift ZZ
r 替换
# 末行模式
wq 保存并退出
wq!
w 保存
q 退出
q! 不保存退出
set nu 显示行数
/ 关键字 查找
s / 关键字 / 替换字 /g 加了 g 后当前行全部替换
g / 关键字 / 替换字 /g
vi 编写时间经常出现🧐
直接删除
# 计算机间数据传输
# rz 上传
# sz 下载
创建虚拟机后如何修改🧐
root 登录
hostname 名字 修改主机名
vi /etc/hostname 主机名
vi /etc/sysconfig/network-scripts/ifcfg-eth0 中修改 IPADDR=172.17.20.145IP 地址
systemtcl restart 重启
# scp 传递文件
# df 分区信息
-h 包含单位
# du 指定文件大小
du -h --max-depth=1 /
# tar 解压和压缩
tar -zxvf Python-3.7.1
zx 解压
zc 压缩
v 过程
f 文件
tar -zcf 目标文件名 需要压缩文件 dir.tar.gz dir
# zip 压缩
zip -r dir.zip dir
# unzip 解压
unzip dir.zip
# 网络相关
# ifconfig 网卡配置信息
# netstat 网络状态
端口 22: 默认 ssh 访问接口
-anp
-r 核心路由表 = 命令 route
# ping 地址连通
# telnet 端口联通
# curl 获取信息
curl -X GET http://www.baidu.com
# 防火墙
发现 centos 使用 service 命令替代 systemctl
如启动服务
service httpd start
查看 httpd 服务状态
service httpd status
# 日期和时间
# date 查看当前时间
集群时间同步策略 ntp
# ntpdate 集群同步时间
cn.ntp.org.cn
# 用户 - 组 - 权限
# useradd 添加用户
# passwd 修改用户密码
# userdel 删除用户
-r
# su 切换用户
# groupadd 创建组
# groups 查看组
# groupdel 删除组
# groupmod -n 修改组
# 权限
r 读
x 执行
w 写
3 组 所属用户 所属组 其他
修改权限
chown 用户 文件
# 管道 |
ps
netstat -anp | grep 22
# | 管道
# A 重定向
# > 替换
# 012 文件描述符
- 1 是标准输出(stdout)
- 2 是标准错误输出(stderr)
- 0 是标准输入(stdin)
1> 两个符号连着一起,而且呢,1 和 > 符号之间不能有空格
# >> 追加
# 进程
ps -ef
uid: 用户 id
pid: 进程 id
ppid: 副进程 id
# ps -ef 查看进程
linux 上进程有 5 种状态:
- 运行 (正在运行或在运行队列中等待)
- 中断 (休眠中,受阻,在等待某个条件的形成或接受到信号)
- 不可中断 (收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
- 僵死 (进程已终止,但进程描述符存在,直到父进程调用 wait4 () 系统调用后释放)
- 停止 (进程收到 SIGSTOP, SIGSTP, SIGTIN, SIGTOU 信号后停止运行运行)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定 "A" 参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用 ASCII 字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行 ps 指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
14)ps -l 較長,較詳細的顯示該 PID 的信息
# jobs -l 查看后台进程
# nohup 防止进程被挂起
# kill 杀死进程
# 环境变量
# top 进程变化 cpu 负载情况
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下: <br />
s – 改变画面更新频率 <br />
l – 关闭或开启第一部分第一行 top 信息的表示 <br />
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示 <br />
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示 <br />
N – 以 PID 的大小的顺序排列表示进程列表 <br />
P – 以 CPU 占用率大小的顺序排列进程列表 <br />
M – 以内存占用率大小的顺序排列进程列表 <br />
h – 显示帮助 <br />
n – 设置在进程列表所显示进程的数量 <br />
q – 退出 top <br />
s – 改变画面更新周期
序号 列名 含义 <br />
PID 进程 id <br />
PPID 父进程 id <br />
RUSER Real user name <br />
UID 进程所有者的用户 id <br />
USER 进程所有者的用户名 <br />
GROUP 进程所有者的组名 <br />
TTY 启动进程的终端名。不是从终端启动的进程则显示为? <br />
PR 优先级 <br />
NI nice 值。负值表示高优先级,正值表示低优先级 0 <br />
P 最后使用的 CPU,仅在多 CPU 环境下有意义 <br />
% CPU 上次更新到现在的 CPU 时间占用百分比 <br />
TIME 进程使用的 CPU 时间总计,单位秒 <br />
TIME+ 进程使用的 CPU 时间总计,单位 1/100 秒 <br />
% MEM 进程使用的物理内存百分比 <br />
VIRT 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES <br />
SWAP 进程使用的虚拟内存中,被换出的大小,单位 kb。 <br />
RES 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA <br />
CODE 可执行代码占用的物理内存大小,单位 kb <br />
DATA 可执行代码以外的部分 (数据段 + 栈) 占用的物理内存大小,单位 kb <br />
SHR 共享内存大小,单位 kb <br />
nFLT 页面错误次数 <br />
nDRT 最后一次写入到现在,被修改过的页面数。 <br />
S 进程状态。(D = 不可中断的睡眠状态,R = 运行,S = 睡眠,T = 跟踪 / 停止,Z = 僵尸进程) <br />
COMMAND 命令名 / 命令行 <br />
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 <br />
Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、% CPU、% MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。 <br />
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。 <br />
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
top 使用方法:
使用格式:
top [-] [d] [p] [q] [c] [C] [S] [s] [n] <br />
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用 s 交互命令来改变之。
p: 通过指定监控进程 ID 来仅仅监控某个进程的状态。
q: 该选项将使 top 没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么 top 将以尽可能高的优先级运行。
S:指定累计模式。
s:使 top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i:使 top 不显示任何闲置或者僵死进程。
c: 显示整个命令行而不只是显示命令名。
常用命令说明:
Ctrl+L:擦除并且重写屏幕 <br />
K:终止一个进程。系统将提示用户输入需要终止的进程 PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用 15 信号;如果不能正常结束那就使用信号 9 强制结束该进程。默认值是信号 15。在安全模式中此命令被屏蔽。
i:忽略闲置和僵死进程。这是一个开关式命令。
q:退出程序
r: 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程 PID 以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是 10。
S:切换到累计模式。
s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为 s。如果有小数,就换算成 m s。输入 0 值则系统将不断刷新,默认值是 5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f 或者 F:从当前显示中添加或者删除项目。 <br />
o 或者 O:改变显示项目的顺序 <br />
l:切换显示平均负载和启动时间信息。 <br />
m: 切换显示内存信息。
t: 切换显示进程和 CPU 状态信息。
c: 切换显示命令名称和完整命令行。
M: 根据驻留内存大小进行排序。
P: 根据 CPU 使用百分比大小进行排序。
T: 根据时间 / 累计时间进行排序。
W: 将当前设置写入~/.toprc 文件中。
** 查看多核 CPU 命令 <br />
**mpstat -P ALL 和 sar -P ALL
# curl 请求接口
curl 是非常方便的 Rest 客户端,可以很方便的完成 Rest API 测试,利用 curl 对 http 协议发送 Get/Post/Delete/Put, 同时还可以携带 header 来满足 Rest API 需求的特定条件
curl 常用的参数
-X/--request [GET|POST|PUT|DELETE|…] 使用指定的 http method 发出 http request
-H/--header 设定 request 里的 header
-i/--include 显示 response 的 header
-d/--data 设定 http parameters
-v/--verbose 輸出比较多的信息
-u/--user 使用者账号
-b/--cookie cookie 文件路径 使用 cookie
linux command line 的参数,同一个功能常会有两个完全相同的参数,一个是比较短的参数,另一个是比较长的参数
1、测试 get 请求
$ curl http://www.linuxidc.com/login.cgi?user=test001&password=123456
2、测试 post 请求
$ curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi
方式一:发送磁盘上面的 xml 文件(推荐)
root [ /apps ]$ curl -X POST -H 'content-type: application/xml' -d @/apps/myxmlfile.txt http://172.19.219.xx:8081/csp/faq/actDiaUserInfo.action
ps:其中 myxmlfile.txt 为磁盘上面的 xml 文件,后面为请求路径
方式二:在命令行直接发送 xml 结构数据
root [ /apps ]$ curl -H 'content-type: application/xml' -X POST -d ' <?xml version="1.0" encoding="UTF-8"?><userinfoReq>``<subsNumber>
13814528620 </subsNumber><type>
3 </type></userinfoReq>
' http://172.19.219.xx:8081/csp/faq/actDiaUserInfo.action
或者
root [ /apps ]$ echo ' <?xml version="1.0" encoding="UTF-8"?><userinfoReq>``<subsNumber>
https://www.ekwing.com/home/classtop?class=443
https://www.ekwing.com/home/cityhw
请求 URL: https://passport.ekwing.com/index/getschooluser?callback=jQuery17208287960962547929_1634277562968&uname = 翼小小 1&pw=jSB5rGAv2seFjniqPD1Ic7AoGk9a6QfPMyvwJvDYjVxwaNDwY7cMhTV9Z90CSNUgdc2SGJ5cfRk9R0V0UUgNJc%2BQh9Ch90mZ%2BSUx8czho2gAU%2B9Qg6wFCYoKai3uhZ7UtT3MylPxytzccEQnpNAeaylQrqDGMrbJaRDD%2FwAu2Qc%3D&encrypt_key=407ac0f7864098ba320af44dc0f38dad&encrypt_type=rsa&school_name = 励志学校 & login_type=4&code=&code_token=&_=1634277699157
# rpm 安装卸载
-ivh 安装
i[install ]
v [查看信息]
-qa 查询所有安装信息
-q
-e 卸载 全称
# 三剑客
# cut 切分文件
# sort 排序
# wc 统计单词数
# grep
经常和 | 连用
ps -ef |grep
find