操作系统给予这个内存中的单元一个标识符(PID)依据登入者的UID/GID(/etc/passwd)
衍生出的其它程序(子程序),一般情况也,也会沿用这个程序(父程序)的相关权限
ParentID(PPID)
[root@localhost ~]# bash <==在当前用户环境下再触发一次bash,原bash会sleep [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 5195 3285 0 80 0 - 29007 wait pts/2 00:00:00 bash 4 S 0 7651 5195 1 80 0 - 29008 wait pts/2 00:00:00 bash 0 R 0 7686 7651 0 80 0 - 37233 - pts/2 00:00:00 ps
系统先以fork的形式复制一个与父程序相同的暂存程序,它们的PID不同。
暂存程序开始以exec的方式加载实际要执行的程序,成为一个子程序。
命令后加&:于后台运行,不会被【Ctrl】+【c】中断
[root@localhost ~]# tar -zpcf /tmp/etc.tar.gz /etc & [1] 8400 <==此时bash会给这个job一个工作号码job number,该指令触发的PID为8400 …… [1]+ Done tar -zpcf /tmp/etc.tar.gz /etc
在背景中执行的程序,如果有stdout/stdeer,数据依然出现在屏幕上
背景中执行的程序不能等待terminal/shell的input,但可以用fg/bg呼叫
fg %jobnumber <==将背景工作拿到前台(foreground)处理
bg %jobnumber <==激活后台暂停的进程
jobs观察目前的背景工作状态
-l 除了列出job number和指令串,同时列出PID号码
-r 仅列出正在背景running的工作
-s 仅列出正在背景stopping的工作
kill 给某个程序一个讯号
kill -l列出kill命令当前能够使用的讯号(signal)有哪些
kill -signal PID/%jobnumber
-1 启动被终止的程序,让该PID重新读取自己的配置文件
-2 同【ctrl】+【c】
-9 立刻强制删除
-15/-SIGTERM 以正常程序的方式终止
killall -signal command 利用下达指令的名称给予讯号,而不根据PID/jobnumber
-i 交互式的,删除时出现提示字符给用户
例如killall -i -9 bash
可以通过pidof [-sx] program_name查询某个程序的PID
-s 仅列出一个PID
-x 同时列出program_name可能的PPID那个程序的PID
远程连接Linux主机,将工作以&的方式放置到背景中,工作管理的背景与终端机有关而非系统背景,终端机登出则工作中断,可以用at将工作放到系统背景,或:
nohup command
nohup command &
nohup不支持bash内建指令,与终端机无关,输出会被导向~/nohup.out
ps
-A:所有的process均显示出来,类似-e
-a:不与terminal有关的所有process
-u:有效使用者有关的process
-x:通常与a这个参数一起使用,列出更详细的信息
[root@localhost ~]# ps -l <==仅列出与自己的操作环境(bash)有关的程序 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 3276 3271 0 80 0 - 29040 wait pts/0 00:00:00 bash 4 S 0 3688 3276 0 80 0 - 29009 wait pts/0 00:00:00 bash 0 R 0 3924 3688 0 80 0 - 37233 - pts/0 00:00:00 ps
最上层的父程序会是自己的bash而没有延伸到init这支程序去
F(process flags)说明程序总结权限,4表示此程序权限为root
1表示此子程序仅fork没有实际执行(exec)
S(STAT) 代表程序的状态,R(Running)正在运行中
S(Sleep)正在睡眠状态但可以被唤醒
D 不可被唤醒的睡眠状态
T(Stop)停止状态
Z(Zombie)僵尸状态,程序已经终止但无法被移除到内存外
C CPU使用率百分比
PRI/NI(priority/Nice)代表此程序被CPU使用的优先级,数值越小越快被CPU执行
ADDR 指出程序在内存哪一部分,running的程序一般会显示[-]
SZ 此程序用掉多少内存
WCHAN 目前程序是否运行中,[-]代表运行中
TTY 登入者的终端机位置,远程登录使用动态终端接口pts/n,?表示与终端机无关
TIME 实际花费CPU运作的时间
CMD(command)
[root@localhost ~]# ps aux <==列出所有目前内存中的程序,按照PID顺序显示 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.3 193628 6724 ? Ss 22:06 0:05 /usr/lib/system root 2 0.0 0.0 0 0 ? S 22:06 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 22:06 0:00 [ksoftirqd/0]
%MEM 该process占用物理内存百分比
VSC 该process使用的虚拟内存量(kbytes)
RSS 该process占用的固定内存量
[root@www ~]# ps aux | egrep '(cron|syslog)' root 4286 0.0 0.0 1720 572 ? Ss Mar11 0:00 syslogd -m 0 root 4661 0.0 0.1 5500 1192 ? Ss Mar11 0:00 crond root 14286 0.0 0.0 4116 592 pts/1 R+ 16:15 0:00 egrep (cron|syslog)
top
-d 接程序画面更新的秒数,默认5秒
-b 以批次的方式执行top
-n 与-b搭配,意为需要进行多少次top的输出结果 top -b -n 2> /tmp/top.txt
-p 指定某些PID进行观察
top - 22:42:19 up 2 min, 2 users, load average: 0.43, 0.39, 0.16 Tasks: 198 total, 1 running, 197 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.3 us, 4.8 sy, 0.0 ni, 92.5 id, 0.3 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 1875748 total, 925472 free, 490608 used, 459668 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1177456 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2990 root 20 0 1729560 179908 46216 R 20.6 9.6 0:23.26 gnome-shell
2363 root 20 0 262556 36664 10496 R 9.5 2.0 0:10.01 Xorg
3310 root 20 0 555956 20272 12740 S 5.8 1.1 0:05.71 gnome-terminal- ……
开机时间,已开机时长,用户数,系统在1、5、15分钟的平级负载,可以用uptime显示
目前程序总量和状态
CPU整体负载,按【1】查看多核,us表示用户空间占用cpu百分比
sy表示系统内核空间占用CPU百分比
ni表示用户进程空间内改变过优先级的进程占用CPU百分比
id表示空闲CPU百分比
wa表示由于IO 等待而使CPU处于等待的时间
hi表示硬件中断占用CPU时间百分比
si表示软中断占用CPU时间百分比
st表示虚拟服务占用CPU时间百分比
物理内存
虚拟内存
PID :每个 process 的 ID ,按【k】杀掉
USER:该 process 所属的使用者;
PR :Priority 的简写,程序的优先执行顸序,越小越早被执行
NI :Nice的简写,与 Priority 有关,也是越小越早被执行,按【r】重写Nice
%CPU:CPU 的使用率,按【p】即可以CPU使用率排序
%MEM:内存的使用率,按【m】即可以内存使用率排序
TIME+:CPU 使用时间的累加
pstree 以树状结构显示进程
-p 同时列出每个程序的PID
-u 同时列出每个程序的所属账户
优先执行序(priority,PRI)越低代表越优先
PRI(new)=PRI(old)+nice 但最终RRI由系统分析决定
root可以随意调整自己或他人的程序,nice可调整范围为-20~19
一般用户仅可调整自己的nice值且范围为0~19。并且只能调高不能调低。
nice [-n 数字] command
renice [数字] PID