shell部分


我们可以通过使用shell来对操作系统进行如下管理

  1. 文件管理
  2. 用户管理
  3. 磁盘管理
  4. 权限管理
  5. 网络管理
  6. 软件管理
  7. ……

文件系统


image.png
var:存的是一些变化文件,例如日志,数据库
tmp:进程产生的临时文件
usr:表示和应用程序相关的文件
bin:用户执行的程序
sbin:管理员执行的程序
proc:虚拟的文件系统,反应的是内核,进程信息或者实时状态
etc:是各种软件的配置文件
boot:系统启动用的相关文件

踢出用户终端:pkill -kill -t 终端名称

w命令的属性解释:
USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY:用户登陆所用的终端。
FROM:显示用户在何处登陆系统。
LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。
JCPU:一终端代号来区分,表示在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务
image.png

原文链接:https://blog.csdn.net/fyy1219/article/details/10108067

文本查看:
cat,tac,less,more,tail,tailf,grep

文件时间:
atime:最近一次访问时间
ctime:最近一次更改,例如权限
mtime:最近一次修改内容

如何查看:
七种文件格式:
-,d,s,l,c,b,p

管道及重定向:


覆盖重定向
>>追加重定向

|管道符:将两个命令结合起来,其中一个命令的结果会作为另一个命令的参数

有以下小工具

tr,wc,cut,sort

用户和组:


创建一个用户:
useradd -u -g -G -s -d -c -r
用userdel删除用户时,加r删除家目录不加r不删除家目录

给用户修改密码:
passwd username //管理员用户可以直接给用户修改密码。普通用户需要知道自己的密码才能修改
-n -x -w -i

当创建好用户后 修改用户的信息:
usermod:
gpasswd:以组的角度去修改信息

文件权限:


更改属主组
chown
更改权限
chmod

特殊权限:
suid,sgid,sbit
suid:借出程序所有者的权限,s有x权限,S是所有者没有x权限。SUID权限仅对二进制文件有效。
SGID:借出用户组的权限,s有x权限,S是所属组没有x权限,SGID权限仅对二进制文件有效。
SBIT:用来做共享目录,当属主有x权限用t,没有x权限用T。只针对目录有效,用户在此目录中创建文件,只有Root用户和自己能删除该文件,其他用户不能删除。

suid 4 # 使用文件所有者身份执行文件<针对文件>
sgid 2 # 新建文件继承目录属组<针对目录>
sticky 1 # 文件只能由文件拥有者,root,文件夹拥有者删除<针对目录>

创建目录的默认权限是777 但是umask的默认值是0022 所以创建的目录的权限是:rwxr-xr-x。文件的默认权限是666,所以创建文件的权限是:rw-r—r—

文件和目录的权限有点不同:
文件的rwx:r可以查看,w可以更改里面的内容,x可以访问
目录的rwx:r可以使用ls命令查看有哪些文件,w可以增删改文件名,x可以cd到该目录下

查看进程:


ps(process status):
常用参数:a:与终端有关的进程
x:与终端无关的进程
u:以用户为中心的进程

常用组合:ps -ef
-e:显示所有进程
-f:显示完整格式程序信息

ps -eo ps-axo
-o:自定义想要查询的字段值
-eo:pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
image.png
静态查看进程的状态,每个参数的意思,

  • user:运行该进程的用户
  • pid:进程号
  • %cpu:CPU占用的百分比
  • %mem:内存占用率
  • vsz:占用的虚拟内存
  • rss:实际的占用内存
  • tty:运行的终端
  • stat:进程的状态。

    1. 进程的状态:R,S,D,T,Z,X. <br /> s进程的领导者,+在前台运行的进程,l多线程的进程,<高优先级进程,N低优先级进程。<br />R:正在运行的进程<br />S:浅睡眠中的进程<br />D:不可终端睡眠<br />T:停止的进程<br />Z:僵尸进程<br />X:死掉的进程
  • start:进程启动的时间

  • time:进程占用cpu的时间
  • command:启动进程时的命令。

top:

相当于是任务管理器,动态显示进程的状态
image.png
M:按使用内存排序
P: 按照cpu使用排序
1:显示所有cpu信息
N:按照pid排序
R:对排序进行反转
f:自定义显示字段
k:输入信号

如何查看僵尸进程并处理:

如何理解linux的平均负载:

