linux下的进程线程管理

一、进程和线程基本概念

1.1什么是进程(Process)

在Linux系统当中,触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据启动这个进程的使用者与相关属性关系,给予这个PID一组有效的权限设置。

1.2什么是线程(Thread)

在 Linux 操作系统中,线程(Thread)是进程(Process)的一个执行单元。线程共享进程的资源,如内存和文件描述符,同时可以独立执行。以下是关于 Linux 线程的详细介绍,包括线程的基本概念、创建、管理、调度以及与进程的关系。

二、进程状态

进程状态码含义
运行(R)进程正在执行或准备执行。
停止(S)进程被暂停执行并进入停止状态,可以通过发送信号(如 SIGSTOP 或 SIGTSTP)来实现。
停滞(D)进程处于休眠状态,等待某些条件的发生才会恢复执行。
跟踪(T)进程正在被调试器跟踪。
僵死(Z)进程已经终止,但其父进程尚未处理完该进程的退出状态,使得进程成为僵尸进程。僵尸进程将占用系统资源,直到父进程获取其退出状态。

三、查看进程的方法

3.1图形

1、点击System Monitor

2、输入命令gnome-system-monitor

结果

3.2 常用进程查看命令的使用

3.2.1ps常用参数说明

选项选项说明
a显示当前终端机下所有的程序,包括其他用户的。
c显示进程真正的指令名称。
u显示用户相关的进程或者与用户相关的属性。
x显示与终端无关的进程。
e列出程序所使用的环境变量。
f表达程序间的相互关系。
o
显示指定参数。
-e显示所有进程。
-f全格式显示进程。
-H显示树状结构,表示程序间的相互关系。
-o显示指定的参数。
-sort=字段按指定字段排序输出结果。(在字段前加 - 表示降序)

示例:

 3.2.2命令ps ax:显示所有进程

其中PID:进程ID。

        TTY:进程用到的终端。

        STAT:进程状态。

        TIME:进程作用CPU时长。

        COMMAND:进程名称。

结果如下: 

#显示系统中所有进程,并按照CPU使用率( %CPU )进行排序。
[root@localhost Desktop]# ps ax --sort=%cpu

#显示所有进程的CPU使用率( %CPU )、内存使用率( %MEM )和命令名称( comm ),并按照 CPU 使用率从高到低进行排序(降序排序)。
[root@localhost Desktop]# ps ax -o %cpu,%mem,comm --sort=-%cpu

3.2.3命令ps aux‌:显示所有用户进程的完整信息 

 其中

        USER:进程所有人

        PID:进程id
        %CPU:进程使用cpu的用量#%MEM 进程所用到的内存用量
        VSZ:进程使用的虚拟内存大小
        RSS:进程常驻内存中的数据大小
        TTY:进程用到的终端
        STAT:进程状态
        START:进程运行时长
        TIME:进程占用cpu时长
        COMMAND:进程名称

#查找包含yyy的进程信息。
[root@localhost Desktop]# ps aux | grep yyy

3.2.4 ps axo命令:显示系统中所有进程的详细信息

#显示系统中所有进程的详细信息,并且指定了特定的字段输出。
[root@localhost Desktop]# ps axo pid,%mem,%cpu,pri,nice,comm,user,group,pcpu,ppid

3.3pgrep命令详解 

        pgrep是一个根据名称查找进程ID的命令,返回的是进程ID,若存在当个进程,则分为不同的行返回ID。 

选项选项说明
-u uid
按照有效用户ID查找进程。
-U user
显示指定用户进程。
-t tty查找在指定终端上启动的进程。
-l(--list-name)除了 PID,还显示进程的名称。
-a
显示进程的完整名称。
-P(父PID)查找指定父进程的子进程

示例: 

#查找属于特定用户yyy的进程的命令。
[root@localhost Desktop]# pgrep -U yyy

#查找属于特定用户yyy的进程,并且会显示进程的名称以及进程ID。
[root@localhost Desktop]# pgrep -lU yyy


3.4 pidof命令

        pidof 命令是一个用来查找当前运行的程序的进程 ID(PID)的命令行工具。它通常用于脚本中,以确定特定的程序是否正在运行,或者在启动或停止服务之前获取其 PID。

示例:

3.5top命令详解

         top命令用于实时显示 process (进程)的动态。它用于监控正在运行系统负荷的信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的资源占用情况等。

 示例:

#以批量模式运行top,并设置特定的刷新频率和运行次数。
[root@localhost Desktop]# top -d 1 -n 2 -b

四、 进程的前后台调用

        4.1让进程在后台运行
        

                (1)在命令结尾添加“&”符号
       在执行命令时,在命令后面加上“&”,该进程就会在后台运行。

                (2)使用bg命令(适用于已经暂停的进程)
                如果一个进程已经在运行并且被暂停(例如,使用Ctrl + Z暂停了一个正在前台运行的进程),可以使用bg命令将其放入后台继续运行。

        4.2让进程在前台运行


               (1) 使用fg命令
                如果有后台运行的进程,可以使用fg命令将其调至前台运行。

 

 4.3命令jobs:查看当前shell中在后台的所有工作

 

五、进程的优先级 

         对于CPU来说,确定一个进程先后运算的顺序的标准就是进程的优先级。

#将进程ID为3971的进程的nice值设置为 -5。
[root@localhost Desktop]# renice -5 3971

#将进程ID为3971的进程的nice值设置为 5。
[root@localhost Desktop]# renice 5 3971

#指定的nice值(10)启动gedit程序。
[root@localhost Desktop]# nice -n 10 gedit

 

 六、进程信号的使用

6.1定义

        进程之间事件异步通知的一种方式。它是一种软件中断,用于向进程发送通知和指令,以便对其进行控制或传递信息。进程信号由整数值来标识,每个值对应一个特定的信号。不同的信号对应不同的状况。

6.2信号的特点


        (1)信号产生前,进程就知道如何处理 。
        (2)信号一旦产生,进程能够识别信号。
        (3)进程接收到信号后,不一定会立即处理,进程在收到信号后会先记录下来。
        (4)信号的产生对于进程是异步的。

6.3进程信号的使用

#强制终止所有名为vim的进程。
[root@localhost Desktop]# killall -9 vim

#发送信号给特定用户yyy的所有进程的命令。
[root@localhost Desktop]# pkill -9 -u yyy

 

 七、守护进程

7.1定义

        守护进程(Daemon)是一种在后台运行的特殊进程,它们独立于控制终端,周期性地执行某些任务或提供某种服务。守护进程通常在系统启动时启动,并在系统关闭时结束。

7.2 守护进程管理命令systemctl

选项选项意义
start
启动服务。
stop
关闭服务。
status
检查服务或进程的状态。
reload
重新加载服务或配置文件。
restart
重新启动服务。
enable
设置服务或功能在系统启动时自动运行。
enable --now
用于同时启用并启动服务。
disable
禁用服务。
list-units
列出当前所有已加载的 systemd 单元。
list-unit-files
列出所有已安装的 systemd 单元文件及其状态。
list-dependencies
查看 systemd 单元(如服务、目标等)依赖关系。
mask
冻结服务。
unmask
解锁。
set-default
设定系统运行模式。
get-default
查看系统运行模式。

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值