linux abrt进程,Linux进程及作业控制

inux进程

进程的概念

当一个系统启动时,刚开机是第一个运行的是内核代码!先把内核放到cpu上运行,等内核控制和掌管了一切,有内核启动进程!然后创建第一个进程 init进程  内核空间 用户空间也都已被创建成功!后期的一切管理工作都由init来负责

init不能代表系统完成一些内核特权的执行!但由他负责向内核提交

他是总的由用户管理的总进程,它会照自己样子创建一个子进程,除了init以外,所有的进程都是由其父进程创建! init是由 上帝(kernel)创造出来的

父进程如何创建子进程,是 fork 自身而来!父进程在创建子进程时是使用同一段内存空间!

内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能

Process: 运行中的程序的一个副本,是被载入内存的一个指令集合

进程ID(Process ID,PID)号码被用来标记各个进程

UID、GID、和SELinux语境决定对文件系统的存取和访问权限,

通常从执行进程的用户来继承

存在生命周期

Linux内核存储进程信息的固定格式:task struct

多个任务的的task struct组件的链表:task list

进程创建:

init:第一个进程

父子关系

进程:都由其父进程创建

fork(), clone()

进程优先级:

系统优先级:数字越小,优先级越高

0-139(CentOS4,5)

各有140个运行队列和过期队列

0-98,99(CenOS6)

实时优先级: 99-0:值最大优先级最高

Nice值:-20,19对应系统优先级100-139或99

Nice值:

-20,19

Big O:时间复杂度,用时和规模的关系

O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

进程内存:

Page Frame:  页框,用存储页面数据,存储Page 4k

LRU:  Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间

MMU:Memory Management Unit负责转换线性和物理地址

事实上应用程序是不可能访问硬件(包括内存),内核就是为了完成资源分配的,会把内存切割成固定大小的片段分配给各个应用使用大小为  4K!

内核分配多个不连续的内存,并把它们假装成连续的(用一个中间层!使应用假装跑在连续的内存中)

IPC: Inter Process Communication 进程之间的通信

同一主机上:

signal   发信号

shm: shared memory  使用共享内存,读其他进程的内存空间

semerphor  发一个短小的信号!

不同主机上:

rpc: remote procecure call  远程过程调用

socket: 基于套接字通信!

首先创建一个 socket 文件 :一端保存着自己的端口,还保存有对方的通信端口   进程关闭了就把这个关闭

Linux内核:抢占式多任务

进程类型:

守护进程: 在系统引导过程中启动的进程,跟终端无关的进程;

前台进程:跟终端相关,通过终端启动的进程

注意:也可把在前台启动的进程送往后台,以守护模式运行;

进程状态:

运行态:running

就绪态:ready

睡眠态:

可中断:interruptable

不可中断:uninterruptable

停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped

僵死态:zombie

进程的分类:

CPU-Bound:CPU密集型,非交互

IO-Bound:IO密集型,交互

系统进程管理工具

Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

pstree命令

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

显示当前所有进程的进程号和进程id

pstree -p

[root@qzx /etc/yum.repos.d ]# pstree -p

systemd(1)─┬─ModemManager(789)─┬─{ModemManager}(807)

│                   └─{ModemManager}(818)

├─NetworkManager(44463)─┬─dhclient(47671)

│                       ├─dhclient(47742)

│                       ├─{NetworkManager}(44464)

│                       └─{NetworkManager}(44467)

├─abrt-watch-log(828)

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。

pstree  -a

ps 列举进程

适用ps来查看进程信息

语法 ps [OPTION]…

支持三种选项:

UNIX选项 如-A -e

BSD选项 如a

GUN选项 如—help

• 默认显示当前终端中的进程

• a 选项包括所有终端中的进程

• x 选项包括不链接终端的进程

• u 选项显示进程所有者的信息

• f 选项显示进程的父进程

• o 属性… 选项显示定制的信息:

pid、comm、%cpu、%mem、state、tty、euser、ruser

常用组合之一:aux

VSZ:虚拟内存集;

RSS:Resident Size,常驻内存集;

STAT:

R:running

S:interruptable sleeping

D:uninterruptable sleeping

T:Stopped

Z:zombie

+:前台进程

l:多线程进程

N:低优先级进程

s:session leader

常用组合之二:-ef

-e:显示所有进程

-f:显示完整格式的进程信息

-F:显示完整格式的进程信息;

C: cpu utilization

PSR:运行于哪颗CPU之上

-H:以层级结构显示进程的相关信息;

常用组合之三:-eFH

常用组合之四:-eo, axo

o  field1, field2,...:自定义要显示的字段列表,以逗号分隔;

常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

ni:nice值;

priority:priority, 优先级;

rtprio:real time priority,实时优先级;

搜索进程

最灵活:ps 选项 | 其它命令

按预定义的模式:pgrep

pgrep [options] pattern

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示指定进程的子进程

按确切的程序名称:/sbin/pidof

$pidof bash

uptime

[root@LinServ-1 ~]# uptime

15:31:30 up 127 days,  3:00,  1 user,  load average: 0.00, 0.00, 0.00

15:31:30          //系统当前时间

up 127 days,  3:00   //主机已运行时间,时间越大,说明你的机器越稳定。

1 user      //用户连接数,是总连接数而不是用户数

load average: 0.00, 0.00, 0.00  // 系统平均负载,统计最近1,5,15分钟的系统平均负载

显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

系统平均负载:

指在特定时间间隔内运行队列中的平均进程数。

如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

top:

排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

选项:

-d #:指定刷新时间间隔,默认为3秒;

-b:以批次方式显示;

