Linux进阶之路————进程与服务管理

引言

在Linux 中,每个执行的程序(代码)都成为一个进程,Linux 为每一个进程分配了一个唯一的 id 号 - PID

每个进程都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www 服务器。

每个进程都可能以两种方式存在 - 前台/ 后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常运行在管理员无法感知的后台。

一般系统服务都是以后台进程的形式存在,比如 sshd 服务进程,其中的 d 代表 daemon (守护进程),而且会常驻在系统中,如果不进行特殊操作,一般只有在关机时才会终止。

一、显示系统中的进程列表

基本语法:

ps -aux

一般使用 ps 指令都会带上参数,-a 代表 all 所有进程;-u 代表 user 以用户格式显示;-x 代表显示后台进程运行参数

字段详解:

USER - 进程的用户名

PID - 进程 ID

%CPU - 占用 CPU 百分比

%MEM - 占用物理内存百分比

VSZ - 使用的虚拟内存大小(单位:KB)

RSS - 使用的物理内存大小(单位:KB)

TTY - 终端名称,缩写

STAT - 进程状态,S - 睡眠,s - 表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止。

START - 进程启动时间

TIME - 进程占用 CPU 总时间

COMMAND - 进程执行时的命令行,过长的话可能会截断显示

另外,ps -aux 还可以通过管道符和过滤命令  “| grep 进程名”   来专门查找指定进程的详情信息:

可以看到上面的途中,查看ssh 进程的信息,显示结果中,第一行是 sshd 后台进程,因为它在启动时使用了 /usr/sbin/sshd 命令。而最后一行可以看到使用的是 grep ssh ,也就是我们正在查询时开启的一个进程。第二和第三行是通过外部的 ssh 终端设备连接进来而开启的后台进程,第四行则是一个 sftp 相关的后台进程。

有趣的是,如果我通过 kill -9 杀掉 3362 进程,那么远程终端的文件视图就会连接中断,同时第四行的 sftp 后台进程也会终止:

终端命令行依然可以操作,由此可见进程列表中显示的信息与实际的进程情况完全匹配。

二、查看父进程

还有一种查询进程的方式是:

ps -ef

这句指令的意思是“全格式显示所有进程,包括父进程”。一般也会配合 管道符 “|” 和 筛选指令 grep 、分页指令 more 等一起使用。

PPID 就是父进程的 PID 。

C 代表CPU 用于计算执行优先级的因子。数值越大,表名进程是 CPU 密集型运算,执行优先级会降低;数值越小,表名进程是 IO 密集型运算,执行优先级会提高。

STIME 进程启动的时间

TTY  终端名称

TIME  CPU 占用时间

CMD  启动进程所用的命令和参数

三、终止进程

基本语法:

kill  参数  进程PID

常用参数: -9。

Linux 中的 kill 指令用来终止指定进程的运行。

通常,终止一个前台进程只需要 Ctrl + C ,但是对于一个后台进程就需要使用 kill 指令,并且要先查看我们想要终止进程的 PID。

我们来使用 man kill 来查看一下 kill  的使用手册:

在描述中的第一段话意思是这样的:

指令 kill 发送特定的信号给特定的进程或进程组。如果没有指定信号,那么就会发送 TERM 信号。TERM 信号会杀死那些没有捕获这个信号的进程。对于其他的进程,可能有必要使用 KILL(9) 信号,因为这个信号不会被捕获。

在 kill 说明中有一个参数 是 -l  可以列出所有的可发送信号:

因此,kill -9 的含义就是强制杀死进程。

四、服务管理

服务的本质其实就是进程,但是运行于后台,通常会监听某个端口,等待其他程序的请求,比如mysqld,sshd 防火墙等,因此我们又称为守护进程

4.1 service指令

在CentOS 7之前都是通过 service 指令来管理后台系统服务,CentOS7 之后,采用systemctl 指令来进行管理。这里讲解 service 的用法,后期会针对 CentOS 7 来进程补充。

基本语法:

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

案例:查看Linux 防火墙的情况,关闭并重启防火墙:

可以在宿主机终端采用 telnet 指令来检查端口是否可以连接(国庆期间又装了一个 CentOS 6 ,ip 是200):

4.2 查看Linux自启动服务

在命令行输入 setup 指令并回车即可查看系统自启动服务:

服务名称前面的 [ ] 内如果有 * 号,说明此项服务属于开机自启。

除了这种方式,还可以通过/etc/init.d/服务名称 文件来查看:

不过在这里好像只能看到系统都有哪些服务。

4.3 服务的运行级别

