Linux中的进程管理
什么是进程
-
进程的定义
1、 进程是指程序运行时的形态,是程序的一个副本,而程序是静态的代码文件,程序一旦运行就是进程。
2、 进程是资源调用的最小单位;线程是进程的最小单位。
3、进程是由生命周期的,有准备期、运行期、终止期
3、程序执行流是从上到下贯穿运行的。
4、进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程。线程资源是共享的。 -
进程的状态
R(TAKS_RUNNING) ##可执行态(running,ready) S (TASK_INTRRUPTABLE) ##可唤醒休眠 D(TASK_UNINTRRUPTABLE) ##不可唤醒休眠 T(TASK_STOP) ##暂停状态 Z(EXIT_ZOMBIE) ##僵死态
进程查看命令
-
gnome-System-monitor ##图形进程查看工具
-
ps——进程查看
1、ps命令有三种执行风格:unix、bsd、GNU
2、ps的重要命令#a 与终端相关的进程 #x 与终端无关的进程 #u 用户信息归类的查看方式 #f 进程的层级关系 #o 显示指定参数 #-e 显示所有进程 #-f 显示信息的完整格式 #-H 显示进程的层级结构 #-o 显示指定参数 #--sort = 对指定进程进行排序 ps ax 显示信息如下: #PID 进程id #TTY 进程用到的终端 #STAT 进程状态 #TIME 进程占用cpu时长 #COMMAND 进程名称 ps aux 显示信息如下: #USER 进程所有人 #PID 进程的id #%CPU 进程使用cpu的用量 #%MEM 进程所用到的内存用量 #VSZ 进程使用的虚拟内存的大小 #RSS 进程常驻内存中的数据大小 #TTY 进程用到的终端 #STAT 进程状态 #START 进程运行时长
##ps ax
##ps aux
##ps ax -o %cpu,comm
##ps ax -o %cpu,comm --sort=%cpu (正向排序)
##ps ax -o %cpu,comm --sort=-%cpu(逆向排序)
-
pgrep ——进程过滤
#-u uid 显示指定用户进程 #-U user 显示指定用户进程 #-t tty 显示指定终端进程 #-l 显示进程名称 #-a 显示进程的完整名称 #-P 显示进程的子进程
-
pidof vim ——查看vim的pid
-
top——动态进程查看
1、top命令的参数#-d 指定刷新命令,按q退出 #-b 以批次方式显示 #-n 指定显示的批次数量
##-d后不加数字默认三秒刷新一次
##-b后不加数字表示一直以批次显示,需要按ctrl+c进行退出。若后面加数字,则表示几次之后自动退出2、top的内部指令
#P cpu排序 #M 内部排序 #T 累计占用cpu时间排序 #l 关闭/开启uptime信息 #t 关闭/开启cpu&task #s 指定刷新频率 #k 操作进程 #u 查看指定用户进程
##top
进程优先级
-
系统是多任务多用户的操作模式,因此任务的重要性是有所区分的,规定了优先级来区分。
-
优先级的范围是“0–139”
内核自控优先级范围:0–99
用户可控优先级:100–139 -
nice值的优先级范围为-20-19,因此越负优先级越高
renice -n -5 pid #更改已有优先级为-5 nice -n -5 cat #指定优先级-5且打开进程cat
-
pri 优先级的范围为39-0,因此越大优先级越高
S #sleeping < #优先级高 s #顶级进程 T #stop N #优先级低 R #running + #运行在前台
##监控 watch -n 1 ‘ps ax -o pri,nice,pid,comm,stat | grep cat’
进程前后台调用
<ctrl>+<z> ##把占用shell的进程打入后台挂起
bg ##把后台挂起的进程运行起来
fg ##把后台进程调回前台
& ##运行进程在后台
jobs ##查看当前shell中在后台的所有工作
进程信息号
-
进程信号
信号1 ##重新加载系统的配置。进程未关闭,但是可以让他生效(source)
信号2 ##清空内存的进程数据(ctrl+c)
信号3 ##清空内存的鼠标(ctrl+)
信号9 ##强行结束进程(不能被阻塞)
信号15 ##正常关闭进程 (会被阻塞)阻塞即防止重要进程强制关闭
信号18## 运行被暂停的进程
信号19 ##暂停进程(不会被阻塞)
信号20 ##暂停进程(会被阻塞) -
进程信号控制工具
kill 进程信号 pid killall 进程信号 进程名称 pkill 进程信号 -u 进程条件
System 守护进程
-
守护进程是什么
1、守护进程也被称为精灵进程,是运行在后台的一种特殊进程,它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。通常pid为1。
2、Linux 服务管理两种方式service和systemctl。
3、systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
4、systemd对应的进程管理命令是systemctl -
远程操作主机
ssh -l root IP ##连接这个电脑,可以利用ifconfig来看主机的IP。ssh为客户端,sshd为服务端。
-
Systemctl命令
start ##开启 stop ##关闭 status ##查看状态 reload ##重新加载 restart ##重新启动服务 enable ##设定服务开机启动 enable --now ##设定服务开机启动并立即开启服务 disable ##设定服务开机不启动 list -units ##查看系统所有服务当前状态 list -units-files ##查看服务开机状态 list -dependencies ##列出服务依赖性 mask ##冻结服务 unmask ##解锁 set-default ##设定系统运行方式 #multi-user.target 无图形网络模式# graphical.target 有图形的网络模式 get-default ##查看系统运行模式 runlevel ##查看启动模式 #系统运行模式0---6 0 POWEROFF关机 1 single 2/3/4 noG+NETWORK 无图形的网络模式 5 G+NETWORK 有图形的网络模式 6 REBOOT 重启 ##当重新开启电脑时是无图形模式,需要输入init5临时恢复有图形模式
##开启
##关闭
##设置ssh服务开机启动
##设置ssh服务开机不启动
##ssh服务冻结与解冻
##查看系统所有服务当前状态
##设定系统运行方式
##查看启动模式
系统中的登陆审计
-
w 显示正在登陆系统的账号
w -i 显示登陆来源
-
last 登陆成功现在退出的
-
lastb 试图登陆但未成功