image.pngimage.png

# linux 基础

# 冯诺依曼体系结构

image.png

硬件,软件体系

image.png

# 运算器

image.png

# 控制器

image.png

# 存储器

image.png

# 输入设备

image.png

# 输出设备

image.png

内存:容量小,效率高,运行效率快,快速集成数据

硬盘:容量大,运行速度慢

image.png

# 硬盘的分类

image.png

image.png

所有的形式都是以二进制存取的

# 读取方式

image.png

1 个扇区 4kb, 等大

# shell

image.png

注意:

参数之间用空格隔开

区分大小写

# 常见命令:

image.png

# 特殊字符

# . 指向 y 隐藏文件,当前目录

# .. 上一层目录

# $ 变量

  • 通配符,所有

# ~ 家目录

超级管理员 root/

# / 目录

# - 参数 -- 参数

- 简写

-- 单词

# 文件系统

因为每个用户项目分区不一样

没有盘符:采用树

image.png

当存储空间不够的时候采用文件挂载增加内存,理论值:可挂在 65536 个硬盘

扩容

image.png

image.pngmount 挂载

image.png

bin 可执行文件,脚本

boot 引导分区

dev 设备信息

etc 配置文件

home 家

lib 内库

lib64

media 多媒体

mnt 硬盘挂载 U 盘

opt 默认安装目录

proc 进程信息

root 管理员家目录

run 运行时的系统常量,变量

sbin 管理员可执行的权限和命令

srv 服务启动之后需要提取额数据

sys 系统内核信息

tmp 临时存放信息,变量,重启后可能会清除

usr 共享文件

var 临时存放信息,变量,重启不清除 eg: 日志

# cd 改变文件路径

# ll 显示目录

image.png

# ls 显示目录

image.png

image.png

- 开头表示文件

d 开头表示文件夹

l 开头表示链接 [win 中叫快捷方式]

# mkdir 创建目录

-p 创建多级目录 mkdir -p a

mkdir -p haoduo {test1,test2,test3} 创建多个文件夹

image.png

{}: 类似 java 中数组的含义

# rmdir 删除目录

rmdir 要求文件时空文件夹

# cp 复制文件

cp 源文件 目标文件

-r 文件夹,目录时

# mv 文件和目录移动和改名

文件和目录

# rm 删除

-f 强制删除

-r 文件夹

# touch 创建文件

# stat 查看文件信息

image.png

# ln 链接

快捷方式

-s 软链接

# cat 查看内容

image.png

# tac 查看内容倒序

# more,less 查看内容分页

# head 查看取前几行

显示某一行

head -8 | tail -1

# tail 查看取后几行

image.png

-f -F 显示追加内容,监控到数据变动

image.png

# 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 编辑

image.png

# 打开文件

image.png

image.png

image.png

image.png

# 编辑模式

常用的

15gg: 进入第 15 行

shift+G 最后一行

dd 删除一行

3dd 删除 3 行

w 光标单词移动

dw 将后面的单词删除

3dw 删除后面 3 个单词

yy 复制

pp 粘贴

yw 复制一个单词

yp 粘贴一个单词

u 撤销

shift+6 行首

shift+4 行尾

shift ZZ

r 替换

image.png

image.png

# 末行模式

wq 保存并退出

wq!

w 保存

q 退出

q! 不保存退出

set nu 显示行数

/ 关键字 查找

s / 关键字 / 替换字 /g 加了 g 后当前行全部替换

g / 关键字 / 替换字 /g

image.png

vi 编写时间经常出现🧐

image.png

直接删除

image.png

# 计算机间数据传输

image.png

# rz 上传

# sz 下载

创建虚拟机后如何修改🧐

root 登录

hostname 名字 修改主机名

vi /etc/hostname 主机名

vi /etc/sysconfig/network-scripts/ifcfg-eth0 中修改 IPADDR=172.17.20.145IP 地址

systemtcl restart 重启

# scp 传递文件

image.png

# df 分区信息

-h 包含单位

# du 指定文件大小

du -h --max-depth=1 /

image.png

# tar 解压和压缩

image.png

tar -zxvf Python-3.7.1

zx 解压

zc 压缩

v 过程

f 文件

tar -zcf 目标文件名 需要压缩文件 dir.tar.gz dir

image.png

# zip 压缩

zip -r dir.zip dir

# unzip 解压

unzip dir.zip

# 网络相关

image.png

# ifconfig 网卡配置信息

image.png

image.png

# netstat 网络状态

image.png

image.png

端口 22: 默认 ssh 访问接口

-anp

-r 核心路由表 = 命令 route

image.png

# ping 地址连通

image.png

# telnet 端口联通

image.png

# curl 获取信息

curl -X GET http://www.baidu.com

image.png

# 防火墙

image.png

发现 centos 使用 service 命令替代 systemctl

如启动服务

service httpd start

查看 httpd 服务状态

service httpd status

image.png

# 日期和时间

image.png

# date 查看当前时间

集群时间同步策略 ntp

# ntpdate 集群同步时间

cn.ntp.org.cn

image.png

# 用户 - 组 - 权限

image.png

# useradd 添加用户

# passwd 修改用户密码

# userdel 删除用户

-r

# su 切换用户

image.png

# groupadd 创建组

# groups 查看组

# groupdel 删除组

# groupmod -n 修改组

# 权限

r 读

x 执行

w 写

image.png

image.png

image.png

3 组 所属用户 所属组 其他

修改权限

chown 用户 文件

image.png

# 管道 |

ps

netstat -anp | grep 22

# | 管道

image.png

# A 重定向

image.png

# > 替换

# 012 文件描述符

  • 1 是标准输出(stdout)
  • 2 是标准错误输出(stderr)
  • 0 是标准输入(stdin)
    1> 两个符号连着一起,而且呢,1 和 > 符号之间不能有空格

# >> 追加

# 进程

ps -ef

image.png

uid: 用户 id

pid: 进程 id

ppid: 副进程 id

image.png

# ps -ef 查看进程

image.png

linux 上进程有 5 种状态:

  1. 运行 (正在运行或在运行队列中等待)
  2. 中断 (休眠中,受阻,在等待某个条件的形成或接受到信号)
  3. 不可中断 (收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
  4. 僵死 (进程已终止,但进程描述符存在,直到父进程调用 wait4 () 系统调用后释放)
  5. 停止 (进程收到 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 防止进程被挂起

image.png

# kill 杀死进程

# 环境变量

image.png

image.png

# 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 卸载 全称

image.png

# 三剑客

# cut 切分文件

# sort 排序

# wc 统计单词数

image.png

# grep

经常和 | 连用

image.png

ps -ef |grep

find

# set

image.png

image.png

image.png

image.png

image.png

# awk

image.png

# shell 编程

image.png

# 执行脚本文件

image.png

image.png

# ./hello.sh 方法一

image.png

# sh 或 bash hello.sh 方法二

image.png

# source 或. hello.sh

image.png

更新于 阅读次数