就业班 2401--2.26 Linux Day5--进程管理一
一、权限扩展
文件权限管理之: 隐藏权限防止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+ +表示是前台的进程组 Stop - 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 百分比。如果使用率过高,表示硬盘该换了
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。 nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。 指令: renice -p # 一般不调整
进程控制
按pid杀死进程
kill,pkill 语法: kill 信号 PID #信号也是进程间通信的一种方式
[root@linux-server ~]# kill -l #查看所有信号 -1 HUP 重新加载进程或者重新加载配置文件,PID不变 -9 KILL 强制杀死 -15 TERM 正常杀死(这个信号可以默认不写) -18 CONT 激活进程 -19 STOP 挂起进程
kill 补充
pidof httpd
pgrep nginx
案例一
给vsftpd进程发送信号1,15 vsftpd信号测试
[root@linux-server ~]# yum install -y vsftpd #安装vsftpd [root@linux-server ~]# systemctl start vsftpd #启动 [root@linux-server ~]# ps aux | grep vsftpd root 59363 0.0 0.0 53212 576 ? Ss 16:47 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf [root@linux-server ~]# kill -1 59363 #发送重启信号,例如vsftpd的配置文件发生改变,希望重新加载
[root@linux-server ~]# ps aux | grep vsftpd root 59363 0.0 0.0 53212 748 ? Ss 16:47 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf [root@linux-server ~]# kill 59363 #正常杀死进程,信号为-15可以默认不写。我们可以使用systemctl stop vsftpd 停止服务。 [root@linux-server ~]# ps aux | grep vsftpd root 62493 0.0 0.0 112660 968 pts/0 S+ 16:51 0:00 grep --color=auto vsftpd 进程状态解释--了解: +:表示运行在前台的进程 S+:休眠状态 T+:暂停,挂起状态 s:父进程
案例二
给vsftpd进程发送信号-9, vsftpd信号测试
[root@linux-server ~]# systemctl start vsftpd [root@linux-server ~]# ps aux | grep vsftpd root 67003 0.0 0.0 53212 572 ? Ss 16:57 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 67089 0.0 0.0 112660 972 pts/0 S+ 16:57 0:00 grep --color=auto vsftpd [root@linux-server ~]# kill -9 67003 #强制杀死,一般用于不能正常停止的情况下 [root@linux-server ~]# ps aux | grep vsftpd root 67190 0.0 0.0 112660 972 pts/0 S+ 16:57 0:00 grep --color=auto vsftpd
案例三
使用pkill 杀死vsftpd进程
[root@linux-server ~]# systemctl start vsftpd [root@linux-server ~]# ps -aux | grep vsftpd root 73399 0.0 0.0 53212 572 ? Ss 17:05 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 73499 0.0 0.0 112660 968 pts/0 S+ 17:05 0:00 grep --color=auto vsftpd [root@linux-server ~]# pkill -9 vsftpd #使用pkill可以指定进程名字 [root@linux-server ~]# ps -aux | grep vsftpd root 73643 0.0 0.0 112660 968 pts/0 S+ 17:05 0:00 grep --color=auto vsftpd
作业控制
作业控制之jobs:
作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
实战案例
[root@linux-server~]# sleep 7000 & #&:让命令或者程序后台运行 [1] 5441 [root@linux-server ~]# sleep 8000 #ctrl+z 把程序放到后台(这方法会让程序在后台暂停) ^Z [2]+ Stopped sleep 8000 [root@linux-server ~]# jobs #查看后台的工作号 [1]- Running sleep 7000 & [2]+ Stopped sleep 8000 [root@linux-server ~]# bg %2 #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号) [2]+ sleep 8000 & [root@linux-server ~]# jobs [1]- Running sleep 7000 & [2]+ Running sleep 8000 & [root@linux-server ~]# fg %1 #将后台的程序调到前台 sleep 7000 [root@linux-server ~]# jobs [2]+ Running sleep 8000 & [root@linux-server ~]# kill -9 %2 #通过kill杀死进程 [root@linux-server ~]# jobs [2]+ Killed sleep 8000 [root@linux-server ~]# jobs #在次查看没有了
三、常用命令
- 查看当前CPU负载
[root@linux-server ~]# uptime 17:35:01 up 16:02, 3 users, load average: 0.00, 0.02, 0.05
- 查看内存使用
[root@linux-server ~]# free -m total used free shared buff/cache available Mem: 1984 154 1508 8 321 1632 Swap: 2047 0 2047 -m:单位M
- linux启动过程
1. 加电 2. 加载bios设置 3. 加载grub, 4. 加载内核系统到内存当中 5. 加载配置文件 6. 加载内核模块 7. 完成相应的初始化工作和启动相应的服务 8. 启动系统进程 9. 出现登录界面 10. 开机启动完成
- 查看系统的版本和内核
[root@linux-server ~]# cat /etc/redhat-release #查看版本 CentOS Linux release 7.4.1708 (Core) [root@linux-server ~]# uname -a #看查正在运行的内核版本 Linux linux-server 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@linux-server ~]# uname -r #查看内核版本 3.10.0-693.el7.x86_64
- 修改主机名
[root@linux-server ~]# hostnamectl set-hostname xxxx #主机名,修改完之后断开与终端连接,然后在重新连接即可。 查看主机名 [root@linux-server ~]# hostname
- 跳板机(堡垒机)的作用
1 身份验证 2 屏幕录制,防止员工对服务器做有害的操作 3 批量操作 一次性操作2-200台机器
- 安装过操作系统吗?怎么安装?
1.小批量设备,使用U盘安装 (调整bios参数从U盘启动) 2.大批量设备搭建PXE装机系统,从网络批量安装 (调整网络启动项,从网络启动)
- 上传下载
# yum install -y lrzsz 上传 # rz 下载 # sz 文件
回顾:
程序 进程
工具 服务
后台 前台
====================================
进程、 线程、 协程
每个程序运行,都会至少启动一个进程,叫做主进程
每个进程会至少开启一个线程,叫做主线程
进程之间资源隔离,线程之间资源共享
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
今天的分享就到这里啦,再见喽~~~~~~
还没有评论,来说两句吧...