image.png
load average:就是平均负载,后面的三个数值表示一分钟,五分钟,和十五分钟的平均负载。我们可以根据这三个指标判断系统负载是上升的还是下降的。
它表示的含义是:在单位时间内,系统处于可运行状态和不可中断状态的平均进程数。他和cpu使用率并没有直接的关系,可运行状态就是正在使用CPU和正在等待CPU的进程,不可中断状态就是处于D状态的进程,它们可能是正在向磁盘写数据,为了保证数据的一致性,在磁盘的回复之前,不可以被打断。可以理解为单位时间中活跃进程数的平均值
https://www.jianshu.com/p/9821796a3eb1

字段解释:

image.png

系统当前时间,系统运行时长,当前登录系统的用户数,系统平均负载

image.png
总进程数,正在运行的进程,睡眠状态的进程数,停止状态的进程数,僵尸状态的进程数。

image.png
用户空间cpu使用率,内核空间cpu使用率,通过修改nice值的进程执行占用cpu率,等待io完成的cpu时间百分比,硬中断占用的cpu百分比,软中断占用的cpu百分比,被虚拟机偷走的cpu时间比率

image.png
总内存,空闲内存,使用了的内存,缓存。
交换分区:是在磁盘上划分一块区域作为内存的备用池。

image.png
进程id,用户,优先级,nice值,进程占用的虚拟内存,进程占用的物理内存,进程占用的共享内存,进程的状态,cpu使用率,内存使用率,占用cpu的时间,启动的命令。

VMStat:

image.png
正在运行的进程数,等待io的进程数,从磁盘交换区读取到内存的速率,从内存到磁盘交换区的速率。

PS和top的区别:

关于进程:


进程状态:
R:运行状态,此进程要么在运行,要么就在运行的队列中。
S:睡眠状态:意味着进程在等待事件的完成
D:磁盘睡眠状态:有时候叫做不可中断睡眠,在这个状态的进程通常会等待io的结束
T:停止状态:可以通过发送sigstop让进程停止,也可以通过sigcnt让程序继续运行
Z:僵尸状态:通知父进程回收所有资源
X:这个状态只是一个返回状态并会在任务列表中看到它

僵尸进程:

当一个进程fork一个子进程后,如果子进程退出,父进程并没有利用wait或者waitpid来获取子进程的状态,那么子进程的状态描述符依然在系统中

孤儿进程:

一个进程在运行时,它的父进程被杀死了,那么这个进程就会变为孤儿进程,从而被init托管。

当父/子进程在不同时间点退出时,就可能会出现Z的细分状态:

  1. 僵尸状态
    一个进程使用 fork 创建子进程,如果子进程退出后父进程没有调用 wait 或 waitpid 获取子
    进程的状态信息,并将子进程释放掉。那么子进程的进程描述符仍然保存在系统中,仍然占
    用进程表,此时进程就处于僵尸状态。
    子进程在退出的过程中,内核会给其父进程发送一个信号,通知父进程来“ 收尸”。出现僵尸
    状态可能有两种情况:
    第一种情况,父进程收到通知还没来得及完成收尸,此时正常;
    第二种情况,父进程收尸出现异常,此时,只要父进程不退出,子进程的僵尸状态就一直存
    在,可以通过杀死父进程或者重启来解决。
  2. 孤儿状态
    父进程退出,相应的一个或多个子进程还在运行,那么那些子进程将处于孤儿状态,成为孤
    儿进程。这些进程会被托管给别的进程,可能是退出进程所在进程组的下一个进程(如果存
    在的话),或者是1号进程。所以每个进程、每时每刻都有父进程存在。除非它是1号进程。

    信号控制进程:


kill
image.png

kill -9 和 kill -15的区别:

存储结构与磁盘划分


软硬方式链接


硬链接:

可以将它理解为一个指向原始inode的指针,系统不为他分配独立的inode和文件,所以,硬链接文件与原文件指的是同一个文件,只是名字不一样,我们每添加一个硬链接,该节点的链接数就会加1,只有当该文件的链接数为0的时候,该文件才会被删除。源文件被删除后,依然可以通过硬链接文件来访问,需要注意的是,不可以跨分区对目录文件进行链接。
image.png

软链接:

仅仅包含源文件的路径名,因此能连接目录文件,也可以跨越文件系统进行连接,但是当原始文件被删除后,连接文件也会失效,与快捷方式类似

image.png

