美文网首页
Linux进程管理

Linux进程管理

作者: BlueSkyBlue | 来源:发表于2021-01-06 16:48 被阅读0次

    在Linux中每个执行的程序(代码)都被称为是一个进程。每个进程都分配一个ID号。

    每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。

    每个进程都可能以两种方式存在:前台和后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

    一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

    显示系统执行的进程

    ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。

    ps显示的信息选项:

    字段 说明
    PID 进程识别号
    TTY 终端机号
    TIME 此进程所消CPU时间
    CMD 正在执行的命令或进程名
    #显示当前终端的所有进程信息
    ps -a
    #以用户的格式显示进程信息
    ps -u
    #显示后台进程运行的参数
    ps -x
    

    第一列(USER)代表进程属于的用户。
    第二列(PID)代表进程号/进程ID。
    第三列(%CPU)表示进程占用的CPU的情况。
    第四列(%MEM)代表进程占用内存的情况。
    第五列(VSZ)代表进程占用的虚拟内存的情况。
    第六列(RSS)代表进程占用的物理内存的情况。
    第七列(TTY)代表进程使用的终端。
    第八列(STAT)代表当前进程运行的状态。s表示休眠,r表示运行,N表示进程拥有比普通优先级更低的优先级,D表示短期等待,Z表示僵死进程,T表示被跟踪或者被停止。
    第九列(START)代表进程的启动时间。
    第十列(TIME)代表进程占用CPU的总计时间。
    第十一列(COMMAND)代表进程在执行时的命令行,如果过长会被截断显示。

    ps查看进程的父进程

    ps -ef | more
    

    指令说明:以全格式显示当前所有进程以及父进程。
    -e代表显示所有进程,-f代表全格式。


    UID:用户ID。
    PID:进程ID。
    PPID:父进程ID。
    C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小表明进程是I/O密集型运算,执行优先级会提高。
    TTY:完整的终端名称。
    TIME:CPU时间。
    CMD:启动进程所用的命令和参数。

    终止进程

    若是某个进程执行一半需要停止时,或者是已经消耗了很大的系统资源时,此时可以考虑体制该进程。使用kill命令来完成此项任务。
    基本语法:

    kill [选项] 进程号 (功能描述:通过进程号杀死进程)
    killall 进程名称 (功能描述:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

    常用选项:
    -9:表示强迫进程立即停止。
    应用实例:

    1. 踢掉某个非法用户
    #找到对应的进程号
    ps -aux | grep sshd
    #使用kill指令,踢走该用户
    kill 4041
    

    终止远程登录服务sshd,在适当的时候再次重启sshd服务。



    终止多个gedit编辑器

    killall gedit
    

    强制杀掉一个终端


    查看进程树pstree

    基本语法:

    pstree [选项],可以更加直观的查看进程信息。
    常用选项:
    -p:显示进程的PID。
    -u:显示进程的所属用户。

    服务(service)管理

    服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysql,ssd防火墙等,因此我们又称为守护进程,是Linux中的重点。


    service管理指令:

    service 服务名 [start|stop|restart|reload|status]

    在CentOS7.0之后不再使用service了,而是systemctl。

    使用案例:
    查看防火墙的状态

    service iptables status
    

    关闭防火墙

    service iptables stop
    

    启动防火墙

    service iptables start
    

    关闭或启用防火墙后,立即生效。可以使用telnet指令进行测试。这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。

    查看服务名:
    方法一:使用setup -> 系统服务,就可以看到

    系统服务
    方法二:/etc/init.d/服务名称。用于列出系统有哪些服务。

    运行级别:

    查看或修改默认的运行级别:

    vi /etc/inittab
    

    Linux系统有7种运行级别(runlevel),常用的级别是3和5。

    • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
    • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录。
    • 运行级别2:多用户状态(没有NFS),不支持网络。
    • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令模式。
    • 运行级别4:系统未使用,保留。
    • 运行级别5:X11控制台,登录后进入图形GUI模式。
    • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

    开机流程说明:

    chkconfig指令:
    通过chkconfig指令可以给每个服务的各个运行级别设置自启动/关闭。

    • 基本语法:

    查看服务
    chkconfig --list | grep 服务名
    chkconfig 服务名 --list
    chkconfig --level 5 服务名 on/off

    使用实例

    #将sshd服务在运行级别5下设置为不自动启动。
    chkconfig --level 5 iptables off
    #在所有运行级别下关闭防火墙。
    chkconfig iptables off
    #在所有运行级别下开启防火墙。
    chkconfig iptables on
    

    chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效。

    相关文章

      网友评论

          本文标题:Linux进程管理

          本文链接:https://www.haomeiwen.com/subject/ltqroktx.html