Linux教程

Linux第一本书第六章 linux中的进程管理

本文主要是介绍Linux第一本书第六章 linux中的进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、进程的定义

1.进程的定义:

程序是静态的代码文件,进程是指程序运行时的形态,进程是程序的一个副本,进程是有生命周期的(准备期、运行期、终止期)

2.进程&线程

  • 进程是资源调用的最小单位,所有的事件都由cpu处理,当cpu处理一个事件时,其他事件就无法占用cpu处理,等待这个事件结束才可以使用cpu。
  • 线程是进程最小的单位

3.多线程

程序执行流是从上到下贯穿运行的。

当进程是多任务,cpu是多核心时,多任务应该同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的。

4.进程状态

#R(TAKS_RUNNING)                       ##可执行态(running,ready),正在被cpu处理/已经加载好等待被处理。
#S(TASK_INTRRUPTABLE)           ##可唤醒休眠,使用cpu超时,进入休眠,再次使用时激活即可。
#D(TASK_UNINTRRUPTABLE)    ##不可唤醒休眠,使用cpu超时,资源没有被加载好,不可以使用cpu
#T(TASK_STOP)                              ##暂停状态,可以人为唤醒。
#Z(EXIT_ZOMBIE)                           ##僵死态,进程已经结束,却占用资源不放,需要手动结束程序。“bug”

二、进程查看命令

gnome-system-monitor  ##图形进程查看工具

ps ##进程查看

ps 命令的三种执行风格 unix、bsd、GNU

bsd风格 :

ps a    ##与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)

 ps x    ##与终端无关相关的进程

 

ps u    ##用户信息归类的查看方式

 ps axu ##所有进程以用户信息归类的查看方式

 

 ps f    ##进程层级关系

 ps o    ##显示指定参数
        ## pid comm nice pri pcpu ppid stat,user,group

 ps axo pid,comm  ##显示所有进程,并且只显示pid和comm

 

unix风格:

ps -e    ##显示所有进程

ps -f    ##显示信息的完整格式

ps -e -f  ##显示所有进程并显示信息的完整格式

 ps -H    ##显示进程的层级结构

ps -e -H  ##显示所有进程,并显示进程的层级结构

 ps -o    ##显示指定参数

ps -e -o pid,comm,nice  ##显示所有进程,并且只显示pid,comm,nice

 ps --sort=   ##排序

ps -e --sort=%cpu  ##显示所有进程,并按进程使用cpu的用量排序显示(由小到大)

 ps -e --sort=%cpu  -o %cpu,comm      ##显示所有进程,并按进程使用cpu的用量排序显示(由小到大),只显示%cpu,comm.

  ps -e --sort=-%cpu  -o %cpu,comm      ##显示所有进程,并按进程使用cpu的用量排序显示(由大到小),只显示%cpu,comm.

  ps -e --sort=-%mem  -o %cpu,comm      ##显示所有进程,并按进程使用内存的用量排序显示(由大到小),只显示%cpu,comm.

pgrep##进程过滤

pgrep -u uid       ##显示指定用户进程

pgrep  -U user   ##显示指定用户进程

pgrep -t tty         ##显示指定终端进程

pgrep -l               ##显示进程名称

pgrep -a             ##显示进程的完整名称

pgrep -P            ##进程的子进程

具体操作:

 pidof cat   ##查看cat的pid

top ##动态进程查看

top命令的参数:

  • top -d   ##指定刷新频率
  • top -b   ##以批次方式显示
  • top -n   ##指定显示的批次数量

#top内部指令
#P   cpu排序
#M   内存排序
#T   累计占用cpu时间排序
#l   关闭/开启uptime信息
#t   关闭/开启cpu&task
#s   指定刷新频率
#k   操作进程
#u   查看指定用户进程

三、进程优先级

系统是多任务多用户的操作模式

任务的重要性是有区分的

如何确定任务的重要性——“优先级”范围: 0--139
内核自控优先级范围:0-99
用户可控优先级:100-139

nice -20 ~ 19 其中-20优先级最高,19最低
    ##linux系统中nice值——优先级的另一种说法:系统可控优先级的值
    ##普通用户优先级只能调低不能调高

具体操作:

renice -n -5 4827   ##更改优先级

  nice -n -5 cat ##指定优先级打开进程

 进程状态:

S  #sleeping
<  #优先级高
s  #顶级进程
T  #stop
N  #优先级底
R  #running
+  #运行在前台

watch -n 1 "ps ax -o pid,comm,stat,nice | grep -e bash -e cat"  ##监控命令,查看进程的优先级

 优先级的修改:

 四、进程前后台调用

ctrl>+<z>  ##把占用shell的进程打入后台挂起
bg       ##把后台挂起的进程运行起来
fg        ##把后台进程调回前台
&        ##运行进程在后台
jobs   ##查看当前shell中在后台的所有工作

具体操作:

watch -n 1 "ps ax -o pid,comm,stat,nice | grep -e bash -e cat -e gedit"  ##监控命令

 

 五、进程信息号

man 7 signal

#进程信号

1
2
3
9
15
18
19
20
#重新加载系统配置文件(source)
#清空内存中的进程数据
#清空内存中的鼠标(ctrl+\)
#强行结束进程(不能被阻塞)
#正常关闭进程(会被阻塞)
#运行被暂停的进程
#暂停进程(不会被阻塞)
#暂停进程(会被阻塞的)

#进程信号控制工具

kill 进程信号 pid

 killall 进程信号 进程名字

如:killall -15 gedit   ##关闭所有gedit 进程

 pkill  进程信号 进程条件

pkill -9 -u westos   ##关闭用户westos的所有进程

六、systemd守护进程

实验环境:
#linux.westos.com-------- > 172.25.254.39
#nodea.westos.com ----------> 172.25.254.20
#远程操作主机
#ssh 远程主机ip -l 远程主机用户

#守护进程:#替内核分担程序控管的程序,通常pid为1
#systemd -----> systemctl
#systemctl 管理系统服务
#服务:在系统中开启的共享系统资源到网络中的程序
#cs                client ------         server

systemctl命令

systemctl命令的用法:

start       ##开启

stop       ##关闭

status     ##查看状态

具体操作:

 

reload   ##重新加载

restart  ##重新启动服务

 

enable              ##设定服务开机启动
enable --now    ##设定服务开机启动并当前开启服务
disable     ##设定服务开启不其动

 

list-units     ##查看系统所有服务当前状态
list-unit-files     ##查看服务开机状态
list-dependencies   ##列出服务依赖性

mask    ##冻结服务
unmask   ##解锁

set-default    ##设定系统运行模式
                        #multi-user.target无图形网络模式
                        #graphical.target有图形的网络模式

get-default   ##查看系统运行模式
                      ##系统运行模式
                      #0-6
                      #0    POWEROFF
                      #1         single
                      #2         noG+NETWORK
                      #3
                      #4                                                                                                                                                                        #5  G+NETWORK
                     #6  REBOOT

这篇关于Linux第一本书第六章 linux中的进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!