暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux操作系统-进程管理命令

原创 喵呜 2025-02-14
63

### 1. 命令:ps
1. 功能描述:列出系统中当前正在运行的进程;但非动态监控,动态监控用top。
2. 英文原意:Process Status
3. 语法:ps 选项
4. 选项:
```
-e  显示所有进程。
-f  显示UID、PPID、C与STIME栏位。
-C 只显示要查看服务的PID等。
--noheader 完全不打印标题行。
```
5. ps -ef输出字段解释:
```
UID: 说明该程序被谁拥有
PID: 就是指该程序的ID
PPID:就是指该程序父级程序的ID
C: 进程占用CPU的百分比
STIME:进程启动的时间
TTY:该进程是在哪个终端中运行的。
其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7 是图形终端。
pts/0-255代表虚拟终端。
TIME: 指程序使用掉CPU的时间,注意不是系统时间;
CMD: 下达的指令
```
6. ps -C nginx
```
[root@Study ~]# ps -C nginx
PID TTY TIME CMD
20476 ? 00:00:00 nginx
20477 ? 00:00:00 nginx

[root@Study ~]# ps -C nginx --noheader
20476 ? 00:00:00 nginx
20477 ? 00:00:00 nginx

[root@Study ~]# ps -C nginx --noheader | wc -l
2
```
7.常用命令
```
1.按照内存占用从高到低排序
[root@k8smaster1 ~]# ps aux --sort=-rss

2.按照cpu占用从高到低排序
[root@k8smaster1 ~]# ps aux --sort=-%cpu
```
### 2. 命令:pstree
1. 功能描述:每一个进程都是由其父进程创建的,pstree以进程树的方式来展示进程间的关系。
2. 语法:pstree 选项
3. 选项:
```
-p 显示程序识别码。
-u 显示用户名称。
```
4. 范例:
```
[root@Study ~]# pstree -pu
```
### 3. 命令:top
1. 功能描述:实时显示process的动态;可将它看作Linux中的"强化版的windows任务管理器"。
2. 语法:top
3. 范例:
```
[root@Study ~]# top
```
4. 输出前5行重要内容解释:
```
第一行:
2 users 表示此时有两个终端在远程此服务器,但并不表示有两个用户,因为同一个用户建立两个远程窗口时此处也会显示2 users。

load average: 0.00, 0.03, 0.05
指的是系统在之前1分钟,5分钟,15分钟的平均负载。
说明:1核cpu,1.00时表示满负载,1.50时表示已超负载50%
2核cpu,2.00时表示满负载,2.50时表示其中的1核已超负载100%
3核cpu,3.00时表示满负载,4.00时表示其中的1核已超负载100%
第二行:0 zombie 表示僵尸进程数,僵尸进程即父进程已结束但子进程未回收的进程。
第三行:为CPU数据,并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第四行:空闲物理内存的大小,越大越好。
第五行:空闲交换分区的大小,越大越好。
```
5. 常用查看cpu使用率的方法
```
top之后按下数字1可以监控每颗逻辑CPU的状况,再按下字母t可以以进度条的方式显示,如下:

[root@k8smaster1 ~]# top
top - 09:50:13 up 25 days, 17:01, 2 users, load average: 0.37, 0.39, 0.35
Tasks: 110 total, 3 running, 55 sleeping, 0 stopped, 0 zombie
%Cpu0 : 29.9/11.7 42[|||||||||||||||||||||||||||||||||||||||||| ]
%Cpu1 : 17.1/19.7 37[||||||||||||||||||||||||||||||||||||| ]
KiB Mem : 8155912 total, 3980092 free, 1352808 used, 2823012 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6494724 avail Mem

其中,%Cpu0 表示第一颗逻辑CPU,%Cpu1 表示第二颗逻辑CPU

```
6.字段管理
```
平均负载说明,参考文档:https://www.jianshu.com/p/881a478bc239


在top初始界面
按下'c'键可以将'COMMAND'显示全,即显示进程的绝对路径;
按下's'键可以改变画面更新的周期,默认是3秒刷新一次;
按下'k'键可以kill掉某个进程;
按下'z’键高亮显示正在运行的进程;
按下'h'键可以显示帮助信息;

按下f/F'键,切换到字段管理界面:
在最上面几行显示了当前窗口的名称,排序依据的字段,所有字段的档期啊顺序及说明,前面有“*”的字段是初始界面展示的字段。
```

按键 | 功能
---|---
方向上键 | 光标移动到上一个字段
方向下键 | 光标移动到下一个字段
空格键/d | 切换显示状态
s | 设置为排序依据字段
方向右键 | 拿起字段,可以移动位置
方向左键 | 放下字段
Esc/q | 退出当前窗口


