zoukankan      html  css  js  c++  java
  • [Linux] 七,进程管理

    课程大纲 『
     进程的概念
     进程管理命令
     计划任务

    进程和程序的区别
     1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,
        它是动态概念,有一定的生命期,是动态产生和消亡的。
     2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个
        进程在活动中有可顺序地执行若干个程序。
    父进程与子进程
     1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
     2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的
        数据和堆栈段以及父进程的进程环境。

     3、父进程终止子进程自然终止。
    前台进程和后台进程
     前台进程:
      在Shell提示处打入命令后,创建一个子进程,运行命
      令,Shell等待命令退出,然后返回到对用户给出提示
      符。这条命令与Shell异步运行,即在前台运行,用户在
      它完成之前不能执行另一个命令。
     后台进程:  【很好】
      在Shell提示处打入命令,若后随一个&,Shell创建的子
      进程运行此命令,但不等待命令退出,而直接返回到对
      用户给出提示。这条命令与Shell同步运行,即在后台运
      行。后台进程必须是非交互式的。
    进程状态
     就绪: 进程已经分配到资源,但因为其它进程正占用
           CPU,所以暂时不能运行而等待分配CPU的状态。
     等待: 因等待某种事件而暂时不能运行的状态。
     运行: 进程分配到CPU,正在处理器上运行。

    进程状态细化
     用户态运行 : 在CPU上执行用户代码
     核心态运行 : 在CPU上执行核心代码
     在内存就绪 : 具备运行条件,只等调度程序为它分配CPU
     在内存睡眠 : 因等待某一事件的发生,而在内存中排队等待
     在外存就绪 : 就绪进程被交换到外存上继续处于就绪状态
     在外存睡眠 : 睡眠进程被交换到外存上继续等待
     在内存暂停 : 因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。
     在外存暂停 : 处于跟踪暂停态的进程被交换到外存上
     创建态 : 新进程正在被创建、但尚未完毕的中间状态
     终止态 : 进程终止自己

    查看用户信息 w
     w显示信息的含义
     JCPU : 以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
     PCPU : CPU执行程序耗费的时间
     WHAT : 用户正在执行的操作查看个别用户信息:w 用户名
    查看用户信息 w
    w显示信息的含义
     load average: 分别显示系统在过去1、5、15分钟内的平均负载程度。
     FROM: 显示用户从何处登录系统,“:0”的显示代表该用户时从X Window下,打开文
           本模式窗口登录的
     IDLE: 用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会
           被重置

    hp@ubuntu:~$ w
     22:02:45 up 22 min,  2 users,  load average: 0.27, 0.27, 0.28
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    hp       tty7                      21:40   22:33   1:16   0.34s gnome-session -
    hp       pts/0    :0               22:02    0.00s  0.37s  0.01s w
    :0 就是用 xwindow 登陆的。

    查看系统中的进程 ps 常用选项
     a : 显示所有用户的进程
     u : 显示用户名和启动时间
     x : 显示没有控制终端的进程
     e : 显示所有进程,包括没有控制终端的进程
     l : 长格式显示
     w : 宽行显示,可以使用多个w进行加宽显示

    ps常用输出信息的含义
     TIME:进程自从启动以来启用CPU的总时间
     COMMAND/CMD:进程的命令名
     USER:用户名
     %CPU:占用CPU时间和总时间的百分比
     %MEM:占用内存与系统内存总量的百分比
    ps应用实例
     # ps 查看隶属于自己的进程
     # ps -u or -l 查看隶属于自己进程详细信息
     # ps -le or -aux 查看所有用户执行的进程的详细信息
     # ps -aux --sort pid 可按进程执行的时间、
        PID、UID等对进程进行排序
    ps应用实例
     # ps -aux | grep sam
     # ps -uU sam 查看系统中指定用户执行的进程
     # ps -le | grep init 查看指定进程信息
     # pstree
    kill – 杀死进程
     *1 为什么要杀死进程
     *2 该进程占用了过多的CPU时间
     *3 该进程缩住了一个终端,使其他前台进程无法运行
     *4 运行时间过长,但没有预期效果
     *5 产生了过多到屏幕或磁盘文件的输出
     *6 无法正常退出
    关闭进程:kill 进程号
     *1 kill -9 进程号(强行关闭)  kill -s 9 进程号 [前简化]  
     *2 kill -1 进程号(重启进程)
     *3 关闭图形程序:xkill
     *4 结束所有进程:killall
     *5 查找服务进程号:pgrep 服务名称
     *6 关闭进程:pkill 进程名称
     启动程序 stop , 也可以关闭
     /etc/rc.d/init.d/httpd restart
    --------------------------------
    # cat/proc/cpuinfo
    # pgrep httpd 检测但它所有进程的 pid
    # pkill httpd 也可以关闭,很方便
    nice和renice
     nice
      指定程序的运行优先级
      格式:nice -n command
      例如:nice -5 myprogram
     renice
      改变一个正在运行的进程的优先级
      格式:renice n pid
      例如:renice -5 777
     *优先级取值范围为(-20,19)*
    nohup
     使进程在用户退出登陆后仍旧继续执行,nohup命令将执行后的数据信息和
     错误信息默认储存到文件nohup.out中
     格式: nohup program &
    进程的挂起和恢复
     进程的中止(挂起)和终止
     挂起(Ctrl+Z)  [类似差不多暂停]
     终止(Ctrl+C)
     进程的恢复
     恢复到前台继续运行(fg)
     恢复到后台继续运行(bg)
     查看被挂起 /后台的进程(jobs)

    top 
     作用:进程状态显示和进程控制,每5秒钟自动刷新一次(动态显示)
     常用选项:
      d : 指定刷新的时间间隔
      c : 显示整个命令行而不仅仅显示命令名
     top常用命令:
      u : 查看指定用户的进程
      k : 终止执行中的进程
      h or ?:获得帮助
      r : 重新设置进程优先级
      s : 改变刷新的时间间隔
      W : 将当前设置写入~/.toprc文件中

    计划任务
     #1 为什么要设置计划任务
     #2 计划任务的命令 {
        *1 at 安排作业在某一时刻执行一次
        *2 batch 安排作业在系统负载不重时执行一次
        *3 cron 安排周期性运行的作业
     }
    at命令的功能和格式
      功能:安排一个或多个命令在指定的时间运行一次
       at的命令格式及参数
         at [-f 文件名] 时间
         at -d or atrm  删除队列中的任务
         at -l or atq   查看队列中的任务
    服务器一般 02:00 ~ 04:00 不那么繁忙!
    进程处理方式
     standalone 独立运行
     xinetd 进程托管
     atd、crond 计划任务
  • 相关阅读:
    BootStrap 模态框禁用空白处点击关闭
    【云计算】使用nsenter进入Docker容器进行调试
    【架构】Nginx如何设置X-Request-ID请求头,记录请求时间:毫秒?
    【架构】微服务系列文章
    【云计算】OpenStack项目全面介绍
    【云计算】CloudFoundry参考资料
    【云计算】OpenShift容器服务参考
    【Web】Django OAuth invalid_grant error
    【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
    【云计算】OpenStack Horizon DashBoard定制化,完整实现前后台交互
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787048.html
Copyright © 2011-2022 走看看