最近项目中有个php脚本进程自己偶尔挂掉了,每次都需要手动重启,用upstart可以轻松解决此问题

说到upstart之前,我先来说下linux的启动过程,分为5个阶段 内核的引导–》运行init–》系统初始化–》建立终端–》用户登录

而init程序的类型有

  • SysV: init, CentOS 5之前, 配置文件: /etc/inittab
  • Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system0
  • Uptart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf
    Ubutu从6.10就开始用upstart()代替原来的sysVint,centos也用systemd 代替sysvint,对服务进程的管理

Upstart作业的10种状态:

   waiting: 初始状态。starting: 作业开始启动。pre-start: 运行pre-start配置节。spawned: 运行script或exec节。post-start: 运行post-start节。running: 运行完post-start节之后的临时状态,表示作业正在运行(但可能没有关联的PID)。pre-stop:运行pre-stop节。stopping:运行完pre-stop节之后的临时状态。killed: 作业要被终止。post-stop: 运行post-stop节。作业的状态可通过inictl status命令输出的中status域来显示给用户。

因为upstart启动会自动加载/etc/init/ 目录下所有的*.conf文件,所以我在该目录下编辑文件
vim /etc/init/async_user_regist.conf


description "async user register"
author "sunny"
start on startup
stop on shutdown
respawn
script/usr/local/php7/bin/php -f /home/ubuntu/work/heyhou-backend/script/async_user_register.php
end script
pre-start scriptexec echo sync_user_register pre-start >> /home/ubuntu/upstart.txt
end script
post-start scriptexec echo async_user_register post-start >> /home/ubuntu/upstart.txt
end script
pre-stop scriptexec echo async_user_register pre-stop >> /home/ubuntu/upstart.txt
end script
post-stop scriptexec echo async_user_register post-stop >> /home/ubuntu/upstart.txt
end script

这个地方需要注意下。当sudo start async_user_regist 切换成了root用户,与当前用户ubuntu所在的环境不同,php最好写全路径/usr/local/php7/bin/php
initctl是一个具有root权限的管理员可以使用init进程管理控制工具,可以通过这个工具和Upstart init daemon进行通信。initctl可以用来启动或终止作业、列表作业、以及获取作业的状态、发出事件、重启init 进程等等。比如initctl list让您可以通过标识作业状态来深入了解系统操作,它告诉您目前正在等待哪些服务以及哪些服务目前是活动的。initctl工具还可以显示用于调试而接收的事件
initctl基本用法 

initctl help
作业 commands:start                       Start job.stop                        Stop job.restart                     Restart job.reload                      Send HUP signal to job.status                      Query status of job.list                        List known jobs.

保存 退出
sudo initctl start async_user_regist 或者sudo start async_user_regist 重点内容

upstart重新唤起php进程相关推荐

  1. 浅析 Linux 初始化 init 系统: UpStart

    浅析 Linux 初始化 init 系统: UpStart Upstart 简介 假如您使用的 Linux 发行版是 Ubuntu,很可能会发现在您的计算机上找不到/etc/inittab 文件了,这 ...

  2. 第二部分:浅析 Linux 初始化 init 系统:upstart

    Upstart 简介 假如您使用的 Linux 发行版是 Ubuntu,很可能会发现在您的计算机上找不到/etc/inittab 文件了,这是因为 Ubuntu 使用了一种被称为 upstart 的新 ...

  3. 浅析 Linux 初始化系统(系统服务管理和控制程序/init system) -- UpStart

    文章目录 一.Upstart 简介 (一)开发 Upstart 的缘由 (二)Upstart 的特点 二.Upstart 概念和术语 (一)Job (二)Job 生命周期 (三)事件 Event 1. ...

  4. 进程控制1--fork vfork函数

    linux系统调用fork()创建一个和当前进程完全相同的拷贝进程,其中父进程和子进程的代码段,堆栈段,数据段均独立 进程必须的4要点: a.要有一段程序供该进程运行 b.进程专用的系统堆栈空间. c ...

  5. 浅析 Linux 初始化 init 系统,第 2 部分: UpStart

    近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经淡出历史舞台,新系统 UpStart 和 systemd 各有特点,而越来越多的 Linux 发行版采纳了 ...

  6. Airflow 中文文档:用upstart运行Airflow

    Airflow可以与基于upstart的系统集成. Upstart会在系统启动时自动启动/etc/init具有相应*.conf文件的所有气流服务. 失败时,upstart会自动重启进程(直到达到*.c ...

  7. Linux运维实战:Linux清理僵尸进程

    一.僵尸进程简介: 官方解释:当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程. 一般在系统中僵尸进程的关键字为defunct或者dead,僵尸进程 ...

  8. upstart 启动

    Upstart 简介 假如您使用的 Linux 发行版是 Ubuntu,很可能会发现在您的计算机上找不到/etc/inittab 文件了,这是因为 Ubuntu 使用了一种被称为 upstart 的新 ...

  9. Linux系统init过程之 UpStart

    本文引自: 浅析 Linux 初始化 init 系统,第 2 部分: UpStart Upstart 简介 假如您使用的 Linux 发行版是 Ubuntu,很可能会发现在您的计算机上找不到/etc/ ...

最新文章

  1. 年度回顾:2018年的人工智能/机器学习惊喜及预测19年的走势
  2. 计算机教师资格证报考科目,还在纠结报考教师资格证该选哪个科目呢?看完这篇,你不再迷茫...
  3. html5中上传图片
  4. 大学计算机基础课程报告python-基于Python的“大学计算机基础”课程教学设计.doc...
  5. 程序员面试题精选100题(50)-树的子结构[数据结构]
  6. 解决Mysql无法导入存在null数据的问题
  7. Linux C 函数指针应用---回调函数
  8. Java ObjectOutputStream writeDouble()方法与示例
  9. python自定义异常_Python自定义异常
  10. 各种常用STL容器选择 需求分析笔记
  11. [LeetCode][easy]Longest Commong Prefix
  12. php smarty 调试模式,Smarty3调试
  13. anaconda 完全卸载——重装
  14. Latex(katex)csdn 希腊字母表示,数学符号,集合符号,特殊标记
  15. 工作中PUSH用到的统计命令
  16. android 8.1评测,[中文字幕]WP8.1版HTC One M8与Android版对比评测
  17. 苹果的黑科技:如何让按不动的触控板产生点按的感觉
  18. 国家、省、市三级联动下拉列表
  19. v-distpicker 插件只要省市
  20. linux下查看主频和内存,linux 查看内存主频

热门文章

  1. 安卓APP微信分享改来源名字(防封防检测)
  2. C生万物 | 指针入门到进阶史上最全面教程
  3. c语言feof函数_使用示例的C语言中的feof()函数
  4. openssh 低版本升级到OpenSSH 8.5p1版本的方法
  5. AES256加密解密
  6. 2 路QSFP+ 40G 光纤接口 、FMC+ 高性能 PCIE数据预处理板
  7. python 数据脱敏
  8. 视频采集相关知识之YUV格式详细解释
  9. 用最小二乘法OLS做回归,并解读结果
  10. KeilC STM32添加.c .h文件的方法