CSA笔记7-进程管理命令

进程管理

相关概念

程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下

进程:进程是已启动的可执行程序的运行实例。

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有

线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才

能被执行。

面试笔试】进程和线程的区别?

进程:是程序的一次执行过程,是资源分配的基本单位。每个进程都有独立的地址空间、数据栈以

及控制信息。

线程:是进程中的一个执行单元,是操作系统能够进行运算调度的最小单位。线程与进程共享相同

的地址空间和数据栈,但拥有独立的执行序列和部分资源(如寄存器状态、栈指针等)。

一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有

进程分类

运行程序

#1、直接执行命令——程序文件(/usr/bin/*,/usr/sbin/*),程序运行后会变成一个进程,进程会随着终

端的关闭而关闭

[root@xxx ~]# tail -f /var/log/messages

#2、使用systemctl去管理后台可以一直运行的程序(服务)

查看httpd服务的运行状态:systemctl status httpd

启动httpd服务:systemctl start httpd

重启httpd服务:systemctl restart httpd

设置httpd开机自启动:systemctl enable httpd --now

关闭httpd的开机自动启动:systemctl disable httpd --now

[root@xxx ~]# yum install httpd

[root@xxx ~]# systemctl start httpd

查看进程

ps命令

ps 命令是用于显示某个时间点的程序运行情况

常用选项:

选项

功能

-a

显示所有用户的进程

-u

显示用户名和启动时间

-x

显示没有控制终端的进程

-e

显示所有进程,包括没有控制终端的进程

-f

做一个更完美的输出

示例:

[root@localhost ~]# ps aux | head -2

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.7 24476 13940 ? Ss 03:08 0:18

/usr/lib/systemd/systemd rhgb --system --deserialize 40

说明:

USER: 运行进程的用户

PID: 进程ID

%CPU: CPU占用率

%MEM: 物理内存占用率

VSZ: 占用虚拟内存大小,包括物理内存和交换空间。单位KB

RSS: 占用物理内存大小,单位KB

TTY: 进程运行的终端

STAT: 进程状态 man ps (/STATE)

R 运行

S 可中断睡眠 Sleep

D 不可中断睡眠

T 停止的进程

Z 僵尸进程

X 死掉的进程

I 空闲

s 进程的领导者,父进程

< <优先级较高的进程

N N优先级的进程

+ +表示是前台的进程组

l 以线程的方式运行

START: 进程的启动时间

TIME: 进程占用CPU的总时间

COMMAND: 进程文件,进程名

[root@localhost ~]# ps -ef | head -2

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 00:33 ? 00:00:22 /usr/lib/systemd/systemd rhgb

--system --deserialize 40

UID: 用户ID,代表进程所属的用户。

PID: 进程ID,唯一标识一个进程。

PPID: 父进程ID,表示创建该进程的父进程的ID

C: CPU利用率,表示进程的CPU利用率。

STIME: 启动时间,表示进程启动的时间。

TTY: 与进程关联的终端。

TIME: CPU时间,表示进程消耗的CPU时间。

CMD: 命令,表示进程的命令行

pstree 命令

pstree 命令以树状图形式显示进程的层次结构。它以树形展示进程之间的父子关系,使用户可以更清

晰地了解系统中正在运行的进程之间的关系。

[root@localhost ~]# pstree -p | grep httpd

|-httpd(8291)-+-httpd(8292)

| |-httpd(8293)-+-{httpd}(8295)

| | |-{httpd}(8297)

| | |-{httpd}(8298)

top命令

top 命令可以动态的查看进程的状况

[root@localhost ~]# top

top - 17:21:03 up 4:32, 5 users, load average: 0.19, 0.08, 0.06

Tasks: 483 total, 3 running, 480 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 1790.0 total, 1278.5 free, 240.5 used, 271.0 buff/cache

MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1393.8 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1 root 20 0 179104 13540 8728 S 0.0 0.7 0:01.22 systemd

2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp

4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par+

6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker+

9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_perc+

10 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftir+

11 root 20 0 0 0 0 I 0.0 0.0 0:00.13 rcu_sch+

top的输出可以分为统计信息区进程信息区两个部分,即前5行为统计信息区,后面为进程信息区。

统计信息区

第一行为任务队列信息:top - 17:21:03 up 4:32, 5 users, load average: 0.19, 0.08,

0.06

17:21:03表示当前系统时间;up 4:32表示系统已经启动4小时32分钟了;

5 users表示当前登录系统的用户数;

load average: 0.19, 0.08, 0.06表示系统1分钟、5分钟、15分钟前到现在的平均负载(如果

是1表示满负载)

第二行:Tasks: 483 total, 3 running, 480 sleeping, 0 stopped, 0 zombie

