Linux实操篇——进程管理

进程

进程这个东西相信大家都有接触过,我们那Windows举例,小伙伴们平时打游戏的时候有没有遇到黑屏的情况,反正小黄以前的电脑不太好,有时候进游戏就黑屏显示不起来了,这时候相信大家都跟小黄一样选择打开任务管理器(这也是小黄人生中记得第一个快捷键CTRL+ALT+数字点)Windows中的任务管理器是这样的,显示了占用CPU等信息。

在这里插入图片描述

Linux中的进程

我们先来说说在Linux下如何打开我们所谓的任务管理器吧

ps -aux
-a: 显示当前终端的所有进程信息
-u: 以用户的格式显示进程信息
-x: 显示后台进程运行的参数
# 查看所有信息有点长,建议使用more
ps -aux  | more

接下来我们一一介绍每一列显示信息的含义

USER : 此进程是由哪个用户开启的
PID : 进程的唯一ID号
%CPU : 进程占用CPU的百分比
%MEM : 进程占用内存的百分比
VSZ : 进程占用虚拟内存的大小(KB)
RSS : 进程占用物理内存的大小(KB)
TTY : 终端名称,一般是缩写
STAT : 进程状态,S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,
D-短期等待,Z-僵死进程(遇到这种情况就要注意了,说明进程已经失效却还没有释放内存),T-被跟踪或者被停止等。
STATT : 进程的启动时间
TIME : 进程占用CPU的总时间
COMMAND : 启动进程所用的命令和参数,如果过长会被截断显示

在这里插入图片描述

父子进程

这个概念应该非常好理解,我们来看一下Linux中如何查看进程的父进程

我们通过一个应用实例来学习:以全格式显示当前所有的进程,查看sshd的父进程信息

sshd就是我们远端连接服务器的一个命令

ps -ef 以全格式显示当前所有进程
-e:显示所有进程
-f:全格式

我们还是先来看一下各列描述着什么样一个信息

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

在这里插入图片描述

我们通过管道符就可以看到sshd的父进程ID为1

在这里插入图片描述

终止进程

Windows上的终止进程就是任务管理器打开,右键结束任务,就可以把我们卡死的游戏给关掉啦。而Linux我们需要通过指令来终止进程,杀死这个进程

kill [选项] 进程号
killall 进程名称
-9 表示强迫进程立即停止

查看进程树

树形结构往往可以让我们更直观的查看信息

pstree [选项]
-p:显示进程的PID
-u:显示进程的所属用户

在这里插入图片描述

服务管理

服务本质还是一个进程,但是是在后台运行的,通常都会监听某一个端口,等待其他程序的请求,因此我们又称之为守护进程。

service管理指令

在centos7后,很多服务不再使用service,而是使用sysytemctl,我们先来看一下service还可以对哪些服务起作用

# 使用ls -l /etc/init.d/ 查看可以作用于哪些服务
[root@yellowstarEdu01 ~]# ls -l /etc/init.d/
总用量 40
-rw-r--r--. 1 root root 18281 824 2018 functions
-rwxr-xr-x. 1 root root  4569 824 2018 netconsole
-rwxr-xr-x. 1 root root  7923 824 2018 network
-rw-r--r--. 1 root root  1160 1031 2018 README

我们就使用network这个服务来学习一下service指令,network是一个网络指令,通常情况下network是开启状态的

# service network status  查看当前网络状态
[root@yellowstarEdu01 ~]# service network status
已配置设备:
lo ens33
当前活跃设备:
lo ens33 virbr0
# service network stop  关闭网络(在虚拟系统演示,关闭网络之后远程连接将断开)
[root@yellowstarEdu01 ~]$ service network stop
Stopping network (via systemctl): 
# service network start  开启网络
[root@yellowstarEdu01 ~]$ service network start
Starting network (via systemctl):
# service network restart 重启网络

chkconfig指令

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

查看服务

自启动/关闭相当于开机启动或不启动,我们通过以下命令可以查看服务的状态

在network中我们可以看到在运行级别3,5的状态下都设置了开机启动网络服务

[root@yellowstarEdu01 ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关

设置开机是否启动

例如我们想对network服务,设置运行级别为3时,不开机启动网络服务,可以使用以下命令

关于运行级别的介绍,可以看一下小黄的这篇文章 Linux实用指令

注意:chkconfig重新设置服务自启动或关闭,需要重启虚拟机reboot命令

[root@yellowstarEdu01 ~]# chkconfig --level 3 network off
[root@yellowstarEdu01 ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:关    4:开    5:开    6:关

systemctl管理指令

systemctl指令管理的服务在 /usr/lib/systemd/system查看

[root@yellowstarEdu01 ~]# ls -l  /usr/lib/systemd/system

查看服务的自启动状态,以防火墙举例

[root@yellowstarEdu01 ~]# systemctl list-unit-files | grep firewall
firewalld.service                             enabled 

开启、关闭防火墙

# systemctl disable firewalld 关闭防火墙开机启动
# systemctl enable firewalld 开启防火墙开启启动
[root@yellowstarEdu01 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@yellowstarEdu01 ~]# systemctl list-unit-files | grep firewall
firewalld.service                             disabled

查看防火墙是否自启动

[root@yellowstarEdu01 ~]# systemctl is-enabled firewalld
disabled

firewall指令

在真正的生产环境中,我们不可能把防火墙关闭了,往往需要将防火墙打开,但是如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口进行通讯。这时候我们需要打开指定的端口,例如80,22,8080等

# firewall-cmd --permanent --add-port=端口/协议		打开端口
# firewall-cmd --permanent --remove-port=端口/协议		关闭端口
[root@yellowstarEdu01 ~]# firewall-cmd --permanent --add-port=111/tcp
success
# firewall-cmd --reload 重新载入才能生效
[root@yellowstarEdu01 ~]# firewall-cmd --reload
success
# firewall-cmd --query-port=端口/协议	查看端口是否开放
[root@yellowstarEdu01 ~]# firewall-cmd --query-port=111/tcp
yes

这时候有小伙伴就要问了,怎么查看端口对应的协议呢?只需使用以下指令即可

看111端口最前面的proto就是协议

[root@yellowstarEdu01 ~]# netstat -nap | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      7421/beam.smp       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      7581/X              
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      7992/epmd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      7927/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7426/sshd           

动态监控系统

top命令,与ps命令类似,都用来显示正在执行的进程,区别是top可以在执行一段时间更新正在运行的进程

基本语法

# top [选项]
-d 秒数 :指定top命令每隔几秒更新一次,不指定默认为3秒
-i top不显示任何闲置或僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态

来看看top命令显示的一些信息

在这里插入图片描述

交互操作

P : 以CPU使用率排序,默认就是此项
M : 以内存使用率排序
N : 以PID排序
q : 退出top

# 监视特定用户
先输入u,再输入用户名
# 终止指定的进程
先输入k,在输入要结束的进程ID

监控网络状态

基本语法

netstat [选项]
-an # 按一定顺序排列输出
-p # 显示哪个进程在调用

查看服务名为sshd的服务的信息

netstat -anp | grep sshd

在这里插入图片描述

我们看倒数第二行,是root用户登录的进程并且是已连接,这里虚拟机中的22端口映射着我们主机的42701端口,只有两个台机子端口互相开放,才能建立连接。

如果我们退出root用户,这个进程不会立即回到监听状态,而是转为TIME_WAIT等待状态,持续几分钟,如果一直没有重新连接,就关闭该进程

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值