linux多任务概念: 
    linux采用分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片,从而使所有的任务共同分享系统资源,因此linux可以在一个任务还未执行完成时,暂时挂起此任务,又去执行另一个任务,过一段时间以后再回来处理这个任务,直到这个任务完成,才从任务队列中去除,这个就是多任务的概念。
    进程:在自身的虚拟地址空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称为一个进程。
    程序和进程的区别:进程由程序产生单并不是程序。程序是一个进程指令的结合。程序占用磁盘空间。进程占用内存空间,是动态,可变的,关闭进程,占用的内存资源随之释放。
    进程的分类:
        系统进程:可以执行内存资源分配和进程切换等管理工作,而且,该进程不受用户干预,(root也不可以)
                用ps -ef 查看 [] 包含的进程一般为系统进程。
        用户进程:通过执行用户程序,应用程序或内核之外的系统程序而产生的进程,用户控制。
         对于用户进程:分为交互进程,批处理进程和守护进程三类。
        1.交互进程:由一个shell终端启动的进程,需要与用户进行交互操作,可运行与前台或后台
        2.批处理进程:一个进程集合,负责按顺序启动其他的进程
        3.守护进程:一直运行着的进程,直到系统关闭。比如crond。还有开启的httpd进程。
    linux进程的几个状态
1. Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态)
2. Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal
3. Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟
4. Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根本没有时间片运行代码
5. Linux进程状态:Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程。不可被kill, 即不响应任务信号, 无法用SIGKILL杀死
    进程之间的关系。
        在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识。它的大小有限最大ID32768,所有的进程都是PID为1的init进程的后代,内核在系统启动的最后阶段启动init进程。因此,这个进程时linux下所有及昵称的父进程,用PPID表示父进程。每个进程作为子进程都必须由父进程管理。当父进程停止,子进程也随之消失。僵死状态就是子进程结束。父进程没有释放系统资源。
    常用命令:
       1. ps -ef
        UID        PID  PPID  C STIME TTY          TIME CMD
        root         1     0  0 03:20 ?        00:00:01 /usr/lib/systemd/systemd
        其中,UID是用户的ID标识号,PID是进程的标识号,PPID表示父进程,STIME表示进程的启动时间,TTY表示进程所属的终端控制台,TIME表示进程启动后累计使用的CPU总时间,CMD表示正在执行的命令。
        # ps auxf 
        USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
        root         2  0.0  0.0      0     0 ?        S    03:20   0:00 [kthreadd]
        其中,%CPU表示进程占用的CPU百分比,%MEM表示进程占用内存的百分比,VSZ表示进程虚拟大小,RSS表示进程的实际内存(驻留集)大小(单位是页)。STAT表示进程的状态,进程的状态有很多种:用“R”表示正在运行中的进程,用“S”表示处于休眠状态的进程,  用“Z”表示僵死进程,用“<”表示优先级高的进程,用“N”表示优先级较低的进程,用“s”表示父进程,用“+”表示位于后台的进程。START表示启动进程的时间。
    2. pstree 以树形结构显示程序和进程之间的关系。
        格式  :  pstree [-acnpu] [<PID>/<user>]
        选项含义如下:
            -a 显示启动每个进程对应的完整指令,包括启动进程的路径,参数等等。
            -c 显示过程中包含子进程和父进程
            -n 根据进程PID来排序输出,默认以程序名称排序输出
            -p 显示进程PID
            -u 显示进程对应的用户名称
            PID  进程对应的PID 号
            user 系统用户名
    3.top
    4.lsof (list opened files) 列举系统中已经被打开的文件
        lsof filename 显示使用filename文件的进程
        lsof  -c  softname  显示 进程打开的文件数
            这个数字受系统限制  ulimit -a 
        lsof  -p PID 根据进程号显示进程打开的文件
        lsof -i 通过监听指定的协议、端口、主机等信息,显示符合条件的进程信息。

5.pgrep 通过程序名字来查询进程pid的工具
            参数:
                -l 此参数列出程序名和进程ID值
                -o 此参数用来显示进程起始ID值
                -n 此参数用来显示进程终止ID值
                -f  匹配command中的关键字 (如果想匹配mysqld  如果有-F 参数可以写成 my就可以找到mysqld)
                -G 此参数匹配指定组启动的进程相应的ID值。
    对比命令:查找进程的PID
        # ps -ef | grep mysqld| grep -v grep|awk '{print $2}'
        2713
        2858
        # pgrep mysql
        2713
        2858
    crond任务计划:
        主配置文件:/etc/crontab
    # Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,
sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
    minute: 表示分钟,可以是从0到59之间的任何整数。
    hour:表示小时,可以是从0到23之间的任何整数。
    day:表示日期,可以是从1到31之间的任何整数。
    month:表示月份,可以是从1到12之间的任何整数。
    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
    在以上各个字段中,还可以使用以下特殊字符:
    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
    crontab文件举例
    0 */5 * * * /usr/local/apache2/apachectl restart
    表示每隔5个小时重启apache服务一次。
     10 1 * * 6 /webdata/bin/backup.sh
    表示每周六的1点10分执行/webdata/bin/backup.sh脚本的操作。
     0 0 5,25 * *  fsck /dev/sdb8
    表示每个月的5号和25号检查/dev/sdb8磁盘设备。
     10 5 */5 * *  echo "">/usr/local/apache2/log/access_log
    表示每个月的5号、10号、15号、20号、25号、30号的5点10分执行清理apache日志操作。
    crond 注意事项
        1.注意环境变量
            指定crontab文件中指定任务运行所需的所有环境变量。脚本需要shell环境的支持。
        2.注意清理系统用户的邮件日志
            任务调度执行后,系统将输出信息通过电子邮件形式发送给当前系统用户。
            这里可以通过重定向忽略日志信息。
            > /dev/null 2>&1  (将正确的信息和错误的信息都重定向输出给/dev/null)
        3.系统级任务和用户级别的任务调度
            由于权限不同。一般需要root权限的调度需要指定root通过 crontab -uroot -e
            或crontab -e  直接写入。如果把一个系统级别的调度放入用户下将不生效。
    关闭进程:(kill 终止一个进程)kill的本质:就是将指定的信号送至程序。
        语法: kill [信号类型] 进程 PID
        查看系统所有的信号名称:
        kill -l| awk '{print $1$2,$3$4,$5$6,$7$8,$9$10}'|sed 's/ /\n/g'|grep -v "^$
        只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:
         HUP 1 终端断线 
         INT 2 中断(同 Ctrl + C) 
         QUIT 3 退出(同 Ctrl + \) 
         KILL 9 强制终止 
         用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。
          TERM 15 终止   shell的默认类型
         程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。
         CONT 18 继续(与STOP相反) 
         STOP 19 暂停(同 Ctrl + Z)
         一般我们用到 ctrl + C 相当于给进程发送  kill -2 进程PID
                      ctrl + Z 相当于给进程发送  kill -19 进程PID
        kill -9 进程PID
        killall  进程名称

本文转自 swallow_zys  51CTO博客,原文链接:http://blog.51cto.com/12042068/1898730,如需转载请自行联系原作者

linux进程管理简析相关推荐

  1. linux进程通信核心态时间,Linux进程管理简谈

    Linux系统进程管理简谈 进程是什么? 进程是对处理器.主存和I/O设备的抽象表示. 进程是操作系统对一个正在运行的程序的一种抽象,在一个系统上可以同时运行多个进程,而每个进程都好像在独占的使用硬件 ...

  2. Linux内核引导简析

    bootsect.S.setup.S.head.S分析 收藏 2010-01-14 13:36:34 bootsect.S,系统引导程序,一般不超过512字节. 在PC系统结构中,线性地址0xA000 ...

  3. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

  4. linux进程管理机制,linux进程管理,linux进程管理机制

    linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...

  5. Linux—进程管理

    1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...

  6. Linux 进程管理工具

    Linux进程管理命令:     pstree.ps.top.pidof.htop.glances.pmap.vmstat.dstat.kill.pkill.job.bg.fg.nohup.pgrep ...

  7. linux进程管理命令实验,实验2Linux进程管理.doc

    实验2Linux进程管理 实验2 Linux进程管理 实验目的 1.加深对进程概念的理解,明确进程和程序的区别 2.进一步认识并发执行的实质 3.分析进程争用资源的现象,学习解决进程互斥的方法 实验性 ...

  8. linux进程管理fork,Linux -- 进程管理之 fork() 函数

    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同.相当于克隆了一个自己. Test1 f ...

  9. Linux进程管理之ps的使用

    主题Linux进程管理之ps工具的使用 一ps工具的介绍 ps: process state  进程状态 ps - report a snapshot of the current processes ...

最新文章

  1. 用C#和本地Windows API操纵系统菜单
  2. zabbix监控nginx,PHP-FPM,ELK报警
  3. 360能删除mysql吗_如何彻底删除MYSQL
  4. 等于x分之a的平方的导数_清华学霸丨手把手教你导数大题如何骗分(文理通用),家长为孩子收...
  5. POJ 2676/2918 数独(dfs)
  6. 【MySQL】MySQL 中的函数
  7. docker快速搭建数据库测试环境
  8. 如何装系统,如何装kali linux系统
  9. VB中输入函数InputBox的用法
  10. 计算机怎么清理CAD,注册表cad,如何清理cad软件在注册表残留
  11. SSO单点登录原理详解(从入门到精通)
  12. STM8S 红外解码+低功耗处理
  13. 量子笔记:酉矩阵(幺正矩阵)、量子门的可逆性
  14. 云计算机是什么技术,什么是云计算技术?
  15. 教你学习JavaScript的this入门到进阶最全用法
  16. 快速云:云计算供应商在合同谈判时可能拒绝的三个事项以及要求
  17. flink sql 报错:FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
  18. 【Matlab】蒙特卡罗法模拟圆周率+对应解析的GIF生成【超详细的注释和解释】
  19. 考研高等数学公式总结(一)
  20. requests登录知乎新版

热门文章

  1. 企业平均每年遭遇9起有针对性攻击
  2. 《数字逻辑设计与计算机组成》一 第2章 2.1 简介
  3. Linux常用的基础组件
  4. 基于HT for Web的Web SCADA工控移动应用
  5. centOS中网络配置相关文件配置选项说明
  6. JavaScript设计模式: 接口模仿
  7. CSS3和jQuery实现的自定义美化Checkbox和Radiobox
  8. MATLAB脚本显示滤波器系数
  9. WP7基础学习---第一讲
  10. AJAX在VS2005下的基本使用第一篇