Linux–>进程管理

基本介绍

  1. 在Linux中, 每个执行程序都称为一个进程。每一个进程都会分配一个ID号(pid,进程号)
  2. 每个进程都可能以俩种方式存在的。分别是 前台后台,所谓前台进程就是用户目前可以在屏幕上操作的。后台进程 就是实际在操作但是屏幕是看不到的。
  3. 一般系统的服务都是以后台进程的方式存在,且常驻在系统中直到关机结束。

程序一旦运行并加载到内存就会产生进程

显示系统执行的进程

  • 基本介绍

ps命令查看目前系统中,有哪些正在执行,以及他们的执行状况。可以不加任何参数

ps -a       显示当前终端所有进程信息
ps -u       以用户的格式显示进程信息
ps -x       显示后台进程运行的参数

一般来说用法为

ps -aux | more 来查看进程信息
ps -aux | grep xxx  查看有没有sshd服务

ps内的信息解释

Linux-->进程管理

信息 描述 USER 进程执行用户 PID 进程号 %CPU 当前进程占用cpu百分比(单位kb) %MEM 占用物理内存的百分比(单位kb) VSZ 占用虚拟内存的百分比 TTY 终端名称,缩写 STAT 当前运行状态 START 代表进程开始执行的时间点 TIME 表示这个进程占用cpu时间 command 表示启动进程所使用的命令和参数,过长会被截断

关于STAT:

  1. S表示睡眠
  2. s表示该进程是会话的先导进程
  3. N表示进程有比普通优先级更低的优先级
  4. R表示正在运行
  5. D表示短期等待
  6. Z表示僵死进程(程序已经关闭但是内存未释放,需要定时清除)
  7. T表示被跟踪或者被停止

父子进程

在Linux中进程可以生成多个子进程,这个进程就叫父进程。

ps -ef 以全格式显示当前所有的进程。

-e 显示所有进程

-f 全格式

以全格式方式查看sshd的进程信息

ps -ef | grep sshd

Linux-->进程管理

查看ps -ef的全格式信息

ps -ef | more

Linux-->进程管理

ps -ef中信息详解

信息 描述 UID 用户ID PID 进程ID FPID 父进程ID C CPU用于计算执行优先级的因子,数值越大,表明进程是
CPU密集型运算

,执行优先级会降低。越小表面进程是
I/O密集型运算

,执行优先级越高 STIME 进程启动的时间 TTY 完整的终端名 TIME CPU时间 CMD 启动进程所用的命令和参数

终止进程kill和killall

  • 介绍:

如果某个进程执行一半需要停止。使用kill命令完成。

  • 基本语法:

通过进程号杀死进程

kill 选项 进程号

通过进程名杀死进程

killall 进程名

killall支持通配符,在系统因负载过大变得很慢时很有用。

kill常用选项

表示强迫进程立刻停止。

kill -9 进程号

案例:

  1. 踢掉某个非法用户
ps -aux | grep sshd 查看非法用户登录的进程号
kill 对应的进程号
  1. 终止远程登录服务sshd,在适当的时候重启sshd服务。
ps -aux | grep 查看sshd中 /user/sbin/sshd -D的进程号
kill sshd对应的进程号
/bin/systemctl start sshd.service 重启sshd服务

重启后进程号会发送变化
终止sshd服务后无法远程登录!

  1. 终止多个gedit
killall gedit

gedit进程代表的是,打开文本编辑器产生的进程,关闭后就相当于强制退出了文本编辑
killall会杀死父进程+子进程

  1. 杀死终端
ps -aux | grep bash     查看终端进程号
kill -9 终端对应的进程号

终端就是相当于cmd命令框
系统会对杀死终端操作认为是误操作,会无视,需要-9才能强制终止

pstree指令

查看进程树,更直观的查看进程的信息。

  • 基本语法
pstree 选项
  • 常用选项

-p 显示进程的PID

-u 显示进程的所属用户

服务管理

  • 介绍 服务管理本质就是进程,但是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等) 故我们又称为守护进程。Linux-->进程管理

service管理指令

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

status是查看状态

在CentOS7.0后很多服务不再使用service而是systemctl了

还继续使用service管理的指令可在 /etc/init.d 目录中中查看

  • 查看服务名
setup

其中[]代表会随着系统自启 按q进去确定与取消选项处

服务的运行级别(runlevel)

  • Linux系统有7中运行级别(runlevel)常用的是3和5运行级别 说明 0 系统停机状态,默认运行级别不能设置为0,否则无法正常启动。 1 单用户工作状态,root权限,用于系统维护,禁止远程登录。 2 多用户状态(无NFS),不支持网络。 3 完全多用户状态,支持网络,登录后进入命令行模式。 4 系统未使用,保留。 5 X11控制台,登录后进入GUI模式 6 系统正常关闭并重启,默认不能设置为6,否则无法正常启动。
  • 开机流程

开机—>BIOS–>/boot—>systemd进程1–>运行级别—>运行级别对应的服务

运行级别的指令

在/etc/inittab下可以设置运行级别,或者使用指令设置运行级别。

