shell部分
我们可以通过使用shell来对操作系统进行如下管理
- 文件管理
- 用户管理
- 磁盘管理
- 权限管理
- 网络管理
- 软件管理
- ……
文件系统
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:表示当前执行的任务
原文链接: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
静态查看进程的状态,每个参数的意思,
- user:运行该进程的用户
- pid:进程号
- %cpu:CPU占用的百分比
- %mem:内存占用率
- vsz:占用的虚拟内存
- rss:实际的占用内存
- tty:运行的终端
stat:进程的状态。
进程的状态: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:
相当于是任务管理器,动态显示进程的状态
M:按使用内存排序
P: 按照cpu使用排序
1:显示所有cpu信息
N:按照pid排序
R:对排序进行反转
f:自定义显示字段
k:输入信号
如何查看僵尸进程并处理:
如何理解linux的平均负载:
load average:就是平均负载,后面的三个数值表示一分钟,五分钟,和十五分钟的平均负载。我们可以根据这三个指标判断系统负载是上升的还是下降的。
它表示的含义是:在单位时间内,系统处于可运行状态和不可中断状态的平均进程数。他和cpu使用率并没有直接的关系,可运行状态就是正在使用CPU和正在等待CPU的进程,不可中断状态就是处于D状态的进程,它们可能是正在向磁盘写数据,为了保证数据的一致性,在磁盘的回复之前,不可以被打断。可以理解为单位时间中活跃进程数的平均值
https://www.jianshu.com/p/9821796a3eb1
字段解释:
系统当前时间,系统运行时长,当前登录系统的用户数,系统平均负载
总进程数,正在运行的进程,睡眠状态的进程数,停止状态的进程数,僵尸状态的进程数。
用户空间cpu使用率,内核空间cpu使用率,通过修改nice值的进程执行占用cpu率,等待io完成的cpu时间百分比,硬中断占用的cpu百分比,软中断占用的cpu百分比,被虚拟机偷走的cpu时间比率
总内存,空闲内存,使用了的内存,缓存。
交换分区:是在磁盘上划分一块区域作为内存的备用池。
进程id,用户,优先级,nice值,进程占用的虚拟内存,进程占用的物理内存,进程占用的共享内存,进程的状态,cpu使用率,内存使用率,占用cpu的时间,启动的命令。
VMStat:
正在运行的进程数,等待io的进程数,从磁盘交换区读取到内存的速率,从内存到磁盘交换区的速率。
PS和top的区别:
关于进程:
进程状态:
R:运行状态,此进程要么在运行,要么就在运行的队列中。
S:睡眠状态:意味着进程在等待事件的完成
D:磁盘睡眠状态:有时候叫做不可中断睡眠,在这个状态的进程通常会等待io的结束
T:停止状态:可以通过发送sigstop让进程停止,也可以通过sigcnt让程序继续运行
Z:僵尸状态:通知父进程回收所有资源
X:这个状态只是一个返回状态并会在任务列表中看到它
僵尸进程:
当一个进程fork一个子进程后,如果子进程退出,父进程并没有利用wait或者waitpid来获取子进程的状态,那么子进程的状态描述符依然在系统中
孤儿进程:
一个进程在运行时,它的父进程被杀死了,那么这个进程就会变为孤儿进程,从而被init托管。
当父/子进程在不同时间点退出时,就可能会出现Z的细分状态:
- 僵尸状态
一个进程使用 fork 创建子进程,如果子进程退出后父进程没有调用 wait 或 waitpid 获取子
进程的状态信息,并将子进程释放掉。那么子进程的进程描述符仍然保存在系统中,仍然占
用进程表,此时进程就处于僵尸状态。
子进程在退出的过程中,内核会给其父进程发送一个信号,通知父进程来“ 收尸”。出现僵尸
状态可能有两种情况:
第一种情况,父进程收到通知还没来得及完成收尸,此时正常;
第二种情况,父进程收尸出现异常,此时,只要父进程不退出,子进程的僵尸状态就一直存
在,可以通过杀死父进程或者重启来解决。 - 孤儿状态
父进程退出,相应的一个或多个子进程还在运行,那么那些子进程将处于孤儿状态,成为孤
儿进程。这些进程会被托管给别的进程,可能是退出进程所在进程组的下一个进程(如果存
在的话),或者是1号进程。所以每个进程、每时每刻都有父进程存在。除非它是1号进程。信号控制进程:
kill -9 和 kill -15的区别:
存储结构与磁盘划分
软硬方式链接
硬链接:
可以将它理解为一个指向原始inode的指针,系统不为他分配独立的inode和文件,所以,硬链接文件与原文件指的是同一个文件,只是名字不一样,我们每添加一个硬链接,该节点的链接数就会加1,只有当该文件的链接数为0的时候,该文件才会被删除。源文件被删除后,依然可以通过硬链接文件来访问,需要注意的是,不可以跨分区对目录文件进行链接。
软链接:
仅仅包含源文件的路径名,因此能连接目录文件,也可以跨越文件系统进行连接,但是当原始文件被删除后,连接文件也会失效,与快捷方式类似
硬链接的特点:
- 不论是修改源文件还是链接文件,另一个文件中的内容都会被修改
- 无论是删除源文件还是连接文件,只要是链接数不为0,该文件都可以打开
- 硬链接不会建立新的inode信息,也不会更改inode总数
- 硬链接不能跨分区建立
- 不能链接目录
- 权限是源文件的权限
软连接的特点:
- 不论是修改源文件还是连接文件,内容都会被修改
- 删除软连接文件,源文件可以访问,反之则不可以
- 软连接会建立自己的inode和bolck,只是在block中存储的是源文件的文件名和inode号
- 软连接可以连接目录,软连接可以跨分区
- 权限是777实际权限由指向的文件确定。
创建链接:
ln -s 源文件 链接文件
使用RAID与LVM磁盘阵列技术
常见RAID级别:
RAID0
读取速率得到一定提高,没有数据冗余性,最少需要两块硬盘组合,有效硬盘是N块。
RAID1
读取速率没有提高,有数据冗余性,最少需要两块硬盘,有效硬盘是n/2。
RAID5
读取速率提高,具有数据安全性,最少需要3块硬盘,有效硬盘是n-1
RAID10
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封包进入
- 拒绝让带有某些特殊标志的封包进入
- 分析硬件地址来提供服务
五链四表
五链:
iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一条链,叫规则链,规则链根据处理数据包的位置不同分成五条链:
- prerouting:在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
- input:处理入站的数据包
- output:处理出战的数据包
- forward:处理转发的数据包
postrouting:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
四表:
iptables中的规则表是用来容纳规则链的,规则表默认是允许的,那么规则链就是设置被禁止的规则,反之。
raw表:关闭NAT上面启动的连接追踪机制
- mangle表:拆解报文,修改报文,重新封装报文
- nat表:网络地址转换
- filter表:负责过滤功能,防火墙。
规则表的先后顺序,raw,mangle,nat,filter
表链关系:
相同规则的集合叫做表,多张表的集合叫做链 根据链的位置不同就分为不同的链。
几个重要概念:表,链,规则,匹配条件,处理动作,数据封包。
规则概念
规则:
根据指定的匹配条件来尝试匹配每个流经关卡的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理
匹配条件:
基本匹配条件:sip,dip
扩展匹配条件:sport,dport
拓展条件也是条件的一部分,只不过使用的时候需要用-m参数声明对应的模块
处理动作:
accept,drop,reject,dnat,redirect,snat,masquerade,log