一.进程基础知识

1.1 Linux进程的概念

Process:是运行中的程序的一个副本,是被载入内存的一个指令集合。进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和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)的文件

go linux下进程守护,Linux系统进程管理-Go语言中文社区相关推荐

  1. linux 创建中文文件夹,linux下创建文件和文件夹-Go语言中文社区

    使用linux系统会有一些常见的命令,譬如说,创建文件夹,创建文件,这些命令都是比较常见的. 方法/步骤 首先说一下touch 创建二进制文件,用法就非常的简单,touch+文件名   之间一定要空格 ...

  2. linux 安装centos7,linux CentOs7 安装 Autojump 方便高效省事-Go语言中文社区

    一.简介 autojump是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处. 有多种安装手法,但我只推荐我接下来介绍的一种: 首先确定你的系统开启EPEL保证有软件包源(在 ...

  3. kail linux dns欺骗,Kali Linux渗透测试-Ettercap DNS欺骗攻击-Go语言中文社区

    Kali Linux渗透测试-Ettercap DNS欺骗攻击 DNS欺骗攻击基于中间人攻击.攻击者更改受害者从DNS服务器查询的域名解析结果,给受害者发送恶意网页或者钓鱼网页-浏览器依然显示正常的u ...

  4. mac go linux 目标,Mac下Golang安装以及目录结构-Go语言中文社区

    1.安装步骤 a.下载地址  下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到) b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_p ...

  5. xstart连不上linux_【Tools系列】使用xstart远程连接linux图形用户界面以及rxvt终端配置-Go语言中文社区...

    DATE: 2019-7-28 1.使用xstart远程连接linux图形用户界面 使用xstart已经成功远程连接到了Linux中,但是界面看起来有些丑,下面通过rxvt终端配置进行美化. 2.rx ...

  6. linux crm高可用网卡,Linux运维——pacemaker实现高可用-Go语言中文社区

    实验环境: 操作系统:rhel6.5 server1 ip : 172.25.62.1 server2 ip : 172.25.62.2 客户主机ip: 172.25.62.250 搭建步骤: 1.配 ...

  7. linux服务器无法登录,linux服务器账号密码正确无法登录-Go语言中文社区

    登录服务器时,发现密码错误,输入后还是错误不能登录 最后发现登录日志中有pam_tally2(sshd:auth): user root (0) tally 53, deny 6 less /var/ ...

  8. mac装python3问题_Mac下使用homebrew安装Python3问题-Go语言中文社区

    在运行Python项目时需要Python3. 那么就安装Python3,使用homebrew安装,命令如下: brew install python3 安装成功即可使用. 由于不知道什么时候已经安装了 ...

  9. golang mysql 事务_golang的嵌套事务管理-Go语言中文社区

    golang的事务管理是一件很麻烦的事,,能不能像Java那样,通过Spring管理事务,最近琢磨了一下,写了一个demo,用来管理golang的事务,使其支持golang事务的嵌套调用. 其思想很简 ...

最新文章

  1. iOS 导航栏遮挡视图
  2. selenium-webdriver(python) (十六) --unittest 框架
  3. Struts1和Struts2的区别和对比
  4. 5u fb库 三菱plc_三菱FX5U PLC入门必备基础知识特点
  5. linux fedora升级操作
  6. linux下常用快捷键
  7. 的源码管理器中有感叹图标_玄说前端面试层层解析—关于 redux 的源码
  8. elk 搜索 语法_ELK:kibana使用的lucene查询语法
  9. Auto Layout 和 Constraints
  10. 国内首家!平头哥宣布开源RISC-V内核MCU芯片设计平台;IBM驳斥谷歌量子霸权主张;Facebook将赔偿350亿美元……...
  11. 获取当天日期、昨天日期
  12. 20145308刘昊阳 20145302张薇《信息安全系统设计基础》实验五:网络通信 实验报告...
  13. wiki源码_一个轻量级的企业Wiki和团队知识分享平台:MM-Wiki搭建教程
  14. python小爬虫,爬取文章(知乎专栏)片段
  15. jad的用法(反编译某目录下所有class)
  16. excel服务器数据同步修改,勤哲Excel服务器同步解决海量数据快速上传问题
  17. 关于protues仿真中的OLED显示模块的使用
  18. 宋红康JVM 学习笔记
  19. 冰达ROS机器人使用-实现slam建模、自主导航、避障
  20. Mozilla Firefox 全版本下载

热门文章

  1. vue生命周期函数面试题
  2. 损失函数、梯度和学习率的理解及用python实现梯度下降法
  3. c语言作业 电影院选座系统,c语言编程 电影院票务系统.wps
  4. 判断多边形的凹凸性和计算多边形面积:利用向量叉乘
  5. react黑马前端学习笔记
  6. 基于jsp的网上书店
  7. qmcflac转flac的python实现
  8. python定义变量类型为数字_python 学习(四)- 变量类型
  9. 购买安防监控摄像头时如何省钱
  10. python怎么修改字体_python怎么改字体 | 基础教程