命令学习
(一)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 | 命令名称/行 |
(四)nice
和renice
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 向进程发送信号
kill
和killall
都用于发送信号给进程,但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 文件系统提供了丰富的进程和系统信息,通过访问不同的文件,可以了解进程的各种状态和资源使用情况。
标签:PID,echo,学习,Linux,进程,ID,proc,CPU From: https://www.cnblogs.com/orange-23/p/18199497