Linux的学习与使用(进程管理)

命令学习

(一)ps命令

1.ps显示当前终端会话的进程。

2.ps aux显示系统上所有进程的详细信息。

Name Description Example(图中第一行)
USER 进程的所有者 root
PID 进程ID 1
%CPU 进程占用的CPU百分比 0.2
%MEM 进程占用的内存百分比 0.2
VSZ 进程使用的虚拟内存量 100884
RSS 进程使用的物理内存量 11736
TTY 进程的终端
STAT 进程状态 Ss
START 进程启动时间 16:15
TIME 进程使用的CPU时间总和 0:02
COMMAND 启动进程的命令及参数 /sbin/init
3.ps f显示当前会话中的进程,并以树状格式展示父进程和子进程的关系。

举例
$ ps f
  PID TTY      STAT   TIME COMMAND
 1000 pts/0    Ss     0:00 /bin/bash
 1005 pts/0    S      0:00  \_ /usr/bin/python script.py
 1010 pts/0    S      0:00      \_ /usr/bin/python child_script.py
 1050 pts/0    R+     0:00          \_ ps f

/bin/bash (PID 1000) 是父进程。
/usr/bin/python script.py (PID 1005) 是 bash 的子进程。
/usr/bin/python child_script.py (PID 1010) 是 script.py 的子进程。
ps f (PID 1050) 是当前执行的命令,属于 child_script.py 的子进程。

4.ps -ef 使用标准格式显示所有进程的信息。

Name Description Example
UID 进程的用户ID root
PID 进程ID 1
PPID 父进程ID 0
C CPU使用率 0
STIME 进程启动时间 16:15
TTY 终端 ?
TIME 累积CPU时间 00:00:03
CMD 启动进程的命令及参数 /sbin/init

(二)pstree命令

pstree -p显示进程 PID

pstree -u显示用户 ID

(三)top命令

top实时显示正在运行的进程

Name Description
PID 进程ID
USER 用户名
PR 优先级
NI Nice值
VIRT 进程使用的虚拟内存总量(单位为 KB
RES 进程持有的物理内存总量(单位为 KB)
SHR 共享内存大小(单位为 KB)
S 进程状态
%CPU CPU 使用率
%MEM 内存使用率(RES)
TIME CPU 时间
COMMMAND 命令名称/行

(四)nicerenice

nice值是一个用来调整进程调度优先级的参数。调度优先级决定了操作系统在多任务环境中如何分配CPU时间给各个进程。nice值的范围通常是从-20到19:

-20:最高优先级,最“nice”给自己,抢占更多CPU时间。
0:默认优先级。
19:最低优先级,最“nice”给其他进程,让出更多CPU时间

nice -n 10 mycommand以nice值10启动mycommand进程

sudo renice -n 5 -p 1234将进程ID为1234的进程的nice值调整为5

(五)前台与后台进程

command & 将命令command启动的进程置于后台运行,控制台会立即返回,可以继续执行其他命令。
command:这是你想要执行的任何有效的Unix命令或脚本。例如,它可以是ls(列出目录内容)、sleep(暂停一段时间)、vim(打开文本编辑器)、python myscript.py(运行Python脚本)等等。
&:这个符号表示将command放在后台执行。终端会立即返回一个提示符,让你可以继续执行其他命令,而command将在后台运行

例如:sleep 60 &
这会启动一个sleep命令,让其在后台运行60秒

fg将最近一个被挂起或在后台运行的进程切换到前台。可以通过指定作业号切换特定进程到前台。

例如:fg %1
将作业号为1的进程切换到前台

bg将最近一个挂起的进程恢复为后台运行状态。可以通过指定作业号切换特定进程到后台

例如:bg %1
将作业号为1的进程恢复为后台运行

jobs列出当前的所有作业及其状态,包括前台、后台运行的进程和被挂起的进程
Ctrl + Z将当前在前台运行的进程挂起,并将其置于后台暂停状态
sleep 1000 &
jobs
fg %1
`Ctrl + Z`
jobs
bg %1

(六)kill 和 killall 向进程发送信号

killkillall都用于发送信号给进程,但kill是通过进程ID,而killall是通过进程名称

kill -9 12345发送SIGKILL信号强制终止进程ID为12345的进程

SIGTERM (15):终止进程(默认信号)。
SIGKILL (9):强制终止进程。
SIGHUP (1):挂起信号,通常用于重新加载配置文件。
SIGSTOP (19):暂停进程。
SIGCONT (18):继续进程。

killall -i myprocess交互模式终止进程,在终止每个名称为myprocess的进程前,询问确认

(七)利用/proc 文件系统查看进程信息

/proc 文件系统(也称为进程文件系统)是一个虚拟文件系统,它提供了有关系统和进程的详细信息。每个运行的进程在 /proc 目录中都有一个以其进程ID(PID)命名的子目录,包含关于该进程的各种信息。

command explanation
cat /proc/<PID>/cmdline 包含启动进程时的命令行参数
ls -l /proc/<PID>/cwd 符号链接,指向进程的当前工作目录
cat /proc/<PID>/environ 包含进程的环境变量
ls -l /proc/<PID>/exe 符号链接,指向进程执行的二进制文件
ls -l /proc/<PID>/fd 包含指向进程打开的文件描述符的符号链接
cat /proc/<PID>/maps 显示进程的内存映射
cat /proc/<PID>/status 包含关于进程的状态信息,包括内存使用、权限等
#!/bin/bash

# 检查是否提供了PID
if [ -z "$1" ]; then
    echo "Usage: $0 <PID>"
    exit 1
fi

PID=$1

# 查看进程命令行
echo "Command line:"
cat /proc/$PID/cmdline | tr '\0' ' '
echo -e "\n"

# 查看当前工作目录
echo "Current working directory:"
ls -l /proc/$PID/cwd
echo -e "\n"

# 查看环境变量
echo "Environment variables:"
cat /proc/$PID/environ | tr '\0' '\n'
echo -e "\n"

# 查看可执行文件
echo "Executable:"
ls -l /proc/$PID/exe
echo -e "\n"

# 查看打开的文件描述符
echo "Open file descriptors:"
ls -l /proc/$PID/fd
echo -e "\n"

# 查看内存映射
echo "Memory maps:"
cat /proc/$PID/maps
echo -e "\n"

# 查看进程状态
echo "Status:"
cat /proc/$PID/status
echo -e "\n"

/proc 文件系统提供了丰富的进程和系统信息,通过访问不同的文件,可以了解进程的各种状态和资源使用情况。

posted @   柳橙23  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示