Linux进程管理 详细介绍

来源:互联网 发布:淘宝全球购要身份证 编辑:程序博客网 时间:2024/05/22 10:46
  1. :Linux进程管理  
  2.         A:进程的概念  
  3.             -->进程和程序的区别:  
  4.                 1:进程是静态的概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,  
  5.                    它是动态概念,有一定的生命期,是动态生成和消亡的。  
  6.                 2:程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程  
  7.                    在活动中有可以顺序地执行若干个程序  
  8.             -->父进程与子进程:  
  9.                 1:子进程是由一个进程所产生的进程,产生这个进程的程序称为父进程。  
  10.                 2:在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程  
  11.                   的数据和堆栈以及父进程的进程环境  
  12.                 3:父进程终止子进程也终止  
  13.                   
  14.             -->前台进程和后台进程  
  15.                 1前台进程:在shell提示出打入命令后,创建一个子进程,运行命令,shell等待命令退出,  
  16.                     能后返回到对用户给出提示符。这个命令与shell异步运行,即在前台运行,用户在  
  17.                     它完成之前不能执行另一个命令。  
  18.                     如:find / -name init   这个命令要等很久才能找到,但没找到之前只能等待。  
  19.                 2后台进程:在shell提示出打入命令,若后随一个&,shell创建的子进程运行此命令,但不等待  
  20.                     命令退出,而直接返回到对用户给出提示。这条命令与shell同步运行,即在后台运行。后台  
  21.                     进程必须是非交互式的(如:ping 192.168.1.12 &,这是交互式的)  
  22.                     如:find / -name init > /test/init.find &    会创建个子进程运行该命令,不用等待,可以立马做别的操作  
  23.             -->进程状态:  
  24.                 1 就绪:进程已经分配到资源,但因为其他进程正占用CPU,所以暂时不能运行要等待分配CPU的状态  
  25.                 2 等待:因等待某种时间而暂时不能运行的状态(如:暂停进程)  
  26.                 3 运行:进程分配到CPU,正在处理器上运行  
  27.                   
  28.             -->查看用户信息W  
  29.                 w 显示信息的含义:  
  30.                     JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里  
  31.                     PCPU:cpu执行程序耗费的时间  
  32.                     WHAT:用户正在执行的操作  
  33.                     load average:分别显示系统在过去1、5、15分钟内的平均负载程度,(平均负载值在0.8以下,为较轻负载)  
  34.                     FROM:显示用户从何处登录系统,":0"的显示代表该用户是从X Window下,打开文本模式窗口登录的  
  35.                     IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置  
  36.                 查看个别用户信息:w 用户名                                    
  37.               
  38.               
  39.         B:进程管理命令  
  40.             -->查看系统中的进程ps:  
  41.                 常用选项  
  42.                     a: 显示所有用户的进程  
  43.                     u: 显示用户名和启动时间  
  44.                     x: 显示没有控制终端的进程  
  45.                     e: 显示所有进程,包括没有控制终端的进程  
  46.                     l: 长格式显示  
  47.                     w: 宽行显示,可以使用多个w进行加宽显示  
  48.                       
  49.                 ps应用实例:  
  50.                     #ps 查看隶属于自己的进程  
  51.                     #ps -u or -l  查看隶属于自己进程详细信息  
  52.                     #ps -le or -aux  查看所有用户执行的进程的详细信息  
  53.                     #ps -aux --sort pid 可按进程执行的之间PID、UID等对进程进行排序  
  54.                     列出的进程信息含义:  
  55.                         PID:进程号  
  56.                         PPID:父进程的进程号  
  57.                         TTY:进程启动的终端  
  58.                         STAT:进程当前状态  
  59.                             S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止  
  60.                         NI:进程优先级  
  61.                         TIME:进程自从开启以来启用CPU的总时间  
  62.                         COMMAND/CMD:进程的命令名  
  63.                         USER:用户名  
  64.                         %CPU:占用CPU时间和总时间的百分比  
  65.                         %MEM:占用内存与系统内存总量的百分比  
  66.                     ps应用实例:  
  67.                         查看系统中指定用户执行的进程    
  68.                         #ps -aux | grep leyangjun  
  69.                         #ps -uU leyangjun   
  70.   
  71.                         查看进程信息  
  72.                         #ps -le |grep httpd       
  73.                         /etc/rc.d/init.d/httpd status  也可以查看进程是否启动  
  74.                           
  75.                         查看系统中所有树状结构的信息  
  76.                         pstree | more  
  77.               
  78.             --> kill 杀死进程  
  79.                 为什么要杀死进程:  
  80.                     1:该进程占用了过多的CPU时间  
  81.                     2:该进程锁住了一个终端,是其他前台后台的进程无法运行  
  82.                     3:运行时间过长,但没有预期效果  
  83.                     4:产生了过多到屏幕或磁盘文件的输出  
  84.                     5:无法正常退出  
  85.                 用法:  
  86.                     关闭进程:kill 进程号  
  87.                     kill -9 进程号(强行关闭)  
  88.                     kill -1 进程号(重启进程)数字1  
  89.                     xkill:关闭图形程序(图形界面之类的)  
  90.                     killall:结束所有进程  
  91.                     pgrep 服务名称 :查找服务进程号(pgrep httpd)  
  92.                     pkill 进程名称 :关闭进程(这个不需要进程号,服务名就可以杀死)  
  93.                   
  94.                 kill 3576  
  95.                   
  96.             -->nice和renice  
  97.                 nice:  
  98.                     指定程序的运行优先级  
  99.                     格式:nice -n command  
  100.                     例如:nice -5 myprogram  
  101.                 renice:  
  102.                     改变一个正在运行的进程的优先级  
  103.                     格式:renice n pid  
  104.                     例如:renice -5 777  、renice --5 777 (负5)  
  105.                     *优先级取值范围为(-20,19),值越小优先级就越大  
  106.                       
  107.             -->用户退出后希望进程进一步执行用:nohup  
  108.               
  109.             -->进程的挂起和恢复  
  110.                 1进程的中止(挂起)和终止:  
  111.                     挂起:Ctrl+Z  (就是类似暂停)  
  112.                     终止:Ctrl+C (终止当前的运行命令)  
  113.                 2查看被挂起的进程 : jobs (查看所有被暂停的服务 )  
  114.                                       
  115.                 3进程的恢复:  
  116.                     恢复到前台继续运行:fg  (fg 1  --1表示暂停的编码)  
  117.                     恢复到后台继续运行:bg  
  118.               
  119.             -->top  
  120.                 作用:进程状态显示和进程控制,没5秒钟自动刷新一次(动态显示)  
  121.                 常用选项:  
  122.                     d: 指定刷新的时间间隔  
  123.                     c:显示整个命令行而不仅仅显示命令名  
  124.                     u:查看指定用户的进程  
  125.                     k:终止执行中的进程  
  126.                     h or ? :获得帮助  
  127.                     r:重新设置进程优先级  
  128.                     s:改变刷新的时间间隔  
  129.                     W:将当前设置写入~/.toprc文件中  
  130.                       
  131.                       
  132.         C:计划任务  
  133.             为什么要设置计划任务:减少一些人为的工作量  
  134.             计划任务的命令  
  135.                 at   :安排作业在某一时刻执行一次  
  136.                 batch :安排作业在系统负载不重时执行一次  
  137.                 cron  :安排周期性运行的作业  
  138.                   
  139.             一:at命令的功能和格式  
  140.                 功能:安排一个或多个命令在指定的时间运行一次  
  141.                 at的命令格式及参数:  
  142.                     at [-f 文件名]时间  
  143.                     at -d or atrm 删除队列中的任务(at -d 4  ---4表示任务的序号)  
  144.                     at -l or atq  查看队列中的任务    
  145.                       
  146.                     at命令指定时间的方式:  
  147.                         1:绝对计时方法  
  148.                             midnight  noon  teatime  
  149.                             hh:mm[today]  
  150.                             hh:mm tomorrow  
  151.                             hh:mm 星期  
  152.                             hh:mm MM/DD/YY    推荐这个格式  
  153.                         2:相对计时方法(自己测试的时候可以用)  
  154.                             now + n minutes  
  155.                             now + n hours  
  156.                             now + n days  
  157.                               
  158.                     如:指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2015年4月12日)  
  159.                         命令格式如下:  
  160.                             at 5:30pm  
  161.                             at 17:30  
  162.                             at 17:30 today  
  163.                             at now + 3 hours  
  164.                             at now + 180 minutes  
  165.                             at 17:30 15.4.12  
  166.                             at 17:30 4/12/15  
  167.                               
  168.                     实际操作:(比如现在要广播某个文件的内容)  
  169.                         先检查下atd进程是否启动:ps -le | grep atd  
  170.                         如果没有启动手动启动:/etc/rc.d/init.d/atd start  
  171.                         wall:广播之前要找到wall的绝对路径,which wall ---查看路径  
  172.                         1:at now +5 minutes    回车  
  173.                         2:at> /usr/bin/wall < /etc/motd    (回车可以写n个命令,注意命令要写据对路径)  
  174.                         3:按ctrl+d    保存  
  175.                           
  176.                         如果命令很多,可以吧命令写入脚本中  
  177.                         用at写的计划任务临时文件都保存在:/var/spool/at/   目录下  
  178.                       
  179.                     at配置文件  
  180.                         作用:限制那些用户可以使用at命令  
  181.                         /etc/at.allow  
  182.                         /etc/at.deny  
  183.                         如果/etc/at.allow文件存在,那么只能有列再次文件中的用户才可以使用at命令;  
  184.                       若/etc/at.allow文件不存在,则检查/etc/at.deny文件是否存在。若/etc/at.deny存在,  
  185.                       则在此文件中列出的用户都不能使用at命令。如果两个文件都不存在,则只有超级用户可以使用  
  186.                       at命令。如果两个文件都存在而且均为空,则多有的用户都可以使用at命令。  
  187.                         
  188.             二:batch命令  
  189.                 作用:安排一个或多个命令在系统负载较轻时运行一次(一般情况下负载较轻指平均负载降到0.8以下)  
  190.                 使用方法同at一样,不同的是batch会检测下系统的负载状态。  
  191.               
  192.             三:crontab命令格式--周期性计划任务(重点)  
  193.                 作用:用于生产cron进程所需要的crontab文件  
  194.                 crontab的命令格式:  
  195.                     crontab {-l|-r|-e}  
  196.                     -l  显示当前的crontab(查看定时文件)  
  197.                     -r  删除当前的crontab(其实可以进入编辑吧对应要删除的去掉就行)  
  198.                     -e  使用编辑器编辑当前的crontab文件  
  199.                 crontab文件格式  
  200.                     minute hour day-of-month month -of-year day-of-week commands  
  201.                     其中:  
  202.                     minute  : 一小时的哪一分钟【0-59】  
  203.                     hour    : 一天中的哪个小时【0-23】  
  204.                     day-of-month  :一月中的那一天【1-31】  
  205.                     month-of-year :一年中的哪一月【1-12】  
  206.                     day-of-week   :一周中的那一天【0-6】  
  207.                     commands  : 执行命令/脚本  
  208.                     把知道的具体的时间添上,不知道的都添上*  
  209.                     如:分钟  小时  天 月  星期  命令/脚本  
  210.                          0     4    *   *   *     etc/leyangjun.sh   明天凌晨4天执行脚本  
  211.                          0     18   *   *   2,5   xxxx        每个星期二和星期五的18点执行该命令  
  212.                          0     18   *  1-3  2,5   xxxx        1-3月之间的星期二星期五的18点执行命令  
  213.                          30    17   *   *   1-5   /usr/bin/wall < /etc/issue   每周一到周五17:30发个广播  
  214.                          45    17   *   *   1-5   /sbin/shutdowm -h now   周一到周五17:45关机  
  215.                         复杂的:  
  216.                         (3-6,9-12月,每周一到周五12点到14点,每隔2分钟执行备份,/etc目录备份到 /backup/etc.2015412,备份失败的话保存失败文件)  
  217.                         */2   12-14 *  3-6,9-12 1-5  /bin/cp -r /etc /backup/etc.2015412 > /backup/etc.bak.err    
  218.                   
  219.                 书写注意事项:  
  220.                     1:这些项都不能为空,必须填入  
  221.                     2:如果用户不需要指定其中的几项,那么可以使用统配符*表示任何时间  
  222.                     3:每个时间字段都可以指定多个值,他们之间用逗号间隔  
  223.                     4:命令应该给出绝对路径  
  224.                     5:用户必须具有运行所对应的命令或程序的权限  
  225.                     6:执行crontab之前先看下crond进程是否启动  
  226.                         ps -le | grep crond  
  227.                         /etc/rc.d/init.d/crond start   手动启动  
  228.                   
  229.                     crontab文件建立好以后可以到 /var/spool/cron  目录确认:  
  230.                         ls /var/spool/cron         可以看到是以用户名来命名  
  231.                         cat /var/spool/cron/root   就可以看到内容  
  232.                         ---任务执行完后文件会消失!  
  233.                           
  234.                   
  235.                     cron配置文件  
  236.                         作用:限制那些用户可以使用crontab命令  
  237.                         /etc/cton.allow  
  238.                         /etc/cron.deny  
  239.               
  240.             --->进程管理方式     
  241.                 standalone 独立运行  
  242.                     特点:就是系统进程起来后一直会在系统驻留,占用系统cpu和内存资源,在等待监听客户端的请求  
  243.                           一旦客服有请求立马给出应答。  
  244.                 xinetd     进程托管  
  245.                 atd、crond 计划任务  
  246.                       
原创粉丝点击