一、权限扩展
文件权限管理之: 隐藏权限防止root误删除
文件属性添加与查看
[root@linux-server ~]# touch file1 file2 file3
1.查看文件属性
[root@linux-server ~]# lsattr file1 file2 file3 
---------------- file1
---------------- file2
---------------- file3
2.设置权限
[root@linux-server ~]# chattr +a file1  #不允许修改,只允许追加
[root@linux-server ~]# chattr +i file2  #不允许做任何操作
[root@linux-server ~]# chattr +A file3
[root@linux-server ~]# lsattr file1 file2 file3
-----a---------- file1
----i----------- file2
-------A-------- file3
i:即Immutable,系统不允许对这个文件进行任何的修改
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何覆盖这个文件
A:即Atime,告诉系统不要修改对这个文件的最后访问时间测试效果
[root@linux-server ~]# echo 111 > file1  #覆盖,只允许追加
-bash: file1: Operation not permitted
[root@linux-server ~]# rm -rf file1     #不能删除
rm: cannot remove ‘file1’: Operation not permitted
[root@linux-server ~]# echo 111 >> file1 #追加
[root@linux-server ~]# echo 111 > file2
-bash: file2: Permission denied
[root@linux-server ~]# echo 111 >> file2
-bash: file2: Permission denied
[root@linux-server ~]# rm -rf file2
rm: cannot remove ‘file2’: Operation not permitted
[root@linux-server ~]# mv file2 file4
mv: cannot move ‘file2’ to ‘file4’: Operation not permitted
取消权限
[root@linux-server ~]# chattr -a file1 
[root@linux-server ~]# chattr -i file2二、进程管理
关于进程 process
What is a process?  什么是进程
Process states  进程状态什么是进程?
进程是已启动的可执行程序的运行实例,是程序运行的过程,动态的,有生命周期及运行状态。程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/sbin/nginx
查看进程 process
静态查看进程
[root@linux-server ~]# ps aux | less
参数解释:
ps :process nsapashot
a 只能查看系统里面运行的所有终端进程
u 显示进程拥有者
x 显示系统内所有进程
f 显示进程之间的父子关系
-------------------[root@linux-server ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
============================================================================
USER:   #运行进程的用户
PID:   #进程ID
%CPU:   #CPU占用率
%MEM:   #内存占用率
VSZ     进程占用的虚拟内存大小
RSS     占用的物理内存大小
STAT:  #进程状态  ---了解
?    表示没有占用终端
R   运行
S   可中断睡眠 Sleep
D   不可中断睡眠
T   停止的进程 
Z   僵尸进程
X    死掉的进程
START:  #进程的启动时间
TIME:   #进程占用CPU的总时间
COMMAND: #进程文件,进程名
进程状态--了解
Sl  以线程的方式运行
Ss  s进程的领导者,父进程
R+  +表示是前台的进程组
S< <优先级较高的进程    
SN  N优先级较低的进程查看tty的方法:
[root@linux-server ~]# tty
? 表示这个进程开启的时候没有占用终端查看进程(二)
[root@linux-server ~]# ps -ef
参数解释:
-e 显示所有进程
-l 长格式显示
-f 完整格式
UID       用户ID
PID       进程ID
PPID      父进程ID
C         CPU占用率
STIME     开始时间
TTY       开始此进程的TTY----终端设备
TIME      此进程运行的总时间
CMD       命令名查看单个PID
[root@linux-server ~]# yum install -y httpd  #安装apache软件
[root@linux-server ~]# systemctl start httpd #启动
[root@linux-server ~]# cat /var/run/httpd/httpd.pid
1043查看指定PID
[root@linux-server ~]# ps aux | grep sshd
root       1043  0.0  0.2 105996  4120 ?        Ss   01:32   0:00 /usr/sbin/sshd -D
grep:过滤查看端口
[root@linux-server ~]# yum install lsof  #安装软件包
[root@linux-server ~]# lsof -i:80   #端口号,这能查看带端口的进程
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
httpd   64249   root    4u  IPv6 1373628      0t0  TCP *:http (LISTEN)
#注意:端口号只有整数,范围是从0 到65535
参数解释:
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小#查网络进程和正在监听的端口
[root@linux-server ~]# netstat -lntp
参数详解:
-a  显示全部的进程
-u  显示udp
-n  以数字的新式显示协议名称
-t   tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口
参数解释:
recv-Q:网络接收队列
send-Q:网路发送队列
Foreign Address:与本机端口通信的外部请求[root@linux-server ~]# w  #看已经登陆到终端的进程信息,远程登陆会有ip 地址
部分参数解释:
USER –登录用户名.
TTY –登录用户使用的终端名.
FROM –登录用户来源的主机名或IP地址.
LOGIN@ –用户登录时间.
WHAT –用户当前的进程及选项/参数。动态查看进程
top、htop
[root@linux-server ~]# top #动态显示信息,三秒刷新一次。

在工作中必须监控的东西 load average(平均负载)等待cpu处理的队列长度 也是个数。
1分钟   第一个数字
5分钟   第二个数字
15分钟  第三个数字
======================
计算cpu负载:load average的三个值: 0.10, 0.16, 0.12,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。top操作
[root@linux-server ~]# top
h|? 帮助
> 往下翻页
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出   
z 彩色显示
W 保存
=============================
PR   优先级
VIRT 进程使用的虚拟内存总量,单位kb。
RES  进程使用的、未被换出的物理内存大小,单位kb。
SHR  共享内存大小,单位kb
top - 16:26:45 up 14:54, 3 users,load average: 0.05, 0.06, 0.05Tasks: 129 total, 2 running, 127 sleeping, 0 stopped, 0 zombie
| 内容 | 含义 | 
| 16:26:45 | 表示当前时间 | 
| up 14:54 | 系统远行时间,格式为时:分 | 
| 3 users | 当前登陆用户数 | 
| load average: 0.05, 0.06, 0.05 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 | 
| 129 total | 进程总数 | 
| 2 running | 正在运行的进程数 | 
| 127 sleeping | 睡眠的进程数 | 
| 0 stopped | 停止的进程数 | 
| 0 zombie | 僵尸进程数 | 
%Cpu (s) : 0.2 us, 1.0 sy, 0.0 ni, 98.8 id,0.0 wa, 0.0 hi, 0.0 si, 0.0 st
| 内容 | 含义 | 
| 0.2 us | 用户空间占用CPU百分比 | 
| 1.0 sy | 内核空间占用CPU百分比 | 
| 0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 | 
| 98.9 id | 空闲CPU百分比 | 
| 0.0 wa | 等待输入输出的CPU时间百分比 | 
| 0.0 hi | 硬中断(Hardware IRQ)占用CPU的百分比 | 
| 0.0 si | 软中断(Software Interrupts)占用CPU的百分比 | 
| 0.0 st | 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间 | 
KiB Mem : 2031912 total, 1549816 free, 155372 free, 326724 buff/cache
| 内容 | 含义 | 
| 2031912 total | 物理内存总量 | 
| 1549816 free | 使用的物理内存总量 | 
| 155372 used | 空闲内存总量 | 
| 326724 buff/cache | 用作内核缓存的内存量 | 
KiB Swap: 2097148 total, 2097148 free, 0 used, 1674648 avail Mem
| 内容 | 含义 | 
| 2097148 total | 交换区总量 | 
| 2097148 free | 使用的交换区总量 | 
| 0 used | 空闲交换区总量 | 
| 1674648 Avail Mem | 缓冲的交换区总量 | 
ni: nice值
id: cpu空闲率
wa: cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了回顾:
程序 进程
工具 服务
后台 前台
====================================
进程、 线程、 协程
每个程序运行,都会至少启动一个进程,叫做主进程
每个进程会至少开启一个线程,叫做主线程
进程之间资源隔离,线程之间资源共享
e.g. 登qq 林俊杰演唱会门票
同步、异步
协程解决异步问题
e.g. 洗菜
并行、 并发
时间段
====================================
占用CPU的百分比,占用内存
VSZ 虚拟的的内存占用
RSS 实际占用
TTY 终端
STAT 进程的状态
START 啥时候开的
TIME 运行了多久(占用了CPU才算)
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程用户 进程编号 虚拟内存 实际物理内存 进程状态 占用cpu的时间 启动命令
a:查看所有终端进程,tty不是?
u: 进程的用户,cpu等信息
x:所有进程
f:进程之间的父子关系
补充:
查询系统中cpu占用排名前3的进程是什么
ps -aux --sort=%cpu | head -4 升序
ps -aux --sort=-%cpu | head -4 降序
查看服务器cpu有几个核心
lscpu
ls /dev/cpu | wc -l
查看/etc目录下有哪些文件中包含"particular users to run"这个字符串
grep -r "particular users to run" /etc
grep "particular users to run" /etc/* 2> /dev/null
今天的分享就到这里啦,再见喽~~~~~~



