483 total进程的总数; 3 running正在运行的进程数,;480 sleeping处于休眠状态的进程数,

; 0 stopped停止的进程数, ; 0 zombie僵死的进程数。

第三行:%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0

st

0.3 us表示用户进程占用CPU的百分比;0.7 sy系统进程占用CPU的百分比;

0.0 ni用户进程空间内改变过优先级的进程占用CPU的百分比; 99.0 id空闲CPU占用的百分

比;0.0 wa代表I/Owait表示等待输入、输出的进程占用CPU的百分比;

0.0 hi表示cpu服务于硬件中断所耗费的时间总额; 0.0 si表示cpu服务于软件中断所耗费的时

间总额;

0.0 st表示虚拟机被hypervisor偷去的cpu时间。另外,如果是多内核设备,可按下数字键“1”

来切换成不同cpu的负载率。

MiB Mem : 1790.0 total, 1278.5 free, 240.5 used, 271.0 buff/cache

MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1393.8 avail Mem

Mem:total系统的内存大小;free目前空余内存大小;used已经使用的内存大小。

buff/cache表示用于缓存的内存,包括文件系统缓存等。

Swap:total系统交换空间大小;free空余交换空间大小;used已经使用的交换空间大小。

avail Mem 可用的内存大小。

进程信息区:显示了每个进程的运行状态

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1 root 20 0 179104 13540 8728 S 0.0 0.7 0:01.22 systemd

PID:进程的id

USER:进程所有者的用户名

PR:进程优先级

NI:nice值。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存总量,单位为KB

RES:进程使用的、未被换出的物理内存大小,单位KB

SHR:共享内存大小,单位KB

S:进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停

止,Z表示僵死进程

%CPU:上次更新到现在的CPU时间占用百分比

%MEM:进程占用的物理内存百分比

TIME+:进程总计使用的CPU时间,单位为1/100秒

COMMAND:正在运行进程的命令名或者命令路径

终止进程

kill 命令可以给进程发送信号。

[root@localhost ~]# kill -l #列出所有支持的信号

编号 信号名

1) SIGHUP 重新加载配置

2) SIGINT 键盘中断^C

3) SIGQUIT 键盘退出

9) SIGKILL 强制终止

15) SIGTERM 终止(正常结束),缺省信号

18) SIGCONT 继续

19) SIGSTOP 停止

20)SIGTSTP 暂停^Z

[root@localhost ~]# ps -ef | grep httpd

root 8291 1 0 Apr05 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND

apache 44902 8291 0 16:38 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45015 8291 0 16:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45100 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45186 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

root 45190 44689 0 16:41 pts/2 00:00:00 grep --color=auto httpd

[root@localhost ~]# kill -15 44902

[root@localhost ~]# ps -ef | grep httpd

root 8291 1 0 Apr05 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND

apache 44902 8291 0 16:38 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45015 8291 0 16:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45100 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45186 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

root 45192 44689 0 16:41 pts/2 00:00:00 grep --color=auto httpd

[root@localhost ~]# kill -9 44902

[root@localhost ~]# ps -ef | grep httpd

root 8291 1 0 Apr05 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND

apache 45015 8291 0 16:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45100 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45186 8291 0 16:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45193 8291 2 16:41 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

root 45260 44689 0 16:41 pts/2 00:00:00 grep --color=auto httpd

[root@localhost ~]#

#killall 命令用于终止指定名称的进程。

[root@localhost ~]# ps -ef | grep httpd

root 8291 1 0 00:10 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND

apache 45015 8291 0 20:10 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45100 8291 0 20:11 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45186 8291 0 20:11 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

apache 45193 8291 0 20:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

root 45319 45286 0 20:15 pts/3 00:00:00 grep --color=auto httpd

[root@localhost ~]# killall httpd

[root@localhost ~]# ps -ef | grep httpd

root 45324 45286 0 20:15 pts/3 00:00:00 grep --color=auto httpd

进程转换

[root@localhost ~]# sleep 3 #让当前终端睡10

[root@localhost ~]# sleep 100 & #运行程序(时),让其在后台执行

[root@localhost ~]# sleep 200 #ctrl+z 可以将前台的任务放到后台中暂停

[root@localhost ~]# jobs #查看后台的进程

[1]- Running sleep 100 &

[2]+ Stopped sleep 200

+表示最近被放到后台的工作,-表示最近第二个被放到后台中的工作,超过第三个就不会有+/-符号存在了

[root@localhost ~]# fg %1 #将后台进程(暂停或者运行的)放到前台执行

[root@localhost ~]# bg %1 #让后台暂停的进程继续在后台运行

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值