---
url: /diary/linux/5/index.md
description: Linux 基础学习笔记第五篇，进程管理和服务管理，包括 ps、kill、top、netstat 等系统监控命令。
---
## 十五.进程管理

### 显示系统执行的进程：

```shell
ps [选项]
```

```shell
ps -aux
```

```shell
ps -ef
```

## 十六.服务管理

服务（service）本质就是进程，但是是运行在后台的，通常都会监听某个端口，等待其他程序的请求，比如（mysql,sshd 防火墙等），因此我们又成为守护进程，是 linux 中非常重要的知识点。

注：这种方法只是临时生效，重启系统后，还是回归以前对服务的设置。

### 1.service指令：

#### 基本语法：

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

在centos 7.0后，不在使用service，而是 systemctl 。

#### 列出系统的服务：

```shell
[root@jhoncc init.d]# ls -l /etc/init.d/
总用量 40
-rw-r--r--. 1 root root 18281 8月  19 2019 functions
-rwxr-xr-x. 1 root root  4569 8月  19 2019 netconsole
-rwxr-xr-x. 1 root root  7928 8月  19 2019 network
-rw-r--r--. 1 root root  1160 4月   1 09:30 README
```

### 2.chkconfig指令

> chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭。

#### 基本语法：

```shell
chkconfig --list
chkconfig 服务名 --list
#开关服务
chkconfig --level 5 服务名 on/off
```

#### 应用实例：

```shell
[root@jhoncc init.d]# chkconfig --list
netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
```

## 十七.监控服务

### 1.动态监控进程 top 指令

> top 与 ps 命令很相似，他们都用来显示正在执行的进程。top 与 ps 最大的不同之处，在于 top 在执行一段时间可以更新正在运行的进程。

#### 基本用法：

```
top [选项]
```

| -d 秒数 | 指定top命令每隔几秒更新，默认是3秒。在top命令的交互模式当中可以执行的命令。 |
| ------- | ------------------------------------------------------------ |
| -i      | 使 top 不显示任何闲置或者僵死进程。                          |
| -p      | 用过指定监控进程 ID 来仅仅监控某个进程的状态。               |

#### 交互说明：

| P    | 以 CPU 使用率排序，默认就是此项 |
| ---- | ------------------------------- |
| M    | 以内存的使用率排序              |
| N    | 以 PID 排序                     |
| q    | 退出 top                        |

#### 应用实例：

```shell
top - 20:42:48 up 11:28,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 257 total,   2 running, 255 sleeping,   0 stopped,   0 zombie
top - 20:50:57 up 11:35,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 258 total,   1 running, 257 sleeping,   0 stopped,   0 zombie
top - 20:51:05 up 11:36,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 258 total,   1 running, 257 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2027904 total,   102728 free,   883448 used,  1041728 buff/cache
KiB Swap:  2097148 total,  2096884 free,      264 used.   940500 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0  194044   7216   4220 S   0.3  0.4   0:14.94 systemd
   467 root      20   0       0      0      0 S   0.3  0.0   0:10.21 xfsaild/dm-0
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.04 kthreadd
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
```

输入 k  ，再输入pid即可杀死进程。

### 2.网络情况 netstat 指令

#### 基本语法：

```shell
netstat [选项]
```

#### 选项说明：

| -an  | 按一定顺序排列输出 |
| ---- | ------------------ |
| -p   | 显示哪个进程在调用 |

#### 应用实例：

```shell
#查看所有的网络服务信息。
netstat -anp | more
#查看sshd的网络服务信息。
netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1282/sshd
tcp        0      0 192.168.176.128:22      192.168.176.1:10111     ESTABLISHED 26089/sshd: root@pt
tcp6       0      0 :::22                   :::*                    LISTEN      1282/sshd
unix  2      [ ]         DGRAM                    236735   26089/sshd: root@pt
unix  3      [ ]         STREAM     CONNECTED     26485    1282/sshd
```

## 十八.软件包管理

### 1.rpm包：

> rpm 是RedHat Package Manager 的缩写，类似windows的setup.ext ， 这一文件格式名称虽然搭上了RedHat的标志，但理念相通。
>
> Linux的分发版本独有采用（suse,redhat,centos等等)，可以算是是公认的行业标准了。

#### rpm包的简单查询指令

```shell
rpm -qa | grep 名称
```

#### 应用实例：

```shell
#查询软件包是否安装
[root@jhoncc init.d]# rpm -q firefox
firefox-68.5.0-2.el7.centos.x86_64
[root@jhoncc init.d]# rpm -q java
未安装软件包 java

#查询软件包信息
[root@jhoncc init.d]# rpm -qi firefox
Name        : firefox
Version     : 68.5.0
Release     : 2.el7.centos
Architecture: x86_64
Install Date: 2020年05月10日 星期日 07时19分10秒
Group       : Unspecified

#查询软件包中的文件 安装到哪里了
[root@jhoncc init.d]# rpm -ql firefox
/etc/firefox
/etc/firefox/pref
/usr/bin/firefox
/usr/lib64/firefox
/usr/lib64/firefox/LICENSE
/usr/lib64/firefox/application.ini
/usr/lib64/firefox/browser/blocklist.xml
/usr/lib64/firefox/browser/chrome
/usr/lib64/firefox/browser/chrome.manif

#文件全路径名 查询文件所属的软件包
[root@jhoncc init.d]#  rpm -qf /root/
filesystem-3.2-25.el7.x86_64
```

#### 卸载rpm包：

##### 基本语法：

```shell
rpm -e 名称		
rpm -e --modeps 名称 #强制删除 不推荐这样做
```

#####

#### 安装rpm包：

##### 基本语法：

```shell
rpm -ivh 名称  #i：install v：显示信息 h：显示进度条
```

##### 应用实例：

挂载 centos 的 iso 文件，然后到 /media/ 下去找 rpm 。

### 2.yum包：

> yum 是一个shell 前端软件包管理器。基于rpm 包管理，能够从指定的服务器自动下载 rpm 包并且安装，可以自动处理依赖性关系，并且以此安装所有依赖的软件包。

#### 基本指令：

```shell
#查询 yum 服务器是否有需要安装的软件
yum list | grep xx
#安装指定的yum包
yun install xxx #下载安装
```
