zoukankan      html  css  js  c++  java
  • linux进程管理

     进程:正在运行当中的程序,占用一定系统资源

    如一些命令:ls也是一个程序,执行了也会产生一个进程;apache是个服务,也是个进程,只不过apache常驻在内存中,等着不同的用户来访问。通过浏览器来访问某个网页,就会在对方的服务器最少产生一个进程。

    在windows中管理进程可直接通过任务管理器来完成

    进程管理的作用

    1、判断服务器的健康状态(关键作用),若是内存、CPU占用率高,通过人为介入降低其占比

    2、查看系统所有的进程

    3、杀死进程(不允许把杀死进程当成结束进程的正确使用方式)(进程管理中最不重要的操作)

         若某个进程不能正确关闭,要先检查该进程是不是合理进程,若是合理进程,则增加资源;若是非法进程比如非法病毒,也不能直接终止,要先把它彻底清除掉再终止进程,否则当重启之后非法进程还是会产生。

    ps进程的查看

     ps -aux(多了一个“-”)也能查看系统所有的进程,但是在结果首页有个warning,提示错误的语法,但是结果不影响

    ps aux和-le这两个命令的输出内容不一样


    pid=1 :init进程,系统启动的第一个用户级进程,是所有其它进程的父进程,引导用户空间服务。
    pid=2 :kthreadd:用于内核线程管理。
    pid=3 :migration,用于进程在不同的CPU间迁移。
    pid=4 :ksoftirqd,内核里的软中断守护线程,用于在系统空闲时定时处理软中断事务。
    p
    id=5 :watchdog,此进程是看门狗进程,用于监听内核异常。当系统出现宕机,可以利用watchdog进程将宕机时的一些堆栈信息写入指定文件,用于事后分析宕机的原因。

    TTY为?表示不是用户通过终端操作的,是系统进程

    有些进程是服务、内核产生的

    执行pstree命令其实是在linux的shell中通过远程控制进程调用远程服务产生的

    在上图的进程树中显示处理目前操作pstree的远程服务外还有一个远程服务,但是在这个远程服务下没有任何进程,原因是上个登录远程服务的用户没有正确登出,在linux中有256个远程终端服务,所以这里不会影响其他用户登录,但是windows的远程终端服务比linux少很多,所以要是只有一个的话,那么用户必须正确登出服务,要不然其他用户无法登录远程终端,只能重启服务

    top查看系统健康状态

    直接执行top命令,其结果显示界面每三秒刷新一次,windows任务管理器每一秒钟刷新一次。

     上图中绿色标记那行为top的交互命令模式

     上面五行是查看系统健康状况的关键

    up 1 day 是服务器运行的时间。服务器的好坏不是用服务器运行了多久来判定的,而在于无故障率。服务器运行的时间太久的话缓存等都不能清楚,到最后会吃不消。对于高负载高压力服务器,比如游戏服务器,建议一周重启一次服务器,而低负载的服务器建议一个月重启一次服务器。

    图中的平均负载应该跟cpu的核数有关,若为双核,则不应该大于2,若为四核,不应该大于4(经验值),如果数值大于4,但是各项指标还可以接受,那么这个值可以接受,再大就要处理了。

    把父进程子进程都关掉,这个进程也随他的子进程关掉。把游戏显卡驱动卸载掉,游戏程序就不能存在。要是把下层进程结束掉,他的上层进程也终止,但是有时候结束掉下层进程后,上层进程卡在了系统上,这个进程既没有终止也没有正常运行,这个进程就叫做僵尸(将死)进程。一般在系统中不会存在僵尸进程。若是发现僵尸进程,先别杀掉,有可能是正在结束的进程被你截获,过一会儿就结束了。要是发现在系统中长期发现僵尸进程,那么就要结束掉这个进程。

    一般来说,系统空闲CPU占比不能低于20%,一旦占用率高达80%,系统就很卡了。

     buffer缓冲加速数据写入

    cache缓存加速数据读取

    以上最关注的点有:系统前1分钟、5分钟、15分钟的平均负载;CPUfree;MEMfree;SWAPfree

    一般使用ps查看所有进程,pstree查看进程树,top查看系统健康状态

    杀死进程

    kill杀死单个进程, pkill/killall支持杀死一类进程

    kill  -l 可查看可用的进程信号 

    1:平滑重启,重新加载一遍,但是不会把已经登录的用户中止掉

    apache服务会产生不止一个进程,有的一个用户产生一个进程,要是杀掉httpd的所有进程,使用kill一个一个地去杀是不切实际的,要用killall或者pkill杀掉所有httpd的进程。

     

    按照终端号提出用户:w命令那么可以查看当前登录的用户,然后根据相应用户执行的命令可以查看自己是哪一个终端登录的,如上图,本人执行w命令,那么对应的就是终端pts/0,那么可以提出别的用户,pkill -9 -t tty1

    只有超级用户可以提出其他用户,普通用户不可以。若两个都是超级用户,那么先下手为强。

    修改进程优先级

    四核八线程的性能不能跟8个单核的性能相比,但是肯定比7个强。

    最终生效的是priority,但是用户不能修改priority,只能修改Nice,但系统最终生效是priority+Nice

    虽然修改了优先级,但是用户认为是感受不到的,所以修改优先级对用户来说没有太大的意义,除非在做嵌入式开发等

  • 相关阅读:
    Quartz
    WebService
    JavaMail
    安装phpnow服务[Apache_pn]提示失败的解决方法
    idea安装激活
    csdn下载
    java解析json串常识
    Oracle错误——ORA-03113:通信通道的文件结尾
    SSM(Maven集成)
    SpringMVC的拦截器
  • 原文地址:https://www.cnblogs.com/WFM1997/p/10001775.html
Copyright © 2011-2022 走看看