linux基础-6.进程管理

什么是进程

在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

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

【linux systemctl】Linux命令之systemctl命令_systemctl restart-CSDN博客

Linux 认识系统服务(daemon)_linux daemon-CSDN博客

查看有哪些进程 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,而不能识别进程名

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

linux后台执行 Linux——让程序在后台运行(四种方法+使用推荐)_linux 后台运行-CSDN博客

nohup命令 Linux nohup 命令 | 菜鸟教程

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

kill命令 Linux kill命令详解:终止进程

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

top命令 Linux命令top的宝藏知识 | 《Linux就该这么学》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值