### 4. 命令:kill
1. 功能描述:结束进程。
2. 语法:kill -[信息编号] PID
3. 信息编号:
```
1 是重启;
9 是强制杀死;

PID 使用ps命令可以查看进程的PID。
```
4. 范例:
```
[root@Study ~]# ps
PID TTY TIME CMD
9068 pts/0 00:00:00 bash
9389 pts/0 00:00:00 ps
[root@Study ~]# kill -1 9068
```
### 5. 命令:killall
1. 功能描述:使用进程的名称来杀死一组进程。
2. 语法:killall -[信息编号] 进程名称
3. 范例:
```
[root@Study ~]# killall -9 httpd
[root@Study ~]# killall httpd
```
### 6. 命令:pkill
1. 功能描述:按照进程名杀死进程,常用来踢出用户。
2. 语法:pkill -9 选项 终端号
3. 选项:
```
-t 终端号:按照终端号踢出用户;终端号可通过命令w获取。
```
4. 范例:
```
[root@Study ~]# w
11:10:47 up 2:29, 3 users, load average: 1.69, 0.78, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 :0 11:10 23.00s 0.14s 0.03s -bash

[root@Study ~]# pkill -9 -t pts/1
踢出用户pts/1
```
### 7. 命令:pidof
1. 功能描述:用于查询某个指定服务进程的PID。
2. 语法:pidof 服务名
3. 范例:
```
1.查询本机上httpd服务的PID:
[root@Study ~]# pidof httpd
```
### 8. 后台运行命令

### 8.1 &
1. 功能描述:把命令/进程放到后台执行,可实现多进程工作,可大大提高效率。
2. 使用说明:
```
1、在执行的命令后面加上&符号,就能把进程放入后台执行。
2、在执行过程中,按Ctrl+Z是暂停后放入后台。
```
3. 特点:
```
> 后台执行:命令会在后台运行,用户可以继续在当前终端执行其他操作。
> 依赖终端:尽管命令在后台运行,但它仍然依赖于当前终端。如果终端关闭(例如 SSH > 连接断开),该后台进程可能会被终止。
> 输出到终端:命令的标准输出和错误输出仍然发送到当前终端,可能导致屏幕混乱,可以使用&> /dev/null 进行屏蔽输出。
```
4. 范例:
```
1.定义自己的ping函数,批量测试IP是否在线。
#!/bin/bash

#ping
#-c<完成次数> 设置完成要求回应的次数。
#-i<间隔秒数> 指定收发信息的间隔时间。
#-W<超时时间> 设置超时时间。

#定义自己的ping函数,其中使用到位置参数$1
#功能:实现自动ping 192.168.41.100-160这些IP,测试是否在线。
#其中的&是将命令放到后台运行,加上&后谁的性能好谁回显的快,即显示顺序会乱,但执行的较快;若去掉此处的&可实现按顺序挨个ping,但速度较慢。
#wait 作用是当此脚本中所有的后台命令执行完之后脚本再结束。

myping()
{
ping -c3 -i0.2 -W1 $1 >/dev/null
if [ $? -eq 0 ];then
echo "$i is up"
else
echo "$i is down"
fi
}

for i in {100..160}
do
myping "192.168.41.$i" &
done
wait
```
### 8.2 命令nohup (忽略挂起信号)
1. 功能描述:nohup 本身不会将命令放到后台,但可以与&结合。用于让进程忽略挂起信号(SIGHUP),从而确保进程在终端关闭后仍然能够继续运行。
2. 特点:
```
> 忽略挂起信号:即使终端关闭,进程也不会被终止。
> 默认输出:如果未明确指定输出文件,nohup 会将标准输出和错误输出重定向到文件 nohup.out。
> 不一定后台运行:nohup 本身不会将命令放到后台运行,但可以与 & 结合使用实现后台运行。
```
3. 范例:
```
1.执行以下命令,ctrl + c 或者关闭当前shell后,会发现该进程仍然在运行。
[root@Study /]# nohup sh long_running_script.sh &

2.执行以下命令,ctrl + c 或者关闭当前shell后,会发现该进程已被杀掉。
[root@Study /]# nohup sh long_running_script.sh
```
### 总结
```
也就是说只使用 & 可以将进程放到后台运行(加上 &>/dev/null 屏蔽输出),但是当前shell被关闭后那么后台的进程也会结束;
只使用nohup不能将进程放到后台运行,但是和&结合使用就可以将进程放到后台运行,且即使当前shell被关闭,那么后台的进程也不会被结束
```

### 9. 命令:jobs
1. 功能描述:查看后台运行的工作
2. 语法:jobs [选项]
3. 选项
```
-l 显示进程号。
```
4. 范例:
```
[root@Study /]# jobs -l
[1]+ 10392 停止 (信号) top
```
### 10. 命令:fg
1. 功能描述:将后台暂停的工作恢复到前台执行
2. 语法:fg %工作号
3. 范例:
```
[root@Study ~]# jobs -l
[1] 10514 停止 (信号) top
[2]- 10551 停止 tar -zcf boot.tar.gz boot(工作目录:/)
[3]+ 10553 停止 (信号) top(工作目录:/)

说明:其中的[1]、[2]、[3]为工作号;
“+”代表最后一个放入后台的工作,也是恢复时默认第一个恢复的;
“-”代表倒数第二个放入后台工作的。

[root@Study ~]# fg %2
tar -zcf boot.tar.gz boot (wd: /)
```

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论