Linux实操篇——进程管理
进程进程这个东西相信大家都有接触过,我们那Windows举例,小伙伴们平时打游戏的时候有没有遇到黑屏的情况,反正小黄以前的电脑不太好,有时候进游戏就黑屏显示不起来了,这时候相信大家都跟小黄一样选择打开任务管理器(这也是小黄人生中记得第一个快捷键CTRL+ALT+数字点)Windows中的任务管理器是这样的,显示了占用CPU等信息。Linux中的进程我们先来说说在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 8月 24 2018 functions
-rwxr-xr-x. 1 root root 4569 8月 24 2018 netconsole
-rwxr-xr-x. 1 root root 7923 8月 24 2018 network
-rw-r--r--. 1 root root 1160 10月 31 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)