首页 > 系统相关 >linux 基础(10)进程管理

linux 基础(10)进程管理

时间:2023-02-18 22:25:03浏览次数:35  
标签:10 00 SIGRTMAX 程序 ps linux 进程 SIGRTMIN

使用 ps 观察程序

ps -l

ps程序可以查询当前在运行的进程信息。ps -l可以列出详细的信息,默认仅列出当前 bash 相关的进程。

sudo -i
ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0    2133    2113  0  80   0 -  3026 do_sys pts/0    00:00:00 sudo
4 S     0    2134    2133  0  80   0 -  2651 do_wai pts/0    00:00:00 bash
4 R     0    2146    2134  0  80   0 -  2854 -      pts/0    00:00:00 ps

F代表程序旗标,表明程序的一些性质,图中 4 代表是 root 执行。

S代表该程序的运行状态。

字母 状态
R Running 运行中
S Sleep 休眠中,随意可以唤醒
D Disk Sleep 深入休眠,通常正在进行磁盘IO,不可唤醒
T Stopped 暂停状态
Z Zombie 进程已结束,但父进程没有回收

UID 是进程执行者的 UID, PID 就是进程的 ID,PPID 就是父进程的 PID。

PRI 和 NI 代表程序的执行优先级,越小则越优先执行。

C 代表程序的CPU占用率。ADDR 和 SZ 和内存相关,代表内存中的位置和占内存大小。WCHAN 表示 waiting channel 表明程序的等待运行进度。TIME代表该程序占用CPU运行的时间。

TTY 表示所在的终端,本地终端是TTY,其他则是动态的虚拟终端 pts。CMD 代表是哪个程序指令。

ps aux

ps aux或者ps -aux可以查看当前所有进程(两种不同的参数风格)。

ps aux | head -n 4
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.2 102724 11524 ?        Ss   01:51   0:01 /sbin/init auto noprompt
root           2  0.0  0.0      0     0 ?        S    01:51   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   01:51   0:00 [rcu_gp]

这和ps -l的信息基本是一样,RSS表示使用的物理内存大小,VSZ表示使用的虚拟内存大小,TTY为 ? 表示该进程并不在任何终端下运行。Start 表明该程序开始运行的时间。

top

top 可以动态查看几秒钟内各进程的信息,不过他可以按照内存使用,CPU占用等排序,可以更直观的查看资源使用信息。

pstree

pstree可以把当前进程的父子调用关系绘制成一个树形图,便于查看他们的关系。

image

向程序发送信号

在 linux 中,与程序交互的重要手段之一就是向程序发送信号。kill 可以用于发送信号,kill -l可以查询信号的种类

kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

使用 kill -signalnumber PID 可以向对应 PID 的程序发送信号。

kill -9 1000 # -9即 kill 信号,强制要求程序退出,这是最常用的
kill -15 %2 # %开头表示背景工作号,-15表示要求正常结束

程序的优先级

每个进程都有一个PRI数值(priority)和 NI 数值(nice),这两个数字加起来就是程序的优先级,越低越优先。

为什么要设置两个数值呢?因为 PRI 是内核算出来的,不可更改的数,NI 则是用户可以手动调整的。通过调整 NI,就可以一定程度上自订程序的优先级。

# nice 命令
nice -n 10 command # 赋值 ni=10 的命令

renice 10 PID # 修改已有进程的 ni 值

root 可以修改所有进程的 NI 值,范围(-20 ~ 19),而一般用户只能调整自己进程的值,范围(0~19)。

查询程序打开的文件

fuser 查询一个文件或目录的使用者。

~$ fuser -v . # -v 查看详细信息
                     USER        PID ACCESS COMMAND
/home/ubuntu:        ubuntu    225862 ..c.. bash

相对的,lsof 查询程序已经打开的文件

lsof [-adu] # 列出程序打开的文件
+d: 限定目录
-u: 限定文件
-a: 需要多个条件同时满足

lsof -u ubuntu 
# 太多了!而且不能指定pid,所以只能用grep选中要查看的程序了
lsof -a -u ubuntu +d .

pidof 可以快速根据命令名查找pid,默认会找出所有的pid

pidof bash
225862

标签:10,00,SIGRTMAX,程序,ps,linux,进程,SIGRTMIN
From: https://www.cnblogs.com/ofnoname/p/17133790.html

相关文章

  • linux017之安装tomcat
    linux安装Tomcat:一、安装tomcat之前,需要先配置好jdk,不会配置jdk可以看着篇文章:https://www.cnblogs.com/FBGG/p/17133711.html二、下载Tomcat,地址:http://tomcat.apache.......
  • PAT-basic-1025 反转链表 java c++
    一、题目给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为1→2→3→4→5→6,K 为3,则输出应该为3→2→1→6→5→4;如果 K ......
  • Linux之iptables防火墙
    一、安全技术1.安全技术分类入侵检测系统(IntrusionDetectionSystems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供......
  • PAT-basic-1024 科学计数法 java
    一、题目科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该......
  • linux016之安装JDK
    linux上安装JDK:一:首先检查一下linux上是否已经安装有jdkrpm-qa|grepjdk:查询目前系统已安装的jdk,直接复制该命令执行,如下图就是系统已经安装好的JDK  rpm-qa......
  • pat1008
    这个还是比较简单的1#include<iostream>2#include<stdio.h>3usingnamespacestd;45intmain()6{7intn,m;8scanf("%d%d",&n,&m);9......
  • Android SELinux 权限问题总结
    SELinuxTE添加权限不生效的解决方法==============================================selinuxsecuritylevel引起的deniedu:r:untrusted_app:s0:c512,c768问题,可以查看:h......
  • pat1007
    刚开始打算用数组储存的,总是把问题想得太复杂了。1#include<iostream>2#include<math.h>3#include<stdio.h>4usingnamespacestd;56boolIsPrime(i......
  • PAT-basic-1023 组个最小数 java
    一、题目给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,......
  • Linux USB 文件读写性能测试
    USB端口读写性能测试:========================================================读测试:sync&&echo3>/proc/sys/vm/drop_caches;ddif=/mnt/media_rw/F004-BB9B/file......