什么是进程
在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,而不能识别进程名
信号编号 | 信号名 | 含义 |
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中什么是进程 linux中什么是进程
linux后台执行 Linux——让程序在后台运行(四种方法+使用推荐)_linux 后台运行-CSDN博客
nohup命令 Linux nohup 命令 | 菜鸟教程
ps命令 https://zhuanlan.zhihu.com/p/583560458
kill命令 Linux kill命令详解:终止进程