查看当前运行级别

systemctl get-default

设置运行级别

systemctl set-default 运行级别.target

multi-user.target 是level 3
graphical.target是

chkconfig指令

  • 介绍:
  • 通过chkconfig 命令可以给服务器的各个运行级别设置 自动启动/关闭。
  • chkconfig 指令管理的服务在 /etc/init.d 查看
  • 在Centos7.0之后,多数服务使用systemctl管理了
  • chkconfig基本语法

查看全部服务在每个运行级别下的状态

chkconfig --list

查看具体服务在哪些运行级别是打开的哪些是关闭的

chkconfig 服务名 --list

设置服务在0~5的运行级别的状态是打开还是关闭

chkconfig --level n 服务名 on/off

每一个服务都有0~5六个运行级别,打开了对应的运行级别之后,他就会在对应的运行级别自启动并生效。
chkconfig设置后需要重启才能生效。

服务管理(2)

systemctl管理指令

基本语法(临时生效,重启就恢复)

systemctl [start | stop | restart | status ] 服务名

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

systemctl设置服务的自启动状态

  1. 查看服务的开机启动状态(可以用grep过滤)
systemctl list-unit-files [| grep 服务名]
  1. 设置服务开机启动(永久生效)
systemctl enable 服务名
  1. 关闭服务开机启动(永久生效)
systemctl disable 服务名
  1. 查询某个服务是否自启动
systemctl is-enabled 服务名字

举例:查看当前防火墙状态

  1. 查看防火墙的服务名
ls -l /usr/lib/systemd/system | grep fire
  1. 查询防火墙服务当前状态
systemctl list-unit-files | grep firewalld
  1. 全名是firewalld.service,设置不能写一半fire必须写齐firewalld
  2. 关闭,启动,防火墙后,会立即生效
  3. 这种方式只是零时的生效,重启后还是会复原
  4. 如果希望永久生效要使用 systemctl enable|disable 服务名而不是systemctl start 服务名

防火墙可以简单理解为在监听端口前建立了一个墙。

外来程序要先访问防火墙才能进入端口。

如果防火墙没有打开对应端口就无法访问。

大概如图:

Linux-->进程管理

打开或关闭指定端口(firewall指令)

在真正的生产环境,防火墙必须是开启,故需要了解如何打开和关闭对应的端口。

打开端口

firewall-cmd --permanent --add-port=端口号/协议

关闭端口

firewall-cmd --permanent --remove-port=端口号/协议

打开或关闭后需要重载才能生效

重载

firewall-cmd --reload

查询端口是否开放

firewall-cmd --query-port=端口/协议

查看端口绑定的协议

netstat -anp | more

端口在 /etc/services中,可以自己设置或者进去查看

动态监控进程(top)

  • 介绍

top和ps命令类似,都是用来显示正在运行的进程。

与ps不同的是top可以在执行一段时间就更新正在运行的进程。

基本语法

top 选项
  • 选项说明

选项 功能 -d 秒数 指定top指令每隔几秒更新,默认3s -i 让top不显示任何闲置或者僵死的进程 -p 进程号 通过指定监控进程id来仅仅监控某个进程状态

top指令下内容详解

Linux-->进程管理

选项 解释 PID 进程号 USER 哪个用户在执行 %CPU 进程执行占cpu百分比 %MEM 占用物理内存的百分比(单位kb) TIME+ 进程在何时启动 COMMAND 启动进程所用的命令和参数

  1. 第一行
  2. top – 12:37:57代表当前系统时间
  3. 34 min是系统运行时间
  4. 2 users代表系统用户数量
  5. load average : 0.02,0.06,0.05 负载值,0.02+0.06+0.05三个值加起来 除 3 < 0.7 就没问题,> 0.7 就负载过大
  6. 第二行
  7. Tasks:324 total ,1 running,323 sleeping 0 stopped 0 zombie
    • 代表系统的任务数量有324个其中1个在运行,323个在休眠,0个停止了,0个在僵死状态
  8. 第三行

  9. %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

  10. 0.0 us 代表 用户占用cpu为0.0,0.2 sy是系统占用cpu 0.2 ,99.7 id是空闲cpu

  11. 第四行

  12. KiB Mem : 2028116 total, 541176 free, 819908 used, 667032 buff/cache

  13. Mem是内存占用情况,总体大约2G,大约0.5G在空闲,大约0.8个G在使用,buff用了0.6G

  14. 第五行

  15. KiB Swap: 2097148 total, 2097148 free, 0 used. 965996 avail Mem

  16. SWAP分区,共2G,空闲2G,使用0G,可获取0.9G

top指令的交互操作

在执行完top 选项指令后可以在键盘上按对应的键对top显示的内容进行交互操作。

操作 功能 P 以CPU使用率排序,默认此项 M 以内存使用率排序 N 以PID排序 q 退出top 按u回车,然后输入用户 监控指定用户 按k再回车,输入要结束的进程号,回车 终止指定进程

监控网络状态(netstat)

  • 查看系统网络状态netstat

语法

netstat &#x9009;&#x9879;

常用选项

