linux进程管理
Posted 我将军
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,内核里的软中断守护线程,用于在系统空闲时定时处理软中断事务。
pid=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
虽然修改了优先级,但是用户认为是感受不到的,所以修改优先级对用户来说没有太大的意义,除非在做嵌入式开发等
以上是关于linux进程管理的主要内容,如果未能解决你的问题,请参考以下文章