Linux学习笔记_12_进程管理(ps, top)&服务管理(service)&查看系统网络(netstat)

1. 进程的基本介绍

  1. 在 LINUX 中, 每个执行的程序(代码) 都称为一个进程。 每一个进程都分配一个 ID 号。
  2. 每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程。 例如 www 服务器。
  3. 每个进程都可能以两种方式存在的。 前台与后台, 所谓前台进程就是用户目前的屏幕上可以进
    行操作的。 后台进程则是实际在操作, 但由于屏幕上无法看到的进程, 通常使用后台方式执行。
  4. 一般系统的服务都是以后台进程的方式存在, 而且都会常驻在系统中。 直到关机才才结束。

2. 显示系统执行的进程

1. ps指令详解

  1. 指令: ps -aux|grep xxx , 比如看看有没有 python 服务ps -aux|grep python
#|管道符将前面的结果传给后面的命令grep处理,grep过滤指令,过滤出python相关的
ps -aux| grep python  

在这里插入图片描述

  1. 指令说明
    •System V 展示风格
    •USER: 用户名称
    •PID: 进程号
    •%CPU: 进程占用 CPU 的百分比
    •%MEM: 进程占用物理内存的百分比
    •VSZ: 进程占用的虚拟内存大小(单位: KB)
    •RSS: 进程占用的物理内存大小(单位: KB)
    •TT: 终端名称,缩写 .
    •STAT: 进程状态, 其中 S-睡眠, s-表示该进程是会话的先导进程, N-表示进程拥有比普通优先
    级更低的优先级, R-正在运行, D-短期等待, Z-僵死进程, T-被跟踪或者被停止等等
    •STARTED: 进程的启动时间
    •TIME: CPU 时间, 即进程使用 CPU 的总时间
    •COMMAND: 启动进程所用的命令和参数, 如果过长会被截断显示

查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux
在这里插入图片描述
在这里插入图片描述
查看运行的docker容器:sudo docker ps -a

2. 应用实例

  1. 以全格式显示当前所有的进程, 查看进程的父进程
ps -ef | more

在这里插入图片描述

•ps -ef 是以全格式显示当前所有的进程
•-e 显示所有进程。 -f 全格式。
•ps -ef|grep xxx
•是 BSD 风格
•UID: 用户 ID
•PID: 进程 ID
•PPID: 父进程 ID
•C: CPU 用于计算执行优先级的因子。 数值越大, 表明进程是 CPU 密集型运算, 执行优先级会
降低; 数值越小, 表明进程是 I/O 密集型运算, 执行优先级会提高
•STIME: 进程启动的时间
•TTY: 完整的终端名称
•TIME: CPU 时间
•CMD: 启动进程所用的命令和参数
  1. 如果我们希望查看 sshd 进程的父进程号是多少, 应该怎样查询 ?
ps -ef | grep sshd  #加上管道符和grep命令

在这里插入图片描述

3. 终止进程

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

基本语法:

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

案例 1: 踢掉某个非法登录用户
找到进程号,kill它
在这里插入图片描述

案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
在这里插入图片描述

案例 3: 终止多个 gedit 编辑器 【killall , 通过进程名称来终止进程】
通过名称来终止一系列相关的进程。
在这里插入图片描述
案例 4: 强制杀掉一个终端
带上-9 参数,因为系统认为终端是比较重要的进程。
在这里插入图片描述

查看进程树 pstree
在这里插入图片描述

4. 服务管理

1. service服务管理

服务(service) 就是运行在后台的进程,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。 原理图:
在这里插入图片描述
案例:查看当前防火墙的状况, 关闭防火墙和重启防火墙。

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

在 CentOS7.0 后 不再使用 service ,而是 systemctl
在这里插入图片描述
在这里插入图片描述


题外话
Ubuntu的防火墙

#安装
sudo apt-get install ufw
#启用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。
sudo ufw enable
sudo ufw default deny 
#关闭
sudo ufw disable 
#查看防火墙状态
sudo ufw status 
#开启/禁用相应端口或服务举例
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

#推荐设置,这样设置已经很安全,如果有特殊需要,可以使用sudo ufw allow开启相应服务。
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny 