netstat -an &#x6309;&#x4E00;&#x5B9A;&#x987A;&#x5E8F;&#x6392;&#x5E8F;&#x8F93;&#x51FA;
netstat -p   &#x663E;&#x793A;&#x8FDB;&#x7A0B;&#x540D;&#x548C;&#x57FA;&#x7840;&#x53F7;

常用方法:

netstat -anp | more&#x6216;grep &#x6307;&#x5B9A;&#x8FDB;&#x7A0B;

netstat内容详解

Linux-->进程管理

选项 解释 Proto 协议 Local Address 本地地址 Foreign Address 外部地址 State 状态,ESTABLISHED代表建立连接,LISTEN代表正在监听,TIME_WAIT代表超时等待 Recv-Q 接受到数据 Send-Q 发生的数据

Local Address和 Foreign Address的关系

Linux-->进程管理

检测主机连接命令(ping)

主要是检测远程主机是否正常,或俩部主机之间的网卡。

基本语法

ping &#x5BF9;&#x65B9;ip

Original: https://www.cnblogs.com/wdadwa/p/Linux_Learning_09.html
Author: wdadwa
Title: Linux–>进程管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611736/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 学习笔记——Django项目中新增数据、修改数据

    2022-09-30 新增数据 方式一: 进入虚拟环境,进入shell工具环境中(”python manage.py shell”),插入数据。在插入数据之…

    数据库 2023年6月14日
    096
  • Linux(CentOS)安装Redis保姆级教程

    Linux(CentOs)安装Redis教程 一,下载Redis(两种方式) 1,找到redis官网(https://redis.io/download ) 如果想下载指定版本就去…

    数据库 2023年6月11日
    078
  • [LeetCode]3. 无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 &#…

    数据库 2023年6月9日
    054
  • Mysql数据库基础_复习思维导图

    Mysql复习的一个小总结,用xmind写的。(字数没有都不给我发博客😹) 下面是一些备注 子查询 MySQL子查询称为内部查询,而包含子查询的查询称为外部查询。 子查询可以在使用…

    数据库 2023年5月24日
    068
  • 正则表达式=Regex=regular expression

    正则表达式=Regex=regular expression 反向引用*2 \index索引引用 \b(\w+)\b\s+\1\b \k \b(? 数量符/限定符62 贪婪Gree…

    数据库 2023年6月15日
    057
  • day03-3私聊功能

    多用户即时通讯系统03 4.编码实现02 4.4功能实现-私聊功能实现 4.4.1思路分析 客户端 – 发送者: 用户在控制台输入信息,客户端接收内容 将消息构建成Me…

    数据库 2023年6月11日
    058
  • 一、SQL高级语句

    摘抄别的博主的博客主要总去CSDN看不太方便自己整理一下加深记忆! 导入文件至数据库 #将脚本导入 source 加文件路径 mysql> source /backup/te…

    数据库 2023年5月24日
    097
  • jupyter使用虚拟环境

    为了在jupyter中使用pyTorch的虚拟环境,来记录一下怎么操作一、conda命令的使用因为使用的是jupyter,所有就使用Anaconda Prompt来创建虚拟环境(也…

    数据库 2023年6月14日
    074
  • 在windows上用docker desktop安装StoneDB

    自6月底开源以来,许多热心的社区用户都对StoneDB进行了编译和测试,也有一些用户询问StoneDB是否会支持Windows。虽然适配Windows版本的StoneDB尚未进入研…

    数据库 2023年5月24日
    098
  • Nginx平滑升级版本

    Nginx平滑升级版本 一, 查看现目前版本,准备预升级版本的安装包 #查看nginx版本 /usr/local/nginx/sbin/nginx -v #测试nginx访问是否正…

    数据库 2023年6月11日
    074
  • MySQL语句与正则表达式

    正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据…

    数据库 2023年6月16日
    082
  • windows安装mysql8.0.29(ZIP解压安装版本)

    一. 下载mysql 8.0.29软件包 二. 解压,初始化安装 1,打开下载后文件所在目录,使用解压软件解压,打开文件夹!(如图,文件路径不要出现中文!) 2,创建my.ini文…

    数据库 2023年6月16日
    073
  • MySQL源码分析之SQL函数执行

    1.MySQL中执行一条SQL的总体流程 2.SQL函数执行过程 1.MySQL中执行一条SQL的总体流程 一条包含函数的SQL语句,在mysql中会经过: &#x5BA2…

    数据库 2023年5月24日
    091
  • zabbix监控配置项配置

    1.手动添加监控项 2. 使用模板添加监控项 3.0 邮件告警 创建主机并加入主机组 1.手动添加监控项 即获取数据的监控指标增加用户,修改用户,删除用户etc/passwd文件都…

    数据库 2023年6月14日
    081
  • 「 MySQL高级篇 」MySQL索引原理,设计原则

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    080
  • MySQL SUBSTRING_INDEX截取字符串

    一、SUBSTRING_INDEX 二、示例 Original: https://www.cnblogs.com/woods1815/p/16368248.htmlAuthor: …

    数据库 2023年6月14日
    075
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球