系统进程及服务的控制

一、什么是进程

1.概念:

         在linux系统中触发一个事件,就定义其为进程;并同时为其分配一个id,称为PID;并根据触发这个事件的用户和用户的属性信息,给PID所代表的这个进程分配相关的权限信息。这是进程这个概念的一个简单描述。

2.进程与程序:

         如何产生一个进程呢?简单来说就是当某个用户(执行者)执行一个命令或者程序时就会触发一个事件,此时系统就会为该事件分配一个pid,这就算产生了进程。   我们也知道,系统要进行各种工作,但系统最底层的硬件只识别二进制文件的数据,若想系统工作就得执行某个二进制文件,而这个二进制文件的内容就是程序。

         那么问题来了,进程和程序之间有什么联系呢?   从比较表象的角度看,程序就是存放在磁盘中的数据,用户可以通过动作触发它,然后系统加载程序到内存中,把程序变成了另外一个个体,这个个体就是进程。

          那加载到内存中的程序和在磁盘中的程序发生了哪些变化呢?也就是进程和程序有什么区别呢?  区别在哪,要从把程序加载到内存的动机去理解,我们都知道内存中的数据都是系统当前正在使用的数据,既然在使用,就牵扯到对这些数据的管理,要管理这些加载的程序自然要给程序中加入一些控制、管理的字符标识、命令以及所需要的数据,显然加上这些信息的程序就变成了进程。

        一般由一个进程衍生出来的进程也会继承父进程的一些相关权限。

3.进程之间的联系:

       进程之间是有联系的,就如我们之前学过的文件系统的目录树一样,系统中的进程也是一个树的结构,系统重启后第一个执行的程序是init,它是所有进程的父进程。

     例如下图,ps -f 就是bash的子进程,我们可以通过看PID和PPID来判断,PPID就是父进程的标志:

  

 

 

二、进程的查看:

ps             -A #######  查看系统中所有进程

                 -a  ####### 查看当前环境中的进程,但不包含环境信息相关的进程

                 a ########  查看当前环境中的进程

                 -u #######   显示当前环境的进程,并显示与其相关的具体参数以及进程的用户

                 f #######  显示当前环境进程的父子关系

                e ###### 显示当前环境的进程命令的详细信息

                x  #####  列出系统中所有运行含有tty输出设备的进程

  • 常用的ps 组合

ps         aux   #####  显示当前系统的所有进程,并显示进程用户

ps         ef ######   显示当前环境进程的父子关系,并显示命令的详细信息

ps         ax  ####  显示当前系统的所有进程

  • 显示进程的指定信息

ps         -o         xxx   #######指定进程的显示信息

                          comm #####  进程的名称

                          user ######进程的所有者

                         group  ######  进程的所属用户组

                         %cpu ######   cpu的使用率

                         % mem  ####  内存的使用率

                         pid    ######   进程的id号

                         nice  #####   进程的优先级

   

  • 进程排序
ps       au      --sort=+%cpu | -%cpu          -o pid,cpu

                              =+%mem | -%mem       -o  pid,mem 

  • 进程的STAT(状态)信息

S             代表状态       

R              正在运行                                                     

N             代表优先级低

<              代表优先级高

l              代表在内存中有所定的空间

s              代表顶级进程

+              代表前台运行

 

  • 进程的优先级
  1. 进程优先级的范围:-20——19(数值越高代表优先级越低)
  2. 进程优先级的查看:  ps    a      -o    pid,nice,comm
  3. 以某个优先级开启某个程序:   nice  -n   5   vim  &      ##### 以-5这个优先级开启vim,并在后台运行

              

    4.更改某进程的优先级: renice  -n   -5    3116  ##### 更改3116这个进程的优先级为-5

  • 进程的动态监控

