6.进程管理
什么是进程 在Linux中,进程(Process)是指正在运行的程序实例。一个进程可以看做是系统中的一个任务,它可以执行各种操作,例如打开文件、发送网络请求、计算数据等。每个进程都有自己独立的内存空
6.进程管理
发布时间:2024-02-01 (2024-02-01)

什么是进程

在Linux中,进程(Process)是指正在运行的程序实例。一个进程可以看做是系统中的一个任务,它可以执行各种操作,例如打开文件、发送网络请求、计算数据等。每个进程都有自己独立的内存空间和资源使用情况

每个进程都有一个唯一的进程ID( PID ),它是一个非负整数,用于标识进程。除了PID外,每个进程还有其他属性,如父进程ID、进程状态、进程优先级、内存使用情况等。

Linux系统中有许多命令和工具可以用来管理和监视进程,例如ps、top、kill等

其中,ps命令可以列出当前系统中所有进程的详细信息,包括进程名、PID、状态、CPU占用率等

top命令可以实时显示系统中各个进程的资源使用情况,帮助用户进行性能监控和故障排除

kill命令可以用来停止某个进程的运行。

后台执行

这里我写了一个打印当前时间的脚本

用于练习程序后台执行

执行sh脚本,有两种方式

一种是 sh xxx.sh

另一种是 chmod +x xxx.sh ./xxx.sh

#!/bin/bash

# 设置文件路径
output_file="date.log"

# 无限循环,每隔一秒执行一次
while true; do
    # 获取当前时间,并格式化为小时:分钟:秒
    current_time=$(date "+%H:%M:%S")

    # 打印当前时间到终端
    echo "当前时间: $current_time"

    # 将当前时间追加到文件
    echo "$current_time" >> "$output_file"

    # 等待一秒钟
    sleep 1
done

&

不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作

最好是将输出的内容重定向到文件中

./print_time.sh &

./print_time.sh  > out.log &

nohup

nohup代表不挂机,它是一个Linux实用程序,即使退出终端或外壳程序也可以保持进程运行

nohup ./print_time.sh &

它会默认生成一个nohup.out日志文件

systemctl

参考这个,视频里面快速掠过了

https://blog.csdn.net/Dayu_log/article/details/129009345

https://blog.csdn.net/weixin_53064820/article/details/127539019

查看有哪些进程 ps命令

查看全部的进程

ps aux

-a 选项指示 ps 显示来自所有用户的所有进程,但是这排除了与特定终端相关联的进程

-u 选项表示面向用户的格式,它提供与正在运行的进程相关的更详细的信息

-x 选项列出了通常在系统引导时启动的进程以及后台进程

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    Jan17   0:00 [kthreadd]
  • USER – 运行进程的用户
  • PID – 进程 ID
  • %CPU – CPU 使用率百分比
  • %MEM – 物理内存占用的百分比
  • VSZ – 千字节为单位的每个进程的虚拟内存大小
  • RSS – 使用的物理内存的大小
  • STAT – 进程状态代码 S (sleeping), Z (zombie) and R (Running)
  • START – 进程开始运行的时间

根据用户查进程

id 用户名  # 获取用户id

ps -u  用户id
ps -u  用户名

使用 PID 和 PPID 显示进程

ps -fp PID

使用进程名查进程

ps -C 进程名

不过这个查询很迷

还是 grep来的实在一点

ps aux | grep 进程名

打印流程树

ps -e --forest

进程树显示了 Linux 系统中进程是如何链接的

实时进程监控

可以使用 watch 实用程序监视进程的静态信息。输出每秒钟更新一次,如下所示

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head'

列出消耗高内存的顶级进程

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

列出消耗高 cpu 的顶级进程

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

显示进程运行的持续时间

ps -eo comm,etime,user

结束进程 kill命令

kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作

kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名

信号编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。

系统进程监控 top命令

top命令用于实时监测系统资源使用状况,包含,进程、cpu,内存等

常用参数

 top:启动top命令
 top -c:显示完整的命令行
 top -b:以批处理模式显示程序信息
 top -S:以累积模式显示程序信息
 top -n 2:表示更新两次后终止更新显示
 top -d 3:设置信息更新周期为3秒
 top -p 139:显示进程号为139的进程信息,CPU、内存占用率等
 top -n 10:显示更新十次后退出

表头内容含义

PID   
USER     
PR         优先级值 
NI         nice值,通过程序给进程设置的
VIRT       进程使用的虚拟内存的大小,单位是KiB。
RES        常驻内存的内存大小,单位是KiB。
SHR        共享内存的大小,单位是KiB。
S          表示进程的状态,有一下几个状态。
%CPU       上次一刷新之前对应的进程对CPU的占有率
%MEM       这个主要是进程使用的内存占用实际的可用的物理内存的比例
TIME+      这个表示自从进程启动以来累计消耗的CPU时间
COMMAND    启动进程的时候执行的命令

参考资料

linux中什么是进程 http://www.ux20.com/news/85983.html

linux后台执行 https://blog.csdn.net/Pan_peter/article/details/128875714

nohup命令 https://www.runoob.com/linux/linux-comm-nohup.html

ps命令 https://zhuanlan.zhihu.com/p/583560458

kill命令 https://c.biancheng.net/view/1068.html

top命令 https://zhuanlan.zhihu.com/p/667706140

top命令 https://www.linuxprobe.com/linux-top-knowledge.html