Linux进程管理--最全最详细的Linux进程基本操作,进程查看,进程筛选,进程kill,网络进程的基本操作ps aux ,ss,netstat等等

进程管理

进程概念

进程管理

这里我们要了解以下几个概念:

进程基本概念 什么是程序 什么是进程 什么是线程 进程线程程序三者关系

首先我们要知道一点:程序不消耗资源 进程需要消耗资源

一:相关定义

程序:

        二进制文件,静态 /usr/sbin/httpd,/usr/sbin/sshd

进程:

        是程序运行的过程, 动态,有生命周期的,可以产生和消亡的(进程是已启动的可执行程序的运行实例,实例即运行可执行程序)。

线程:

        线程是进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程;一个进程至少包括一个线程,通常将该线程称为主线程;一个进程从主线程的执行开始,进而创建一个或多个附加线程,就是所谓基于多线程的多任务。

父进程:

        程序运行时产生的第一个进程,任何进程都可以作为父进程创建子进程。

子进程:

        由父进程使用fork()函数完全复制自己的地址空间创建出来的新的进程就是子进程,子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码.

二:进程的状态

        在多任务处理操作系统中,每个CPU(或每个核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU时间和资源分配的要求会不断变化(进程不会持续的占用cpu,而是根据自己的需求来决定是否需要使用cpu时间),所以进程在运行的时候会有不同的状态,它随着环境要求而改变,具体的状态可以参考下图来看:   

PID 进程ID

PPID 父进程ID

 

进程的状态标识:

R Running or runnable (on run queue) 正在被cpu处理的进程

S Interruptible sleep (waiting for an event to complete) 暂停状态

T Stopped, either by a job control signal or because it is being traced. 停止运行

Z Defunct ("zombie") process, terminated but not reaped by its parent. 僵尸进程

‘+’ Is in the foreground process group运行在前台的进程组

< high-priority (not nice to other users) 高优先级的进程

s is a session leader 父进程

静态查看进程

使用命令ps aux

a 只能查看所有终端进程

u 显示进程拥有者

x 显示系统内所有进程

在查出来的内容里面的字段分别是:

USER: 运行进程的用户

PID: 进程ID

%CPU: CPU占用率

%MEM: 内存占用率

VSZ: 占用虚拟内存

RSS: 占用实际内存 驻留内存

TTY: 进程运行的终端

STAT: 进程状态 我们可以使用man手册进行了解,命令:man ps

 (/STATE)

R 运行

S 可中断睡眠 Sleep

T 停止的进程

Z 僵尸进程

X 死掉的进程

【了解 】

        Ss s进程的领导者,父进程

        S< <优先级较高的进程

        SN N优先级较低的进程

        R+ +表示是前台的进程组

        Sl 以线程的方式运行

START: 进程的启动时间

TIME: 进程占用CPU的总时间

COMMAND: 进程文件,进程名

 

除此之外,可以根据相关条件进行排序查看

命令语法格式

ps axo 字段 –sort 排序依据 |head 后面的管道显示的内容可以添加也可以不添加

示例:

[root@ localhost~]# ps aux --sort %cpu  从小到大

 

[root@ localhost~]# ps aux --sort -%cpu 从大到小

 

[root@ localhost~]# ps aux --sort rss

[root@ localhost~]# ps aux --sort -rss

[root@localhost~]# yum -y install httpd (apache)

[root@localhost~]# systemctl start httpd

[root@localhost~]# ps auxf |grep httpd

案例:

1.要查看进程相关的信息,只显示pid、command和%mem字段,并根据%mem字段排序

ps axo pid,command,%mem –sort -%mem

ps aux

ps axo

ps -elf

通过判断进程是否存在,判定程序是否运行;

pid

安装htop

[root@localhost ~]# yum -y install epel-release && yum -y install htop

swap:交换分区

内存条:真实的物理内存

把磁盘空间拿出2G给swap 虚拟内存 交换分区

防止OOM;内存溢出

进程控制

kill家族

语法格式:

    kill +信号 pid

   

[root@localhost ~]# kill -l //列出所有支持的信号 编号 信号名

       -1   HUP  重新加载进程或者重新加载配置文件

       -9   KILL 强制杀死

       -15  TERM 正常杀死(这个信号可以默认不写)

       -18  CONT 激活进程

       -19  STOP 挂起进程

[root@localhost ~]# kill -HUP  pid

[root@localhost ~]# kill -STOP pid

案例1: 给sshd进程发送1信号

(修改完配置文件必须要重新加载配置文件或者是重新启动服务,目的是为了让修改后的配置文件生效)

(重新加载配置文件pid保持不变,重启服务,pid会发生改变)

(pid的作用是用来唯一标识一个进程,如果说这个进程关闭又重启,我们系统不会保留这个原有的pid,会生成一个新的pid给我们的服务使用)

[root@localhost-server-11 /]# ps aux | grep httpd | grep -v grep (-v取反)

root       758  0.0  0.0 433564 15212 ?        Ss   01:42   0:02 /usr/sbin/httpd -DFOREGROUND

apache     879  0.0  0.0 433564  7120 ?        S    08:22   0:00 /usr/sbin/httpd -DFOREGROUND

apache     880  0.0  0.0 433564  7120 ?        S    08:22   0:00 /usr/sbin/httpd -DFOREGROUND

apache     881  0.0  0.0 433564  7120 ?        S    08:22   0:00 /usr/sbin/httpd -DFOREGROUND

apache     882  0.0  0.0 433564  7120 ?        S    08:22   0:00 /usr/sbin/httpd -DFOREGROUND

apache     883  0.0  0.0 433564  7120 ?        S    08:22   0:00 /usr/sbin/httpd -DFOREGROUND

[root@localhost-server-11 /]# kill -1 758

[root@localhost-server-11 /]# ps aux | grep httpd | grep -v grep

root       758  0.0  0.0 433564 15220 ?        Ss   01:42   0:02 /usr/sbin/httpd -DFOREGROUND

apache     901  0.0  0.0 433700  7132 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     902  0.0  0.0 433700  7132 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     903  0.0  0.0 433700  7132 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     904  0.0  0.0 433700  7132 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     905  0.0  0.0 433700  7132 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

[root@localhost-server-11 /]# systemctl restart httpd

[root@localhost-server-11 /]# ps aux | grep httpd | grep -v grep

root       915  4.5  0.0 433588 14524 ?        Ss   08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     917  0.0  0.0 433588  6476 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     918  0.0  0.0 433588  6476 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     919  0.0  0.0 433588  6476 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     920  0.0  0.0 433588  6476 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

apache     921  0.0  0.0 433588  6476 ?        S    08:24   0:00 /usr/sbin/httpd -DFOREGROUND

[root@localhost-server-11 /]# ps aux | grep sshd

root        73  0.0  0.0 112864  4300 ?        Ss   Jul02   0:00 /usr/sbin/sshd -D

root       926  0.0  0.0   9088   668 pts/4    S+   08:25   0:00 grep --color=auto sshd

[root@localhost-server-11 /]# kill -1 73

[root@localhost-server-11 /]# ps aux | grep sshd

root        73  0.0  0.0 112864  4300 ?        Ss   Jul02   0:00 /usr/sbin/sshd -D

root       928  0.0  0.0   9088   668 pts/4    S+   08:25   0:00 grep --color=auto sshd

[root@localhost-server-11 /]# systemctl restart sshd

[root@localhost-server-11 /]# ps aux | grep sshd

root       932  1.0  0.0 112864  4300 ?        Ss   08:25   0:00 /usr/sbin/sshd -D

root       934  0.0  0.0   9088   668 pts/4    S+   08:25   0:00 grep --color=auto sshd

案例:给vim进程发送9,15信号

[root@localhost ~]# touch file1 file2

[root@localhost ~]# tty

/dev/pts/1

[root@localhost ~]# vim file1

[root@localhost ~]# tty

/dev/pts/2

[root@localhost ~]# vim file2

[root@localhost ~]# ps aux |grep vim

root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1

root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2

[root@localhost ~]# kill 4362

[root@localhost ~]# kill -9 4363

案例:给sshd进程发送18,19信号

[root@localhost ~]# ps aux |grep sshd

root 5571 0.0 0.0 64064 1164 ? Ss 09:35 0:00 /usr/sbin/sshd

[root@localhost ~]# kill -STOP 5571 19

[root@localhost ~]# ps aux |grep sshd

root 5571 0.0 0.0 64064 1164 ? Ts 09:35 0:00 /usr/sbin/sshd

[root@localhost ~]# kill -cont 5571 18

[root@localhost ~]# ps aux |grep sshd

root 5571 0.0 0.0 64064 1164 ? Ss 09:35 0:00 /usr/sbin/sshd

扩展:

[root@localhost ~]# killall 信号 进程名称

杀死与这个进程名称相关的所有进程

[root@localhost ~]# pkill -9 进程名称

[root@localhost ~]# pkill -9 -t 终端 名称

不加-9只杀死在终端上运行的进程,加-9连终端本身一起干掉

[root@localhost ~]# pkill -u 用户名称

备注:

    如果没有killall的命令:

        [root@localhost-server-11 /]# yum -y install psmisc

发现被入侵之后怎么办?

1、技术不太好,可以考虑先关机,然后找到上游防火墙,只允许自己的IP地址SSH,除此之外全部封禁;如果无法访问上游防火墙,则可以使用服务器本身的防火墙策略,当防火墙规则生效之后kill掉对方。

2、如果支持诸如串行控制台之类的带外连接登陆服务器,可以将network服务停掉,然后添加防火墙规则 。

3、修复之后,你永远不知道对方做过什么,最安全的方法是备份所有数据,重装系统。

扩展命令:

&符号 后台运行

jobs 查看后台运行的进程

网络进程

查看网络进程

系统上每一个服务都有自己默认的端口号
vnc 5900

ssh 22

http 80 (nginx apache)

https 443

mariadb/mysql 3306

php 9000
redis 6379

tomcat (8080 8009 8005)

netstat

netstat -auntpl | grep 22 过滤22号端口
-a 所有的进程
-u udp进程
-n 显示端口号 5900 vnc 21、20 ftp ssh 22 http 80 (apache,nginx) https 443 mysql/mariadb 3306 php 9000 redis 6379 tomcat(8009 8080 8005)
-t tcp进程
-p 显示程序的pid 和 名称
-l listening 监听的进程

 

ss

ss

推荐使用

查看网络进程
-a 所有的进程
-u udp进程
-n 显示段口号 5900 vnc 21、20 ftp
-t tcp进程
-p 显示程序的pid 和 名称
-l listening 监听的

目前进程的基本操作就这么多,如果有不懂的或者难以理解的,欢迎留言评论或者私信。

Linux权限管理---最全最详细的文件权限设置管理,手把手教你设置文件权限UGO和数字权限,高级权限等等_error1024的博客-CSDN博客 

Linux 系统--组管理(创建,修改,删除),用户提权操作_error1024的博客-CSDN博客

Linux修改root密码/忘记root密码如何操作?_error1024的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值