top                        #####  动态监控进程,查看进程信息

                       s  #######  修改进程刷新间隔时间                    

                      m   #####    内存使用量排序

                     c  #####  cpu资源占有率排序

                     u  ######  输入用户名,查找该用户发起的所有进程 

                    k  #####  对指定进程发起信号(后面跟pid和发起的信号)

                    h  ##### 提供帮助

                   q  #####  退出

第一行为任务队列信息: 系统当前时间、系统硬件事件、登陆用户、平均负载(通常认为小于1)

第二行进程信息:2个程序正在运行,148个正在休眠,2个停止运行,0个僵尸程序。

第三行为cpu信息:空闲id一般不低于20%

第四行为物理内存信息

第五行为交换分区信息

三、进程的管理:

1.环境中进程的前后台调用

jobs                                ############  查看被打入环境后台的进程

ctrl  +  z                          ###########  把占用终端的进程打入后台

comme      &                 #########     让命令直接在后台运行

fg       jobnumber           #########   把后台运行的进程掉到前台

bg      jobnumber         ##########  让后台暂停的进程运行

  

下面这幅图是把让后台停止的程序运行:

2.进程信号

  • 常用信号等级

1       ############  进程重新加载配置

2      ############  清除进程在内存中的数据

3      ###########  删除鼠标在内存中的数据

9     ###########  强行结束单个进程(不能被阻塞)

15  ###########  正常关闭进程  (可能被阻塞)

18  ##########  运行暂停的进程  

19     ##########  暂停某个进程(不能被阻塞)

20   ##########  把进程打入后台

       kill               -信号        进程pid

       killall            -信号        进程名字

       pkill        -u   student     -信号

四、控制服务:

    1.什么是服务

        联系我们的实际生活,服务是什么?服务就是为我们人或者一群人提供各种功能,这种功能可以解决我们生活中的难题,或者为我们的生活提供方便。那么在linux系统中的服务是什么呢?举例来说NetworkManager,它是一个网络服务,提供对网络的管理和控制; sshd.service,它是一个远程登陆服务;chronyd,提供时钟同步服务;rayalog.service,提供远程日志同步服务。  所以我们可以发现linux系统中的服务也就是为单个主机或者多主机之间更好的运行,或者解决一些需求的程序。

2.用什么控制服务:

1.系统的初始化进程systemd 可以完成对服务的一些控制。

2.可以使用systemctl命令来控制服务。

3.进程的控制:

systemctl           status       sshd    #######     查看服务状态

systemctl           start         sshd   #######    开启服务

systemctl            stop         sshd  #######   停止服务

systmctl             restart      sshd  #######  重启服务

systemctl           reload      sshd   ######  重新加载配置

systemctl         enable       sshd   ######  指定开机启动服务

systemctl       disable       sshd  ######   指定开机不启动服务

systemctl       list-units      sshd   ##### 列出已经开启服务的当前状态

  systemctl      list-unit-files   sshd  ####    列出所有服务开机启动的状态

systemctl     list-dependencies   ######  列出服务的倚赖关系。

4.sshd服务:

下面我们来做一个sshd服务的实验。

实验环境:两台虚拟机,其中server虚拟机作为服务器,提供ssh服务;desktop虚拟机为客户端,用作测试。

实验步骤:第一步,让客户端能够远程登陆服务端,并进行一些远程操作;   第二步通过生成密钥让客户端免密登陆;

第三步通过修改sshd服务的配置文件的修改来理解实验原理。

实验目的:掌握sshd服务 的简单配置,理解免密登陆的过程。

我们先开始第一步:让客户端通过sshd连接服务端。  我们只需要让他们同处一个网段。

 

接着我们做一些远程操作:

下载操作:

上传操作:

 

第二步:实现免密登陆:

到这里我们已经实现了免密登陆。

第三步,对配置文件进行更改:

此时不能登陆了我们再将悲愤的锁文件复制回来看现象:

又可以登录了!

我们还可以再配置文件中配置白名单、黑名单、登陆界面等,这里不再一一示范。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值