• Linux系统进程管理


    一.进程基础知识

    1.1 Linux进程的概念

    • Process:是运行中的程序的一个副本,是被载入内存的一个指令集合。进程IDProcess IDPID)号码被用来标记各个进程 UIDGID、和SELinux语境决定对文件系统的存取和访问权限,这些属性通常从执行进程的用户来继承,并且进程存在生命周期,每个进程的进程号是唯一

    • centos linux的第一个进程通常是init或者systemd,它是所有进程的父进程,PID为1,是唯一一个由系统内核直接运行的进程

    • Linux 给每个进程都打上了运行者的标志,用户可以控制自己的进程:给自己的进程分配不同的优先级,也可以随时终止自己的进程

    • Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是采用 “分时” 技术来处理这些任务请求

    • 除了init或者systemd,其他进程都是由父进程创建,即每个进程都有父进程(PPID)

    1.2 进程类型

    • 交互进程
      • 由一个Shell启动的进程。
      • 交互进程既可以在前台运行,也可以在后台运行。
    • 批处理进程
      • 不与特定的终端相关联,提交到等待队列种顺序执行的进程。
    • 守护进程(Daemon)
      • 在Linux在启动时初始化,需要时运行于后台的进程。

    1.3 进程状态

    • R (TASK_RUNNING):可执行状态
    • S (TASK_INTERRUPTIBLE):可中断的睡眠状态
    • D (TASK_UNINTERRUPTIBLE):不可中断的睡眠状态
    • T (TASK_STOPPED or TASK_TRACED):暂停状态或跟踪状态
    • Z (TASK_DEAD - EXIT_ZOMBIE):退出状态,进程成为僵尸进程
    • X (TASK_DEAD - EXIT_DEAD):退出状态,进程即将被销毁

    1.4 进程的启动方式

    • 手工方式:使用操作系统提供的用户接口
      • 前台
      • 后台(&)
    • 调度方式:按照预先指定的时间执行
      • at
      • batch
      • cron

    1.5 前台进程

    指一个程序控制着标准输入/输出,在程序运行时,shell 被暂时挂起,直到该程序运行结束后,才退回到 shell。在这个过程中,用户不能再执行其它程序

    1.6 后台进程

    用户不必等待程序运行结束就可以执行其它程序。运行后台进程的方法是在命令行最后加上 “&”

    1.7 进程与作用的区别

    • 进程:操作系统的概念,由操作系统负责管理

    • 作业:

      shell程序的概念,由shell程序负责管理

      • 一个操作系统可以启动多个shell程序,shell本身也是一个进程
      • 一个作业里至少包含一个进程,也可以包含多个进程
      • 作业分前台和后台运行之分

    有了上面的知识,我们可以画出这么一张流程图:

    二.管理进程常用命令

    使用ps命令查看进程状态信息

    • ps -ef
    • ps aux

    ps命令参数说明:

    ps命令输出说明:

    还有其他几个常用命令:

    • 注销后继续运行进程nohup 命令 [选项] [参数] [输出文件] &
      • 用过SpringBoot打jar包部署到Linux下的人对上面这个命令一定不会陌生啦~
    • 杀死进程kill -9 pid
    • pstree 以树形结构显示左右进程,特别是它能显示进程间的父子关系,-p 同时显示进程号
    • free:查看内存使用状况
    • top :查看实时刷新的系统进程信息
    • 进程调度的优先权nice命令
    • 进程运行后调整优先级:renice命令

    作业控制是指控制当前正在运行的进程的行为,也被称为进程控制。

    • 暂时停止某个运行程序 使用Ctrl+z
    • 列举作业号码和名称:jobs
    • 在后台恢复运行:bg [%作业号码]
    • 在前台恢复运行:fg [%作业号码]
    • 发送信号:kill -[信号] pid

    另外关于进程状态的切换如下图:

    三.守护进程

    始终在后台运行并响应合法请求的程序称为守护(Daemon)进程。守护进程不是由用户启动运行的,也不与终端关联

    • 一个实际运行中的系统一般会有多个守护进程在运行,且各个系统中运行的守护进程都不尽相同
    • 除非程序异常中止或者人为终止,否则它们将一直运行下去直至系统关闭
    • UNIX/Linux的守护进程在Windows系统中被称作“服务”

    3.1 守护进程的分类

    系统守护进程

    • 计划性任务 daemon:如 atd、crond
    • 系统日志 daemon:如 rsyslogd
    • 打印假脱机 daemon:如 cupsd、lpd
    • 网络参数设置 daemon:如 network

    网络守护进程

    • 各种网络协议侦听 daemon
    • 如:sshd、httpd、postfix、vsftpd

    网络超级服务器(Supper Server):

    • 如:xinetd 或 inetd

    3.2 超级服务器的引入 xinetd

    • 对于系统所要提供的每一种网络服务,都必须运行一个监听某个端口连接发生的守护程序,这通常意味着系统资源的浪费。

    • 为了避免系统资源浪费引入了“超级服务器”。超级服务器启动后同时监听它所管理的服务的所有端口

    • 当有客户提出服务请求时 :

      • 超级服务器会判断这是对哪一个服务的请求,然后再开启与此服务相应的守护进程
      • 由超级服务器产生的某服务的进程处理客户的请求,当处理结束便终止此服务进程
      • 超级服务器本身继续监听其他服务请求

    3.3守护进程的启动方式

    • **独立启动 **

      • 独立运行的守护进程由init脚本负责管理,脚本存放在/etc/rc.d/init.d/目录下
      • 所有的系统服务都是独立运行的。如:crond、syslogd等
      • 一些常用的网络守护进程是独立运行的。如:httpd等
    • 瞬态启动

      • 由网络超级服务器(xinetd)运行的守护进程,由xinetd管理的守护进程的配置文件存在/etc/xinetd.d/目录下
      • 默认的xinetd的主配置文件是/etc/xinetd.conf
      • 一些不常用的网络守护进程是由xinetd启动的,如:telnet、 tftp等
      • xinetd本身是独立运行的守护进程

    3.4 管理守护进程常用命令

    chkconfig命令的功能

    • 添加指定的新服务
    • 清除指定的服务
    • 显示由chkconfig管理的服务
    • 改变服务的运行级别
    • 检查服务的启动状态

    chkconfig --list会显示出对应的运行级别

    • 0: 关机
    • 1: 单用户
    • 2: 无网络的多用户
    • 3: 命令行模式
    • 4: 未用
    • 5: GUI(图形桌面 模式)
    • 6 : 重启

    ntsysv管理守护进程

    使用service管理守护进程

    • service --status-all
    • service server-name status
    • service server-name start|stop|restart

    四.安排自动化任务

    调度任务的守护进程

    • atd
    • crond

    安排调度任务的几个命令

    • at 安排作业在某一时刻执行一次
    • batch 安排作业在系统负载不重时执行一次
    • cron 安排周期性运行的作业

    4.1 atd守护进程

    atd守护进程负责监控一次性任务的执行,atd守护进程的执行参数/etc/sysconfig/atd

    控制普通用户的使用

    • /etc/at.allow存在,仅列在其中的用户允许使用
    • /etc/at.allow 不存在,检查/etc/at.deny,没有列于其中的所有用户允许使用
    • 若两个文件均不存在,仅允许root用户使用
    • 空的/etc/at.deny文件,表示允许所有用户使用(默认值)

    如何使用

    • 安装命令yum install at
    • atd的启动service atd start
    • atd服务的查看chkconfig --list | grep atd或者ps -aef | grep atd
    • at 命令格式及参数 at [-q 队列] [-f 文件名] 时间

    4.2 cron

    • crond守护进程负责监控周期性任务的执行
    • crond守护进程的执行参数配置文件/etc/sysconfig/crond

    控制普通用户的使用

    • /etc/cron.allow存在,仅列在其中的用户允许使用
    • /etc/cron.allow 不存在,检查/etc/cron.deny,没有列于其中的所有用户允许使用
    • 若两个文件均不存在,仅允许root用户使用
    • 空的/etc/cron.deny文件,表示允许所有用户使用(默认值)

    crond启动以后,每分钟唤醒一次,检测如下文件的变化并将其加载到内存

    • /etc/crontab:是crontab格式(man 5 crontab)的文件
    • /etc/cron.d/*:是crontab格式(man 5 crontab)的文件
    • /var/spool/cron/*:是crontab格式(man 5 crontab)的文件
    • /etc/anacrontab:是anacrontab格式(man 5 anacrontab)的文件

  • 相关阅读:
    Android Toast效果
    禁锢的思维
    偶遇makeblock
    发疯,宁愿一年少赚10万也不想和芯片打交道了
    Linux物理内存相关数据结构
    字符设备驱动框架
    Linux在IA-32体系结构下的地址映射
    使用busybox构建根文件系统
    在内容长页处动态增加滚动的返回头部图标
    用IE滤镜实现多种常用的CSS3效果
  • 原文地址:https://www.cnblogs.com/MessiXiaoMo3334/p/11361192.html
Copyright © 2020-2023  润新知