进程监控与管理

1.进程

狭义定义:进程是正在运行的程序的实例

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

进程是由进程控制块、程序段、数据段三部分组成

  程序

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

进程和程序区别  
    1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。
    2.程序和进程无一一对应关系。一个程序可以由多个时程公用;另一一方面,一个进程在活动中有可顺序地执行若干个程序

  线程

进程和线程关系

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

常用进程常在缓存中,不常用的在内存中。

父子进程的关系
    1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程    
    2.在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。  
    3.父进程终止子进程自然终止。

2.进程状态

task_struct中的state描述进程的当前状态。进程的状态一共有5种,而进程必然处于其中一种状态:

1)TASK_RUNNING(运行)——进程是可执行的,它或者正在执行,或者在运行队列中等待执行。这是进程在用户空间中执行唯一可能的状态;也可以应用到内核空间中正在执行的进程。

2)TASK_INTERRUPTIBLE(可中断)——进程正在睡眠(也就是说它被阻塞)等待某些条件的达成。一旦这些条件达成,内核就会把进程状态设置为运行,处于此状态的进程也会因为接收到信号而提前被唤醒并投入运行。

3)TASK_UNINTERRUPTIBLE(不可中断)——除了不会因为接收到信号而被唤醒从而投入运行外,这个状态与可打断状态相同。这个状态通常在进程必须在等待时不受干扰或等待事件很快就会发生时出现。由于处于此状态的任务对信号不作响应,所以较之可中断状态,使用得较少。

4)TASK_ZOMBIE(僵死)——该进程已经结束了,但是其父进程还没有调用wait4()系统调用。为了父进程能够获知它的消息,子进程的进程描述符仍然被保留着。一旦父进程调用了wait4(),进程描述符就会被释放。

5)TASK_STOPPED(停止)——进程停止执行,进程没有投入运行也不能投入运行。通常这种状态发生在接收到SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU等信号的时候。此外,在调试期间接收到任何信号,都会使进程进入这种状态。

需要调整进程的状态,最好使用set_task_state(task, state)函数,在必要的时候,它会设置内存屏障来强制其他处理器作重新排序(SMP)。

进程的各个状态之间的转化构成了进程的整个生命周期,

3.图形中如何查看进程

gnome-system-monitor

4.如何用命令查看进程

ps进程查看工具

-ashell中运行的进程

-x不在shell重运行的进程

-u查看进程用户

-l显示进程的详细信息

-f完全信息full的缩写

-e显示进程的依赖关系

-o %cpu,%mem,user,pid,comm

ps  -aux  |grep进程关键字

ps ax-o %cpu,%mem,user,pid,comm##查看进程某项信息

对查找出来的进程排序?

ps aux --sort +|-%cpu|%mem...##进程按指定方式排序

#查询CPU占用率前5的进程PID号。???

pstree

[email protected]:~# ps -l  
F S  UID  PID  PPID    C   PRI   NI   ADDR   SZ    WCHAN   TTY  TIME  CMD
    
    看一下上面的选项都指的什么    
    PID :      进程号  
    PPLD:   父进程的进程号  
    TTY :    进程启动的终端
    STAT :  进程当前状态(S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止)
    NI :        进程优先级
    TIME:     进程自从启动以后启用CPU的总时间
    COMMAND/CMD:进程的命令名
    USER:    用户名
    %CPU:   占用CPU时间和总时间的百分比  
    %MEM:  占用内存与系统内存总量的百分比

5.如何控制shell重进程的前后台调用

命令&##进程在shell后台运行

ctrl +z##把占用shell的进程打入后台运行暂停工作

jobs##查看被打入后台的进程信息

fg job号##把指定进程调回前台

bg job号##运行起来后台停止的进程

ctrl +c##关闭占用shell进程

6.如何用命令控制进程

1)信号

信号 1##reload进程(不关进程情况下重读配置文件)

信号 2##ctrl +c 删除进程在内存中的信息

信号 3##内存中的鼠标信息清除  (ctrl+\)

信号 9##强行关闭进程 (关闭单一进程)

信号 15##正常关闭进程  (关闭主进程后子进程也关闭)

信号 18##开启停止的进程   (bg job)

信号 19##停止正在运行的进程

信号 20##ctrl +z

2)信号发起

kill 信号 pid

killall信号进程名称  (批量处理)

pkill -u username##结束某个用户的所有进程

7.用户登陆监控

w##查看当前使用系统的用户

w-f##查看当前使用系统的用户并显示使用地点

