目录
一、进程定义
程序和进程
程序是静态的代码文件
进程是指程序运行时的形态
进程是程序的一个副本
进程是有生命周期的(准备期,运行期,中止期)
示例:ls /bin/watch
watch -n 1 ->mem->cpu->mem->ctrl+c
(加载准备期,运行期,中止期)
进程和线程
进程是资源调用的最小单位。
线程是进程的最小单位,线程资源是共享的。
程序执行流是从上到下贯彻运行的,当进程是多任务的,cpu是多核,多任务应该同时被每个核心处理,每个核心处理的任务叫线程。
进程状态
R(TASK_RUNNING) 可执行态(running,ready) S(TASK_INTRRUPTABLE) 可唤醒休眠,cpu占用时间是有额度,当超时会被休眠 D(TASK_UNINTRRUPTABLE) 不可唤醒休眠 T(TASK_STOP) 暂停状态
Z(EXIT_ZOMBIE) 僵死态
示例: gedit->ctrl+c->ps -o stat,com
发现gedit进入暂停状态
二、进程查看命令
gnome-system-monitor
图形进程查看工具
ps
进程查看
命令有三种执行风格:unix bsd GNU
a
与终端相关的进程(当用户登录系统后产生的进程都是带终端的)
x
与终端无关的进程
u
用户信息归类的查看方式
f
进程层级关系
o
显示指定参数
pid(进程ID)
comm(进程名字)
nice(进程优先级)
pri(内核调度优先级)
pcpu()
ppid(父进程号)
stat(进程状态)
user(用户名)
group(用户组)
-e
显示所有进程
-f
显示信息的完整格式
-H
显示进程的层级结构
-o
显示指定参数
--sort= uid,-ppid,+pid
按某一参数,倒序,正序排序
示例:ps ax显示信息如下
pid(进程id)TTY(进程用到的终端)STAT(进程状态)TIME(进程占用cpu时长)COMMAND(进程名称)
示例:ps aux 显示信息如下
user(进程所有人)pid(进程id) %CPU(CPU占用量) %MEM(内存占用量)VSZ(虚拟内存大小) RSS(常驻内存数据大小) TTY(终端) STAT(进程状态) START(进程运行时长)TIME(占用cpu时长) COMMANDS(进程名称)
示例:ps f 进程层级关系
示例:ps -o 参数 指定查看
示例:抓取系统中cpu使用量前5的进程的pid
ps axo pid –sort=-%cpu | head -n 6 | tail -n 5
pgrep
进程过滤
(ps aux | grep westos查看指定元素,但不准确)
-u
按uid显示指定用户进程
-U
按user显示指定用户进程
-t
按tty 显示指定终端进程
-l
显示进程名称
-a
显示进程的完整名称
-P
显示进程的子进程
示例:id westos pgrep -lu 1000 pgrep -la -t pts/0 pgrep -la -P 14136
pidof
pidof vim 查看vim的pid
top
动态进程查看
top中的内容显示信息:
top - 09:50:39 up 12:00, 1 user, load average: 0.09, 0.12, 0.09
系统时间,登录用户数,1min 5min 15min平均负载
Tasks: 327 total, 1 running, 322 sleeping, 4 stopped, 0 zombie
任务总量,运行,休眠任务数量,暂停数量,僵死数量
%Cpu(s): 12.5 us, 8.3 sy, 0.0 ni, 79.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
用户空间,内核时间,nice值调整时间,空闲时间,等待io时间,处理硬件中断时间,处理软件中断时间,被偷走时间(vm使用)
MiB Mem:3758.6 total, 1877.6 free, 1177.2 used, 703.9 buff/cache
总量,空闲,占用,缓存(可被清理)
MiB Swap:2048.0 total, 2048.0 free, 0.0 used. 2320.1 avail Mem
交换分区用量
top命令参数:
-d
刷新频率
-b
以批次方式显示
-n
指定显示的批次数量
示例:top -n -b 2 按批次显示两次
top内部指令:
<P>
cpu用量排序
<M>
内存排序
<T>
累计占用cpu时间排序
<t>
关闭开启cpu&task
<l>
关闭/开启uptime信息
<s>
指定刷新频率
<k>
操作进程
<u>
查看指定用户进程
三、进程优先级
系统是多任务多用户的操作模式,任务的重要性是有区分的,如何确定任务的重要性
“优先级”
范围:0—139
内核自控优先级:0-99
用户可控优先级:100-139
renice
更改优先级
nice
指定优先级
示例:
ps -o pid,nice,stat,comm vim
renice -n -5 pid 更改pid优先级
关掉vim
ps查看pid号》top》k》pid》9杀掉进程
注:
S sleeping
< 优先级高
s 顶级进程
T stop
N 优先级底
R running
+ 运行在前台
四、进程前后台调用
<ctrl>+<z>
把占用shell的进程后台挂起
bg+job号
把后台挂机的进程运行起来
fg+job号
把后台进程调回前台
fg 调回jobs中带+号的进程
&
运行进程在后台
jobs
查看当前shell中在后台的所有工作
示例:
五、进程信息号
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件killed
示例:pkill -u westos -9 指定杀掉用户名为westos的进程
进程信号:
1
重读系统配置文件
2
清空内存中的进程数据
3
情况内存中的鼠标(ctrl+\)
9
强行结束继承(不能被阻塞)
15
正常关闭进程(可以被阻塞)
18
重运行被暂停的进程
19
暂停进程(不会被阻塞)
20
暂停进程(会被阻塞)
示例: vim .bashrc改变umask kill -1 49447 自动关掉程序,再次开启umask就会改变
kill -2 用法
vim &在后台运行
kill -15 关闭进程会发生阻塞
kill -9会强制关闭,不阻塞
示例:
kill -19 暂停3842进程,无法操作,用kill -18 3842如图上方的shell界面便可继续操作
六、systemd守护进程
实验环境
linux.westos.com ---->172.25.254.10
node1.westos.com ---->172.25.254.20
远程操作主机 :ssh 主机ip -l 远程主机用户
示例: ssh 172.25.254.10 -l root touch file1,file2
在主机172.25.254.10中远程创建file1,file2成功
守护进程:systemd 替内核分担程序控管的程序,通常pid为1
服务指在系统中开启的共享系统资源到网络中的程序
cs模型 client----server
systemctl
管理系统服务
start
开启
stop
关闭
status
查看状态
reload
重新加载
restart
重新启动服务(更改配置结束程序再sys开启新的)
enable
设定服务开机启动
enable --now
设定服务开机启动并当前开启服务
disable
设定服务开机不启动
list-units
查看系统所有服务当前状态
list-unit-files
查看服务开机状态
list-dependencies
列出服务依赖性
mask sshd
冻结服务 start开启不了
unmask
解锁服务
set-default
设定系统运行级别
multi-user.target无图形的网络模式
graphical.target 有图像的网络模式
get-default
查看系统运行模式
run level
系统运行模式0-6
0 POWEROFF
1 single
2 noG+NETWORK
3
4
5 G+NETWORK
6 REBOOT
示例:启动sshd,并查看状态 systemctl start sshd systemctl status sshd
示例:reload重载服务不会改变PID
systemctl reload sshd.service
示例:systemctl disable sshd.service 设置ssh服务开机不启动
另一台主机将无法链接它
示例:systemctl mask sshd冻结后服务启动失败,unmask解锁
示例:systemctl get-default 查看系统运行模式
systemctl set-default multi-user.target改变系统运行模式
reboot重启,变为无图形模式
七、进程系统中的登录审计
w
显示正在登录系统的账户
-i
显示登录来源
注:man w
可得此命令查看的文件/var/run/utmp如果清空则w显示为空
last
登录成功现在已经退出的
/var/log/wtmp
lastb
试图登录但没成功
/vat/log/btemp