• linux(centOS7)的基本操作(六) 进程管理


    进程的概念

    1. 在linux系统中,每一段执行的程序都称为一个进程,被分配一个进程编号(id)。

    2. 每个进程都对应一个父进程,一个父进程可以复制多个子进程。

    3. 一个进程可能以两种方式存在:前台和后台。前台是指用户在屏幕上可以进行操作的,后台是指屏幕上看不到的实际操作。

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

     

    进程操作命令

    1. 查看正在执行的所有进程

    ps [-aux] [| more]

    其中,-a表示显示当前所有进程,-u表示以用户格式显示进程,-x表示显示进程运行的参数。

    上述三个参数一般都是要使用的。如果想分页显示,后面加 | more。

    2. 根据命令查询特定的进程

    ps -aux | grep instruction [| more]

    其中,instruction为命令名称。例如,要查看正在执行的sshd进程,ps -aux | grep sshd。

    3. 查看进程及其父进程

    ps -ef [| more]

    该命令会以全格式显示当前所有进程,比上述命令多一行PPID,即父进程的id。

    例如,要查询sshd进程的父进程,ps -ef | grep sshd。

    4. 终止进程

    kill [-9] pid

    其中,pid为要终止的进程编号;-9表示强制终止,用于某些核心进程(例如终端bash)。

    5. 批量终止进程

    killall pname

    其中,pname为进程名称,支持通配符,这在系统因执行多个同类型进程变慢时很有用。

    6. 以树状结构显示当前进程

    pstree [-pu]

    其中,-p表示显示进程编号,-u表示显示进程所属的用户。如下图所示:

    7. 动态监控进程

    top [-i] [-d n] [-p pid]

    交互操作:P(按占用cpu比例排序)、M(按占用内存排序)、N(按进程编号排序)、u(只监控某个用户)、k(结束进程)、q(退出)。

    这个命令跟ps很相似,区别是可以定时(默认3秒)刷新,支持交互操作。其中,-i表示只显示正在运行的进程;-d用于指定刷新时间间隔(n秒);-p用于指定进程编号,只监控编号为pid的进程。

    进程操作示例

    1. 踢掉某个非法登录的用户

    (1)查询正在执行的sshd进程:ps -aux | grep sshd。

    (2)将正在登录的dubhlinn用户踢掉,即终止进程19477:kill 19477。

    (3)dubhlinn用户会被强制退出,并提示:Connection to xxx closed by remote host.

    2. 批量关闭已经打开的多个gedit编辑器

    killall gedit

    3. 强制关闭终端

    (1)查询已经打开的终端:ps -ef | grep bash

    (2)关闭用户dubhlinn的终端:kill 20642,发现没有反应,因为终端是重要进程,会绕开kill命令,必须强制关闭。

    kill -9 20642,终端被关闭。

     

    进程列表简介

    通过ps -aux命令可以以列表形式显示当前进程的详细信息,那么这些列代表什么呢?

    USER:进程所属的用户名;

    PID:进程编号

    %CPU:占用CPU的比例

    %MEM:占用内存的比例

    VSZ:占用虚拟内存的大小

    RSS:占用物理内存的大小

    TTY:终端名称

    STAT:进程状态,S为睡眠,R为正在执行,Z为僵死,D为短期等待,N表示优先级低于普通进程

    START:进程的启动时间

    TIME:进程使用CPU的总时间

    COMMAND:进程的命令名称和参数

    服务的概念

    linux系统的服务(service)本质是一种运行在后台的进程,监听某个端口,等待其他应用的请求。例如,sshd服务监听22端口,mysql服务监听3306端口,tomcat服务监听8080端口等。另一台电脑的终端可以通过22端口连接linux服务器的sshd服务,navicat可以3306端口连接服务器的mysql服务,浏览器可以通过8080端口连接服务器的tomcat服务。

    服务操作命令

    在CentOS7中,服务操作命令跟以往的版本有很大不同,用systemctl代替了原来的service。

    1. 查看一个服务的当前状态

    systemctl status name.service

    其中,name为服务名称。

    2. 开启/关闭/重新启动一个服务

    systemctl start name.service

    systemctl stop name.service

    systemctl restart name.service

    其中,name为服务名称。例如关闭sshd服务:systemctl stop sshd.service,这时用ssh命令登录系统会失败并提示connection refused。开启sshd服务:systemctl start sshd.service,这时又可以用ssh命令登录系统了。这些命令只是临时开启或关闭服务,系统重启后会失效,如果想设置某个服务开启总是启用/禁用,要用下面标题3中的命令。

    3. 设置一个服务开机启用/禁用

    systemctl enable name.service

    systemctl disable name.service

    其中,name为服务名称。

    4. 查看服务列表

    systemctl list-unit-files [| grep status/name]

    其中,status表示按状态筛选可以取enabled、disabled、static,表示只筛选这种状态的服务;name表示按名称筛选,支持模糊匹配。

    注意,这个命令查到的服务状态是指开机启用/禁用,而不是当前的状态,这时它与标题1中的systemctl status命令的区别。

    5. 查看现在开放的防火墙端口

    firewall-cmd --zone=public --list-ports

    6. 开放、关闭一个端口

    firewall-cmd --zone=public --add-port=port/tcp --permanent

    firewall-cmd --zone=public --remove-port=port/tcp --permanent

    其中,port为要开放或关闭的端口号,这两个操作要重启防火墙服务才能生效。

    服务操作示例

    以防火墙为例

    1. 查看防火墙的当前状态

    systemctl status firewalld.service

    可以看出,当前防火墙的状态为开启。

    2. 关闭防火墙

    systemctl stop firewalld.service

    这时如果再调用systemctl status firewalld.service查看防火墙的当前桩体,会发现变成关闭。

    3. 查询服务列表

    systemctl list-unit-files

    找到防火墙的部分:

    发现仍然是开机启用状态,因此调用systemctl stop命令指示临时关闭防火墙,重启系统后,防火墙仍然会默认启用。

    4. 设置防火墙为开机默认禁用

    systemctl disable firewalld.service

    再调用systemctl list-unit-files,找到防火墙的部分:

    5. 开放8080端口

    firewall-cmd --zone=public --add-port=8080/tcp --permanent

    systemctl restart firewalld.service

    先开放8080端口,再重启防火墙服务,即可生效。8080端口通常用于tomcat服务,开放后外部可以访问tomcat容器中的资源。

  • 相关阅读:
    任意用户密码重置的10种姿势
    提取header头进行模块化处理
    web安全测试--XSS(跨站脚本)与CSRF
    web测试--登录界面怎么测?
    Burp Suite抓https数据包
    CTFHub_技能树_远程代码执行
    CTFHub_技能树_SQL注入Ⅱ
    XSS 跨站脚本
    C语言中的内存对齐问题
    CTFHub_技能树_SQL注入Ⅰ
  • 原文地址:https://www.cnblogs.com/dubhlinn/p/11108848.html
Copyright © 2020-2023  润新知