在前面的文章中《Linux进阶之路————Linux运行级别》中,总结了关于Linux 系统运行级别的概念和知识,这里服务的运行级别也和之前的运行级别是一脉相承的。

首先我们知道,Linux 的启动流程是如下所示的:

服务的运行级别对应着系统的运行级别,如果系统当前的运行级别是3,那么5 运行级别的服务就不会开机启动,而需要手动操作。

通过 chkconfig 指令可以给每个服务的各个运行级别设置 自启动/ 关闭,设置之后即生效

常用语法:

chkconfig  --list | grep  服务名   # 查看服务的运行级别状态,过滤处理可选

 chkconfig 服务名 --list  # 查看某个服务的运行级别状态

 chkconfig  [--level  运行级别编号]  服务名  on | off      # 在某个运行级别下开启或关闭自启动,若不写运行级别,默认全部

案例:关闭所有运行级别下的防火墙服务的自启动:

五、进程监控

Linux 使用 top 命令来进行进程监控。

top 命令和 ps 命令有些类似,它们都用来显示正在执行的进程,但二者又有不同,top 最大的特点在于可以定期刷新进程列表中的状态。

基本语法:

top [选项]

可选参数:

-d 秒数        指定top 命令刷新频率,默认是 3。

-i                   不显示任何闲置或者僵死进程

-p  PID          指定进程ID 的进程状态

当进入到 top 的交互模式中时,可以通过下面一些参数,来与 top 命令进行交互:

P            以CPU 使用率排序,默认是此项

M            以内存使用率排序

N             以 PID 排序

q              退出 top 命令

输入 top 命令可以显示上图中的信息,默认每 3 秒刷新一次,如果按下交互键,在排序的同时可以立即刷新列表。输入q 可以退出 top 。

上图中,up 代表系统启动了多久,2 users 表示当前用户数,load average 应该是平均负载的意思。其余的选项可以网上搜索或见名猜意 (* ̄︶ ̄)。

六、网络监控

6.1 netstat 

网络监控采用 netstat 命令。

基本语法:

netstat [选项] 

常用参数:

-an   按一定排序输出

-p     显示哪个进程在调用

案例:查看sshd 的服务信息:

可以看到,如果sshd 服务是关闭的状态的话,那么 netstat 也查询不到 sshd 的网络监听状态。

6.2 ping

不论是Windows 还是 Linux ,这个命令都是通用的。它是一种检测网络的工具,可以快速查看远程主机是否可以连通,主机间的介质是否为断,网线是否脱落或网卡故障等。

如果两台主机之间可以正常通信,那么就会显示上图所示,如果通信异常,那么就不会显示时间等信息。

综上,就是关于系统服务相关的知识总结,欢迎文末留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux进阶之路———— RPM 与 YUM 包管理

引言 rpm 是一种用于互联网下载的打包及安装工具,它包含在某些 Linux 发行版中,生成具有 .rpm 扩展名的文件。rpm 是 redhat package manager(RedHat 软件包管理器)的缩写,类似 Windows 下的 setup.exe 文件。这一文件…

Linux进阶之路———Shell 编程入门

引言 通过 Shell 编程的学习,铺平架构师道路上的一块大砖。 Shell 在Linux 系统中的定位如下所示: 一、第一个 Shell 脚本 我们通过一个简单的 Shell 脚本来感受一下。 在 Shell 中不需要加 “;” 结尾,通过 vim 可以进行 shell 的编程工…

Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8

引言 本篇博客也属于Linux进阶系列,主要讲解如何在CentOS 6 下安装并配置 JDK 8。由于通过 yum 搜索的结果都是 openjdk,而目前企业中还是以 Oracle jdk 为主,因此,操作步骤这样的。 在Oracle 官网把 jdk 1.8 下载下来&#xff…

Linux 实操———CentOS 6 安装配置 Tomcat

引言 Linux下安装Tomcat。 一、下载、传输与解压 同《Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8》一样,前期都是先在远程机上下载压缩包,然后通过远程终端,将压缩包放在 Linux 的 opt 目录下,然后解压。 下载地址是T…

Spring Boot 实用开发技巧————Eclipse 远程调试

引言 在之前的开发当中,都会进行本地项目启动,然后向本地服务发起请求来进行 Debug 调试代码,这也是开发人员最常见的调试操作。但是当项目逐渐成型,慢慢的将各个模块部署到服务器后,调试的手段可能就仅仅剩下查看执行…

Linux 实操———— Shell 远程执行命令

引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell 脚本来启动服务。 本篇博客聚焦这样一种解决方案…