last##查看登陆过系统的用户

lastb##查看试图登陆但没有成功的用户

[[email protected] cron]# w  
    14:48:39 up 2:46, 1 user,     load average: 0.00,   0.01,   0.00
    USER     TTY       FROM             [email protected]     IDLE   JCPU   PCPU WHAT
    root       pts/1    192.168.203.1 12:27      0.00s   0.17s   0.02s w
    w显示信息的含义:
    JCPU:     以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的CPU时间会显示在这里
    PCPU:   cpu执行程序消耗的时间
    WHAT:    用户下在执行的操作
    load average :分别显示系统在过去1、5、15分钟内的平均负载程度。
    FROM:  显示用户从何处登录系统,":0"的显示代表该用户时人X Windows下,打开文本模式窗口登录的
    IDLE:   用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
    查看个别用户信息:w [用户名]

8.top命令  系统进程监控

u username

k 信号 PID

h 帮助

s 多少妙动态监控一次

m 内存排序

c CPU排序

9.计划任务

at      安排作业在某一时刻执行一次 
 batch  安排作业在系统负载不重时执行一次
 cron    安排周期性运行的作业

  9.1at命令指定时间的方式
    
    绝对计时方法: 
    midnight noon teatime  
    hh:mm [today]  
    hh:mm tomorrow 
    hh:mm 星期
   hh:mm MM/DD/YY
    相对计时方法:
    now+n minutes   
    mow+n hours
    now+n days
    9.2crontab的命令格式
    crontab {-l|-r|-e}
    -l   显示当前的crontab
    -r   删除当前的crontab
    -e   使用编辑器编辑当前crontab文件
    好多人都觉得周期计划任务设置起来比较麻烦,其实我们只要掌握规律就很好设置。  
    crontab -e
    规则:  把知道的具体的时间添上,不知道的都添加上*
    分钟    小时   天    月    星期   命令/脚本

假如,我们每天早上4点要做一下操作,以下面方式表示:
    分钟    小时    天    月  星期    命令/脚本
    
    *         18     *     *   1,3      [具体的操作]

[[email protected] test]#  crontab -e    回车会进入一个vi文本中
    根据我上面介绍格式编写内容,然后保存退出
    crontab: installing new crontab 表示创建计划成功
    通过下面方式进行查看计划:
    [[email protected] test]# cd /var/spool/cron
    [[email protected] cron]# ls
    root
    [[email protected] cron]# cat root
    30 17 * * 1-5 /usr/bin/shudown -h now

进程管理命令总结

    top、free、ps、pstree、(p)kill、nohup、jobs、fg、bg、Ctrl+Z、(re)nice。

Top: 性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似windows的任务管理器。

Free:显示内存和swap的详细信息,包括buffers、cached、shared、free。

Ps:显示瞬间进程的状态,不是动态的。常用格式:ps -ef 、ps aux 。f参数以长格式输出。

Pstree:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),可以指定显示某个使用者的进程。

Kill:终止进程。向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。常用格式:kill pid或kill -9 pid。

Nohup:不挂断地运行命令(让程序后台运行)。守护进程可以直接在命令后面加上&符号,普通程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。(有些人用nohup运行程序后直接按关闭按钮关掉连接的窗口,这样做不规范,程序会随着session的关闭而终止。正确步骤是:先按任意键回到shell终端,然后输入exit退出)。

Jobs:查看当前在后台运行的程序。

Fg:将后台的命令调至前台继续运行。格式:fg %jobId,这里不是进程的pid,是用jobs查到的jobid。

Bg:将一个在后台暂停的命令,变成继续执行。格式:bg %jobId。

Ctrl+Z:这是组合键,将一个正在前台执行的命令放到后台,并暂停。

Nice:内核根据进程的nice值决定进程需要多少处理器时间,取值范围-20到20,值越低优先级越高,Ps axl可以查看 NI 值。降低优先级可以直接用"nice -niceNum 命令"这种格式;提升优先级用"nice --niceNum 命令"的格式,如果为负数则需要root权限。

时间: 2024-10-05 05:09:50

进程监控与管理的相关文章

使用monit规范的扩展业务的进程监控和管理

前言: 看到这个标题的人一定会很疑惑,进程监控和报警,不都是用zabbix,nagios么?  对于管理的话,自己写crontab脚本不就行了. 当然这肯定是可以的. 标题说了,规范和扩展!   所谓的进程监控就是 在进程不可用,或者是被kill掉,也有外因,比如进程吃内存大,需要重启进程,让他初始化程序的实例,简单说,就是进程pid是在,只是进程是假死的,不可用的. 对于这些进程管理和监控的需求,说下圈子里面解决这类问题的办法: 大家一定知道supervisord这个东西,现在很多人都喜欢用他