硬链接的特点:
  • 不论是修改源文件还是链接文件,另一个文件中的内容都会被修改
  • 无论是删除源文件还是连接文件,只要是链接数不为0,该文件都可以打开
  • 硬链接不会建立新的inode信息,也不会更改inode总数
  • 硬链接不能跨分区建立
  • 不能链接目录
  • 权限是源文件的权限

软连接的特点:

  • 不论是修改源文件还是连接文件,内容都会被修改
  • 删除软连接文件,源文件可以访问,反之则不可以
  • 软连接会建立自己的inode和bolck,只是在block中存储的是源文件的文件名和inode号
  • 软连接可以连接目录,软连接可以跨分区
  • 权限是777实际权限由指向的文件确定。

创建链接:

ln -s 源文件 链接文件

使用RAID与LVM磁盘阵列技术


RAID:独立冗余磁盘阵列

常见RAID级别:

RAID0

读取速率得到一定提高,没有数据冗余性,最少需要两块硬盘组合,有效硬盘是N块。

RAID1

读取速率没有提高,有数据冗余性,最少需要两块硬盘,有效硬盘是n/2。

RAID5

读取速率提高,具有数据安全性,最少需要3块硬盘,有效硬盘是n-1

RAID10

具有数据冗余性,提高数据读写速率,有效存储空间为n/2

RAID01

VMware的三种网卡模式


NAT模式:

桥接模式:

仅主机模式:

iptables


iptables:

它是一个客户端代理,将用户的安全设定执行到对应的安全框架-netfilter中。
netfilter是防火墙真正的安全框架,位于内核空间中
netfilter/iptables组成Linux平台下的包过滤防火墙
Netfilter是Linux操作系统核心层的一个数据包处理模块(iptables并没有守护进程, 所以不是正真的服务,而是内核提供的功能),具有如下功能:

  • 网络地址转换
  • 数据包内容修改
  • 数据包过滤的防火墙功能

原理:


iptables根据它的rule匹配对数据包进行,放行,拒绝,丢弃等动作。rule存储在内核空间的信息过滤表中,这些规则指定:源地址,目的地址,传输协议(tcp,udp,icmp等)和服务类型(http,ftp和smtp)等,netfilter位于内核空间中,是真正的防火墙,设置了关卡在input,output链,网卡驱动是在内核空间中,netfilter也是在内核空间中,所以iptables+netfilter可以在内核空间中设置关卡,当用户去访问应用服务时,数据包是通过网卡流经内核空间,再到内核空间的。当这些数据包不被允许时,则到不到了用户空间,就形成了防火墙。

其实iptables并不是真正的防火墙,他只是用来制定防火墙规则功能的防火墙管理工具,将定义好的规则给内核空间中的netfilter既网络过滤器来读取,从而实现真正的防火墙功能。

iptables抵挡封包的方式:

  • 拒绝让internet的封包进入linux主机的某些port
  • 拒绝让某些来源的ip封包进入
  • 拒绝让带有某些特殊标志的封包进入
  • 分析硬件地址来提供服务

五链四表


image.png

五链:

iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一条链,叫规则链,规则链根据处理数据包的位置不同分成五条链:

  • prerouting:在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
  • input:处理入站的数据包
  • output:处理出战的数据包
  • forward:处理转发的数据包
  • postrouting:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)

    四表:

    iptables中的规则表是用来容纳规则链的,规则表默认是允许的,那么规则链就是设置被禁止的规则,反之。

  • raw表:关闭NAT上面启动的连接追踪机制

  • mangle表:拆解报文,修改报文,重新封装报文
  • nat表:网络地址转换
  • filter表:负责过滤功能,防火墙。

image.png

规则表的先后顺序,raw,mangle,nat,filter

表链关系:

相同规则的集合叫做表,多张表的集合叫做链 根据链的位置不同就分为不同的链。

几个重要概念:表,链,规则,匹配条件,处理动作,数据封包。

规则概念


规则:

根据指定的匹配条件来尝试匹配每个流经关卡的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理

匹配条件:

基本匹配条件:sip,dip
扩展匹配条件:sport,dport
拓展条件也是条件的一部分,只不过使用的时候需要用-m参数声明对应的模块

处理动作:

accept,drop,reject,dnat,redirect,snat,masquerade,log

总结:

重要知识点:

  • 查看进程的两种方式,并且每种方式具体的含义
  • 僵尸进程和孤儿进程
  • 软链接和硬链接的区别
  • iptables的相关概念
  • kill -9 -15 的区别
  • 进程线程和协程
  • PS和top的区别: