Linux进程管理 详细介绍

时间:2022-04-12 04:31:09
  • :Linux进程管理  
  •         A:进程的概念  
  •             -->进程和程序的区别:  
  •                 1:进程是静态的概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,  
  •                    它是动态概念,有一定的生命期,是动态生成和消亡的。  
  •                 2:程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程  
  •                    在活动中有可以顺序地执行若干个程序  
  •             -->父进程与子进程:  
  •                 1:子进程是由一个进程所产生的进程,产生这个进程的程序称为父进程。  
  •                 2:在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程  
  •                   的数据和堆栈以及父进程的进程环境  
  •                 3:父进程终止子进程也终止  
  •                   
  •             -->前台进程和后台进程  
  •                 1前台进程:在shell提示出打入命令后,创建一个子进程,运行命令,shell等待命令退出,  
  •                     能后返回到对用户给出提示符。这个命令与shell异步运行,即在前台运行,用户在  
  •                     它完成之前不能执行另一个命令。  
  •                     如:find / -name init   这个命令要等很久才能找到,但没找到之前只能等待。  
  •                 2后台进程:在shell提示出打入命令,若后随一个&,shell创建的子进程运行此命令,但不等待  
  •                     命令退出,而直接返回到对用户给出提示。这条命令与shell同步运行,即在后台运行。后台  
  •                     进程必须是非交互式的(如:ping 192.168.1.12 &,这是交互式的)  
  •                     如:find / -name init > /test/init.find &    会创建个子进程运行该命令,不用等待,可以立马做别的操作  
  •             -->进程状态:  
  •                 1 就绪:进程已经分配到资源,但因为其他进程正占用CPU,所以暂时不能运行要等待分配CPU的状态  
  •                 2 等待:因等待某种时间而暂时不能运行的状态(如:暂停进程)  
  •                 3 运行:进程分配到CPU,正在处理器上运行  
  •                   
  •             -->查看用户信息W  
  •                 w 显示信息的含义:  
  •                     JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里  
  •                     PCPU:cpu执行程序耗费的时间  
  •                     WHAT:用户正在执行的操作  
  •                     load average:分别显示系统在过去1、5、15分钟内的平均负载程度,(平均负载值在0.8以下,为较轻负载)  
  •                     FROM:显示用户从何处登录系统,":0"的显示代表该用户是从X Window下,打开文本模式窗口登录的  
  •                     IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置  
  •                 查看个别用户信息:w 用户名                                    
  •               
  •               
  •         B:进程管理命令  
  •             -->查看系统中的进程ps:  
  •                 常用选项  
  •                     a: 显示所有用户的进程  
  •                     u: 显示用户名和启动时间  
  •                     x: 显示没有控制终端的进程  
  •                     e: 显示所有进程,包括没有控制终端的进程  
  •                     l: 长格式显示  
  •                     w: 宽行显示,可以使用多个w进行加宽显示  
  •                       
  •                 ps应用实例:  
  •                     #ps 查看隶属于自己的进程  
  •                     #ps -u or -l  查看隶属于自己进程详细信息  
  •                     #ps -le or -aux  查看所有用户执行的进程的详细信息  
  •                     #ps -aux --sort pid 可按进程执行的之间PID、UID等对进程进行排序  
  •                     列出的进程信息含义:  
  •                         PID:进程号  
  •                         PPID:父进程的进程号  
  •                         TTY:进程启动的终端  
  •                         STAT:进程当前状态  
  •                             S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止  
  •                         NI:进程优先级  
  •                         TIME:进程自从开启以来启用CPU的总时间  
  •                         COMMAND/CMD:进程的命令名  
  •                         USER:用户名  
  •                         %CPU:占用CPU时间和总时间的百分比  
  •                         %MEM:占用内存与系统内存总量的百分比  
  •                     ps应用实例:  
  •                         查看系统中指定用户执行的进程    
  •                         #ps -aux | grep leyangjun  
  •                         #ps -uU leyangjun   
  •   
  •                         查看进程信息  
  •                         #ps -le |grep httpd       
  •                         /etc/rc.d/init.d/httpd status  也可以查看进程是否启动  
  •                           
  •                         查看系统中所有树状结构的信息  
  •                         pstree | more  
  •               
  •             --> kill 杀死进程  
  •                 为什么要杀死进程:  
  •                     1:该进程占用了过多的CPU时间  
  •                     2:该进程锁住了一个终端,是其他前台后台的进程无法运行  
  •                     3:运行时间过长,但没有预期效果  
  •                     4:产生了过多到屏幕或磁盘文件的输出  
  •                     5:无法正常退出  
  •                 用法:  
  •                     关闭进程:kill 进程号  
  •                     kill -9 进程号(强行关闭)  
  •                     kill -1 进程号(重启进程)数字1  
  •                     xkill:关闭图形程序(图形界面之类的)  
  •                     killall:结束所有进程  
  •                     pgrep 服务名称 :查找服务进程号(pgrep httpd)  
  •                     pkill 进程名称 :关闭进程(这个不需要进程号,服务名就可以杀死)  
  •                   
  •                 kill 3576  
  •                   
  •             -->nice和renice  
  •                 nice:  
  •                     指定程序的运行优先级  
  •                     格式:nice -n command  
  •                     例如:nice -5 myprogram  
  •                 renice:  
  •                     改变一个正在运行的进程的优先级  
  •                     格式:renice n pid  
  •                     例如:renice -5 777  、renice --5 777 (负5)  
  •                     *优先级取值范围为(-20,19),值越小优先级就越大  
  •                       
  •             -->用户退出后希望进程进一步执行用:nohup  
  •               
  •             -->进程的挂起和恢复  
  •                 1进程的中止(挂起)和终止:  
  •                     挂起:Ctrl+Z  (就是类似暂停)  
  •                     终止:Ctrl+C (终止当前的运行命令)  
  •                 2查看被挂起的进程 : jobs (查看所有被暂停的服务 )  
  •                                       
  •                 3进程的恢复:  
  •                     恢复到前台继续运行:fg  (fg 1  --1表示暂停的编码)  
  •                     恢复到后台继续运行:bg  
  •               
  •             -->top  
  •                 作用:进程状态显示和进程控制,没5秒钟自动刷新一次(动态显示)  
  •                 常用选项:  
  •                     d: 指定刷新的时间间隔  
  •                     c:显示整个命令行而不仅仅显示命令名  
  •                     u:查看指定用户的进程  
  •                     k:终止执行中的进程  
  •                     h or ? :获得帮助  
  •                     r:重新设置进程优先级  
  •                     s:改变刷新的时间间隔  
  •                     W:将当前设置写入~/.toprc文件中  
  •                       
  •                       
  •         C:计划任务  
  •             为什么要设置计划任务:减少一些人为的工作量  
  •             计划任务的命令  
  •                 at   :安排作业在某一时刻执行一次  
  •                 batch :安排作业在系统负载不重时执行一次  
  •                 cron  :安排周期性运行的作业  
  •                   
  •             一:at命令的功能和格式  
  •                 功能:安排一个或多个命令在指定的时间运行一次  
  •                 at的命令格式及参数:  
  •                     at [-f 文件名]时间  
  •                     at -d or atrm 删除队列中的任务(at -d 4  ---4表示任务的序号)  
  •                     at -l or atq  查看队列中的任务    
  •                       
  •                     at命令指定时间的方式:  
  •                         1:绝对计时方法  
  •                             midnight  noon  teatime  
  •                             hh:mm[today]  
  •                             hh:mm tomorrow  
  •                             hh:mm 星期  
  •                             hh:mm MM/DD/YY    推荐这个格式  
  •                         2:相对计时方法(自己测试的时候可以用)  
  •                             now + n minutes  
  •                             now + n hours  
  •                             now + n days  
  •                               
  •                     如:指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2015年4月12日)  
  •                         命令格式如下:  
  •                             at 5:30pm  
  •                             at 17:30  
  •                             at 17:30 today  
  •                             at now + 3 hours  
  •                             at now + 180 minutes  
  •                             at 17:30 15.4.12  
  •                             at 17:30 4/12/15  
  •                               
  •                     实际操作:(比如现在要广播某个文件的内容)  
  •                         先检查下atd进程是否启动:ps -le | grep atd  
  •                         如果没有启动手动启动:/etc/rc.d/init.d/atd start  
  •                         wall:广播之前要找到wall的绝对路径,which wall ---查看路径  
  •                         1:at now +5 minutes    回车  
  •                         2:at> /usr/bin/wall < /etc/motd    (回车可以写n个命令,注意命令要写据对路径)  
  •                         3:按ctrl+d    保存  
  •                           
  •                         如果命令很多,可以吧命令写入脚本中  
  •                         用at写的计划任务临时文件都保存在:/var/spool/at/   目录下  
  •                       
  •                     at配置文件  
  •                         作用:限制那些用户可以使用at命令  
  •                         /etc/at.allow  
  •                         /etc/at.deny  
  •                         如果/etc/at.allow文件存在,那么只能有列再次文件中的用户才可以使用at命令;  
  •                       若/etc/at.allow文件不存在,则检查/etc/at.deny文件是否存在。若/etc/at.deny存在,  
  •                       则在此文件中列出的用户都不能使用at命令。如果两个文件都不存在,则只有超级用户可以使用  
  •                       at命令。如果两个文件都存在而且均为空,则多有的用户都可以使用at命令。  
  •                         
  •             二:batch命令  
  •                 作用:安排一个或多个命令在系统负载较轻时运行一次(一般情况下负载较轻指平均负载降到0.8以下)  
  •                 使用方法同at一样,不同的是batch会检测下系统的负载状态。  
  •               
  •             三:crontab命令格式--周期性计划任务(重点)  
  •                 作用:用于生产cron进程所需要的crontab文件  
  •                 crontab的命令格式:  
  •                     crontab {-l|-r|-e}  
  •                     -l  显示当前的crontab(查看定时文件)  
  •                     -r  删除当前的crontab(其实可以进入编辑吧对应要删除的去掉就行)  
  •                     -e  使用编辑器编辑当前的crontab文件  
  •                 crontab文件格式  
  •                     minute hour day-of-month month -of-year day-of-week commands  
  •                     其中:  
  •                     minute  : 一小时的哪一分钟【0-59】  
  •                     hour    : 一天中的哪个小时【0-23】  
  •                     day-of-month  :一月中的那一天【1-31】  
  •                     month-of-year :一年中的哪一月【1-12】  
  •                     day-of-week   :一周中的那一天【0-6】  
  •                     commands  : 执行命令/脚本  
  •                     把知道的具体的时间添上,不知道的都添上*  
  •                     如:分钟  小时  天 月  星期  命令/脚本  
  •                          0     4    *   *   *     etc/leyangjun.sh   明天凌晨4天执行脚本  
  •                          0     18   *   *   2,5   xxxx        每个星期二和星期五的18点执行该命令  
  •                          0     18   *  1-3  2,5   xxxx        1-3月之间的星期二星期五的18点执行命令  
  •                          30    17   *   *   1-5   /usr/bin/wall < /etc/issue   每周一到周五17:30发个广播  
  •                          45    17   *   *   1-5   /sbin/shutdowm -h now   周一到周五17:45关机  
  •                         复杂的:  
  •                         (3-6,9-12月,每周一到周五12点到14点,每隔2分钟执行备份,/etc目录备份到 /backup/etc.2015412,备份失败的话保存失败文件)  
  •                         */2   12-14 *  3-6,9-12 1-5  /bin/cp -r /etc /backup/etc.2015412 > /backup/etc.bak.err    
  •                   
  •                 书写注意事项:  
  •                     1:这些项都不能为空,必须填入  
  •                     2:如果用户不需要指定其中的几项,那么可以使用统配符*表示任何时间  
  •                     3:每个时间字段都可以指定多个值,他们之间用逗号间隔  
  •                     4:命令应该给出绝对路径  
  •                     5:用户必须具有运行所对应的命令或程序的权限  
  •                     6:执行crontab之前先看下crond进程是否启动  
  •                         ps -le | grep crond  
  •                         /etc/rc.d/init.d/crond start   手动启动  
  •                   
  •                     crontab文件建立好以后可以到 /var/spool/cron  目录确认:  
  •                         ls /var/spool/cron         可以看到是以用户名来命名  
  •                         cat /var/spool/cron/root   就可以看到内容  
  •                         ---任务执行完后文件会消失!  
  •                           
  •                   
  •                     cron配置文件  
  •                         作用:限制那些用户可以使用crontab命令  
  •                         /etc/cton.allow  
  •                         /etc/cron.deny  
  •               
  •             --->进程管理方式     
  •                 standalone 独立运行  
  •                     特点:就是系统进程起来后一直会在系统驻留,占用系统cpu和内存资源,在等待监听客户端的请求  
  •                           一旦客服有请求立马给出应答。  
  •                 xinetd     进程托管  
  •                 atd、crond 计划任务  
  •