Mac下Supervisor进程监控管理工具的安装与配置

Supervisor是一个类 unix 操作系统下的进程监控管理工具. Supervisor是由 Python 写成,可用 Python 的包安装管理工具 pip(Python Package Index) 直接安装 代码如下: sudo pip install supervisor 配置 Supervisor Supervisor 的配置文件命名为 supervisord.conf,它为 supervisord(Supervisor 的主服务命令) 和 supervisorctl(Superv

用Python的Supervisor进行进程监控以及自动启动

做服务器端开发的同学应该都对进程监控不会陌生,最近恰好要更换 uwsgi 为 gunicorn,而gunicorn又恰好有这么一章讲进程监控,所以多研究了下. 结合之前在腾讯工作的经验,也会讲讲腾讯的服务器监控是怎么做的.同时也会讲下小团队又该怎么敏捷的解决. 下面按照监控的方法依次介绍. 一.按照进程名监控 在腾讯内部所有server都是要打包发布的,而在打包过程中是需要填写要监控的进程名,然后在crontab中定时通过ps查询进程是否存在. 这种方法是比较简单的方法,但是考虑到很多进程会在启

Linux之进程查看与管理

                       Linux之进程查看与管理 1.进程的基本概念 进程是运行起来的程序.唯一标示进程的是进程描述符(PID),在linux内核中是通过task_struck和task_list来定义和管理进程的 进程分类:交互式进程.批处理进程.实时进程 交互式进程:一般是由Shell启动的进程.交互式进程有:控制台命令shell,文本编辑器,图形应用程序 批处理进程(Batch Process):不需要用户交互,一般在后台运行. 实时进程:这种进程不能被低优先级进程

linux 进程监控

linux 进程监控 monit monit是一个小型的开放源码工具来管理和监控Unix系统.Monit可以自动维护进程,及时避免进程异常退出等产生的问题. 系统: monit可以监控问题的发生,包括进程状态.系统cpu负载.内存占用情况等,例如当apache服务的cpu负载以及内存闸弄情况过高时候,它会重启apache服务. 进程: monit可以监控守护进程,包括系统进程.例如当某个进行down掉,它会自动恢复重启该进程. 文件系统:Monit可以监控本地文件.目录.文件系统的变化,包括时间

RMAN 配置、监控与管理

========================= -- RMAN 配置.监控与管理 --========================= 一.通道及通道分配 1.通道的概念 一个通道代表一个到设备(磁盘或磁带)的数据流并且在目标数据库或辅助数据库实例上产生一个相应的服务器会话(server session) 多个通道则产生多个服务器会话,这些服务器会话(或进程)将完成备份.还原与恢复操作等 通道分为备份或还原到磁盘的磁盘通道(disk channel).备份还原到磁带的磁带通道(SBT) 在

Windows下tomcat进程监控批处理程序

在Windows下tomcat进程监控批处理程序脚本如下: @echo off ::tomcat安装目录 set _tomcatDir=E:\myFiles\apache-tomcat-8.5.31 set _curlDir=E:\myFiles\apache-tomcat-8.5.31\curl set "httpcode=" ::访问tomcat cd /d %_curlDir% for /f "delims=" %%r in ('CURL.EXE -m 60

Java进程监控

目录 1.引言 2. 程序启停, 为进程自定义项目名称 3. 操作系统判断 4. 获取进程信息 5. 内存,CPU信息 6. 堆内存信息 7. 端口信息 8. 线程信息 9. MXBean使用样例 9.1 根据pid获取jvm对象 9.2 根据jvm对象获取jmx服务 9.3. 使用MXBean代理获取具体管理工具 9.4 访问MXBean demo 9.6 demo ?最近项目需要对Java进程,堆栈信息,内存,cpu等资源的消耗进行监控,借鉴了git已有的轮子JPOM java项目管理系统和

Linux进程查看,管理工具

浅谈linux下进程查看,管理工具 1.pstree 显示进程树. 显示各个进程之间的关系 [[email protected] ~]# pstree init─┬─abrtd      ├─acpid      ├─atd      ├─console-kit-dae───63*[{console-kit-da}]      ├─crond      ├─cupsd      ├─dbus-daemon      ├─dhclient      ├─fcoemon      ├─hald─┬─