ubuntu下后台服务的管理
Ubuntu注册后台服务后都有脚本存在/lib/systemd/system路径下
如mysql为mysql.service
被service管理的进程被杀掉还是会重启的
应使用service XXX stop停止
下面是一个简单的后台运行程序的service文件leshan-server.service

#leshan-server.service
[Unit]
Description= leshan lwM2M demo server

[Service]
type=forking
ExecStart=/usr/bin/java -jre /home/simple/leshan/leshan-server-demo.jar

启动服务

service leshan-server start

停止服务

service leshan-server stop 

重新加载service文件

systemctl daemon-reload

2. 查看服务名

ls -l /etc/init.d/

在这里插入图片描述

在这里插入图片描述

3. 设置各个运行级别是否自启动

通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法:

  1. 查看服务 chkconfig --list|grep xxx
    Ubuntu没有chkconfig命令,有sysv-rc-conf命令,首先安装:
sudo apt install sysv-rc-conf

当我安装sysv-rc-conf时,报了如下的错:
E: Unable to locate package sysv-rc-conf(无法定位sysv-rc-conf包)

提供一个解决办法,如下:
在软件源列表sources.list(该文本的位置在/etc/apt/sources.list)文件中的末尾添加如下内容:

deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

更新apt-get,再安装

sudo apt-get update
sudo apt install sysv-rc-conf

在这里插入图片描述
Ubuntu下的进程跟Centos下的不太一样。

加上| grep xxx可以过滤服务

sysv-rc-conf --list | grep uuidd

在这里插入图片描述
回到刚才的问题:修改某服务在某个运行级别下是否自启动
语法:sudo sysv-rc-conf --level 级别 服务名 on/off
eg:

sudo sysv-rc-conf --level 4 uuidd off  #让uuidd服务在运行级别4下不自启动
sudo sysv-rc-conf --level 4 uuidd off  #让uuidd服务在运行级别4下自启动

在这里插入图片描述

查看此时uuidd的运行状态:

sudo uuidd status

在这里插入图片描述

5. 动态监控进程

top 与 ps 命令很相似。 它们都用来显示正在执行的进程。 Top 与 ps 最大的不同之处在于 **top 在
执行一段时间可以更新正在运行的的进程。**可以看机器的负载情况。
语法: top [选项]
在这里插入图片描述

案例1. 监视特定用户

top: 输入此命令, 按回车键, 查看执行的进程。
u: 然后输入“u” 回车, 再输入用户名, 即可
在这里插入图片描述
load average表示负载均衡,三个的平均值大于0.7时就有点跑不太动了。
zombie僵死进程。
Cpu(s)行的:us是user使用CPU的百分比,sy是system使用的,id是空闲的。

案例2. 终止指定的进程

top: 输入此命令, 按回车键, 查看执行的进程。
k: 然后输入“k” 回车, 再输入要结束的进程 ID 号
在这里插入图片描述

案例3. 指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒):

top -d 10

6. 查看系统网络情况netstat(重要)

语法:

netstat [选项]
netstat -anp  #一般

• 选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用

案例1. 查看系统所有的网络服务

netstat -anp | more

在这里插入图片描述

案例2. 查看服务名为chrome的服务的信息:

netstat -anp | grep chrome

在这里插入图片描述
上面介绍的一些进程&服务管理指令在实际中能够应对90%的使用。


7. 题外话:查看显卡运行情况

nvidia-smi

但是ubuntu18 Command ‘nvidia-smi’ not found
重装显卡驱动,解决之后

lspci |grep -i vga  #查看显卡信息
01:00.0 VGA compatible controller: NVIDIA Corporation TU116M [GeForce GTX 1660 Ti Mobile] (rev a1)
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c6)
nvidia-smi   	#显示一次当前GPU占用情况
nvidia-smi -l   #每秒刷新一次并显示
watch -n 5 nvidia-smi 	#其中,5表示每隔5秒刷新一次终端的显示结果

Linux的粗略学习先到这里,以后在使用中慢慢熟悉:我亦无他,唯手熟尔。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值