Spring Boot 设置 ASCII banner 艺术字

引言 无意中看到Spring boot 项目的 resources 目录下有一个 banner.txt ,打开一看,居然是ASCII 字符画。于是兴起,简单研究了一下。 Spring boot 可以加载 resources 目录下的 banner.txt 文件,将字符画在启动之初输出到日志或…

MySQL 基础 ———— 分组查询

引言 承接上一篇《MySQL 基础 ————高频函数总结》,本篇单独针对分组查询进行简单的总结和归纳,并为后续更为复杂的DQL 语句做好铺垫。 查询语句: SELECT AVG(salary) FROM teacher; 实际上是以全表的 salary 字段来求平均值。但是在实…

MySQL 基础 ———— 连接查询

引言 本篇文章承接《数据库与SQL语句》专栏,进入DQL的重要环节,可以说,这一部分的内容应该占据SQL语言的大部分使用场景。 本篇的连接查询知识,和后面的一些重要的查询知识总结,共同构成了在工作中80%的MySQL应用场景…

MySQL 基础 ———— 子查询

引言 承接《MySQL 基础 ———— 连接查询》,本文介绍和展示SQL中子查询的使用。 子查询是出现在其他语句中的select 语句,也称为内查询。外部的查询语句,称为主查询或外查询。 一、子查询的分类和支持的子句 按照子查询出现的位置&#…

MySQL 基础 ———— SQL语句的执行顺序与 LIMIT 子句

引言 到目前为止,已经总结了常见的SQL子句,包括 SELECT 、FROM、JOIN ... ON、WHERE、GROUP BY、HAVING、ORDER BY。 虽然SQL的书写顺序是固定的,但在MySQL引擎中执行的顺序并不完全和书写顺序一致。除了上述这些子句,下面将会介…

MySQL 基础———— UNION 联合查询

引言 联合查询与连接查询不同,通过UNION 关键字,我们可以将多个查询语句一同执行并将结果集展示出来,不涉及到任何关联关系。 UNION 的含义是“联合,并集,结合”,在MySQL中可以将多个查询语句的结果合并成…

MySQL 基础————常用数据类型

引言 从第一次学习mysql开始,不知道为什么MySQL的数据类型始终没有像Java 一样深入脑海,对某些数据类型的定义和用法,也并不清晰,这篇文章,就好好总结一番,将MySQL中几个常用的数据类型归纳一下。 一、类…

MySQL 基础 ———— SAVEPOINT 的应用

引言 savepoint 关键字用于在数据库事务中设置一个存储点,在一个较长的事务中暂存数据,如果在事务末尾执行回滚,可选择性的回滚到 savepoint 设置的暂存点。 本文承接上一篇博客《MySQL 基础 ————事务与隔离级别总结》,进一…

MySQL 基础 ———— 视图的应用与总结

引言 视图是一种虚拟表,和普通表的使用是一样的,视图的一大特点就是“临时性”,是通过表动态生成的数据,只保存SQL逻辑,不保存查询结果。 视图在实际生产中主要有两种应用场景: 1、多个地方用到同样的查…

MySQL 基础 ———— 变量

一、MySQL系统变量 系统变量是由系统提供,属于服务器层面。 系统变量分为:全局变量和会话变量。 全局变量一般要加 GLOBAL 关键字,例如在《MySQL 基础 ————事务与隔离级别总结》中提到的 GLOBAL TRANSACTION,就属于全局变量…

MySQL 基础 ———— 存储过程与函数

一、存储过程介绍 存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句。它的优点主要有以下几点: 1、提高代码的重用性; 2、简化操作; 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率…

MySQL 基础 ———— 流程控制结构

引言 MySQL 中的流程控制作为基础知识的最后一块拼图,显得并不是特别重要,而且,在实际生产开发中,也往往不需要通过它来进行程序的控制,那么为什么还要学习它呢?我认为有以下几点: 1、知识的完…

MySQL 高级 ———— MySQL逻辑架构图简介

引言 本篇文章介绍MySQL的逻辑架构图。 MySQL并不完美,但足够灵活,能够适应高要求环境。MySQL不仅可以嵌入到应用程序中,同时也可以支持数据仓库、内容搜索、和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。 一、MySQL逻…

Java正则表达式总结

引言 正则表达式(英文:regular expression)是用于描述字符串规则的工具,是记录文本规则的代码。 它可以用来搜索、编辑、处理文本。现有编程语言都支持正则表达式的处理,但每种语言都有细微的差别。 在Java 中&…