-n #:显示多少批次;

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

%Cpu(s):对应的那一横栏:

3c8ce6380daa33c267ccb0e2e66a02de.png

us:用户空间

sy:内核空间

ni:调整nice时间

id:空闲

wa:等待IO时间

hi:硬中断

si:软中断(模式切换)

st:虚拟机偷走的时间

黑底的栏位信息简介

PID (Process Id ) :  任务的进程ID

PPID (Parent Process Pid) :  父任务的进程ID

RUSER (Real User Name) : 任务的所有者真实名称

UID (User Id) : 任务所有者ID

USER (User Name) : 任务所有者名称

GROUP (Group Name) : 任务所有者群组名

TTY (Controlling Tty) : 终端

PR (Priority):优先级

%CPU (CPU usage) : CPU使用率

%MEM (Memory usage (RES)) : 内存使用率

S (Process Status) : 进程状态

TIME+ (CPU Time, hundredths) : CPU时间,精确到秒

htop命令:需从Fedora-EPEL源安装

选项:

-d #: 指定延迟时间;

-u UserName: 仅显示指定用户的进程;

-s COLUME: 以指定字段进行排序;

子命令:

s: 跟踪选定进程的系统调用;

l: 显示选定进程打开的文件列表;

a:将选定的进程绑定至某指定CPU核心;

t: 显示进程树 或者 F5

3c8ce6380daa33c267ccb0e2e66a02de.png

vmstat命令:

Report virtual memory statistics

vmstat 2 10

表示 命令每2秒钟刷新一次,刷新10次

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

pmap命令:进程对应的内存映射表

语法 pmap [选项] pid […]

-x: 显示详细格式的信息;

#pmap 1

查看 1 号进程的系统映射

另外一种实现:

# cat /proc/PID/maps

glances命令:EPEL源

glances

[-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P

password] [—password] [-t refresh] [-f file] [-o output]

常用选项:

-b: 以Byte为单位显示网卡数据速率

-d: 关闭磁盘I/O模块

-f /path/to/somefile: 设定输入文件位置

-o {HTML|CSV}:输出格式

-m: 禁用mount模块

-n: 禁用网络模块

-t #: 延迟时间间隔

-1:每个CPU的相关数据单独显示

C/S模式下运行glances命令

1、服务模式:

glances -s -B IPADDR

IPADDR: 指明监听的本机哪个地址

2、客户端模式:

glances -c IPADDR

IPADDR:要连入的服务器端地址

dstat命令:系统资源统计

dstat [-afv] [options..] [delay [count]]

3c8ce6380daa33c267ccb0e2e66a02de.png

-c: 显示cpu相关信息

-C #,#,…,total(总体的)

-d: 显示磁盘的相关信息

-D total,sda,sdb,…total

-g:显示page相关统计数据

-m: 显示memory相关统计数据

-n: 显示network相关统计数据

-p: 显示process相关统计数据

-r: 显示io请求相关的统计数据

-s: 显示swapped相关的统计数据

—tcp

—udp

—unix

—raw

—socket

—ipc

—top-cpu:显示最占用CPU的进程

—top-io: 显示最占用io的进程

—top-mem: 显示最占用内存的进程

—top-latency: 显示延迟最大的进程

kill命令:

向进程发送控制信号,以实现对进程管理

显示当前系统可用信号: kill -l

常用信号:man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

9) SIGKILL: 杀死正在运行的进程

15) SIGTERM:终止正在运行的进程

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠  相当于ctrl+z

如果复制一个大文件,可以用 ctrl+z送到后台,不过这是是停止状态,可以再用 kill 18 加这个进程  就可以继续进行了

指定信号的方法:

(1) 信号的数字标识;1, 2, 9

(2) 信号完整名称;SIGHUP

(3) 信号的简写名称;HUP

按PID:kill [-SIGNAL]  pid …

按名称:killall [-SIGNAL]  (名称)comm…

按模式:pkill [options] pattern

-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示父进程为此处指定的进程的进程列表

例如:

pkill -t pts/2

表示杀掉 pts/2终端的进程!但是依赖的 bash 杀不了因为发的是 -15信号 要想杀全 就用 pkill -9 -t pts/2

jobs:

前台作业(foregroud):通过终端启动,且启动后会一直占据终端;

后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端);

如何让作业运行于后台?

(1) 运行中的作业

Ctrl+z

注意:送往后台后,作业会转为停止态;

(2) 尚未启动的作业

# COMMAND &

注意:此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:

nohup  COMMAND  &

注意此命令执行后即使父进程关闭依然会运行!执行它的父进程为init。这时只能关闭不能再调入前台了~只能用kill关闭

查看所有作业:

# jobs

作业控制:

fg [%]JOB_NUM :把指定的后台作业调回前台;

bg [%]JOB_NUM :让送往后台的作业在后台继续运行;

kill %JOB_NUM :终止指定的作业 %号不可省!!

同时运行多个进程,提高效率

1、 vi all.sh

f1.sh&

f2.sh&

f3.sh&

2、 (f1.sh&);(f2.sh&);(f3.sh&)

3、 { f1.sh& f2.sh& f3.sh& }

进程优先级调整:

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120

只有根用户才能降低nice值(提高优先性)

数值越低,优先级越高!

nice命令:

nice [OPTION] [COMMAND [ARG]…]

[root@localhost ~]# nice -n 10 ping 10.1.0.1

调整进程优先级为 10

renice命令:对已运行的进程调整nice值

renice [-n] priority pid…

3c8ce6380daa33c267ccb0e2e66a02de.png

查看nice:

ps axo pid,comm,ni

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/45219

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值