linux开机自启动

想让一个程序、脚本开机自启动,可以在/etc/rc.d目录下面找到rc.local文件,编辑该文件,在尾部加上需要运行的命令即可。

如:

#cd /etc/rc.d
#sudo vim rc.local

我需要让服务器在开机时运行一个php程序(ZMQServer.php),就加上这样一句话。

#前面是php的绝对路径,后面的部分是需要运行的程序的绝对路径
/usr/local/bin/php /web/app/ZMQServer.php

这样就ok了。

linux定时启动脚本

以上运行的php脚本会因为程序上的不可预知的错误而报错停止,这样客户端就无法连接到服务器了,因此需要一个定时检测该程序是否存在进程中,如果不存在就要重启的脚本,并且让它定时启动进行检测。

1.第一步,需要看看进程里是否有这个程序运行,使用如下的命令

#ps aux | grep ZMQServer.php | grep -v grep

第一部分是显示出所有的进程信息。

第二部分是将前面的结果拿来正则ZMQServer.php,结果是必然有一条grep进程,如果有ZMQServer.php运行了,则有ZMQServer.php。

第三部分是将grep进程自身给屏蔽掉。最后的结果就是如果后台运行了ZMQServer.php则有结果,否则是空的结果。

2.不可能人工手动的使用这条命令检查是否进程在运行,所以将它写成一个脚本(/bin/isRun)封装起来。

#!/bin/sh
ret=`ps aux|grep ZMQServer.php|grep -v grep`
if [ -n "$ret" ]
then
echo "is running!";
echo &date "+%x %X----->ZMQServer.php is running"
else
/usr/local/bin/php /web/app/ZMQServer.php&
echo &date "+%x %X----->ZMQServer.php have restarted"
fi

这条脚本的作用显而易见,就是判断ZMQServer.php是否运行,如果运行了就将当前的时间与信息输出,如果没有运行就重启ZMQServer.php并输出信息。

3.做到这一步,已经算是半自动化了,为了能实现完全自动化,就得将上面的脚本放入自动运行的程序中。

定时执行的程序叫cron,先要检查下它是否在进程中运行了。

#ps aux | grep cron

如果没有运行可以通过下面的命令让它启动起来。

#cron停止
/etc/rc.d/init.d/crond stop

#cron启动
/etc/rc.d/init.d/crond start

/etc下有一个crontab文件,该文件记录了一些定时启动的内容。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/ # run-parts
* * * * root run-parts /etc/cron.hourly
* * * root run-parts /etc/cron.daily
* * root run-parts /etc/cron.weekly
* * root run-parts /etc/cron.monthly
*/ * * * * root /bin/isRun >> /web/log/zmqlog.txt >&

前面的5个*分别代表着

分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
 
*表示任意的意思。
*/5 * * * * 表示每天每5分钟执行一次
* */2 * * * 表示每天每两小时执行一次
* 2 * * * 表示每天的02:00执行一次
 
上面的run-parts指的是运行目录里的内容,后面的cron.dailycron.weekly等都是文件夹,里面放了一些脚本文件,我为了图方便,就直接写在这个文件上了,我想让检测脚本(/bin/isRun)每分钟执行一次(实际上* * * * *和*/1 * * * *)是一样的效果,就加上最后面的那条就行了。
 
需要注意的一点就是,所有的东西都写成绝对路径,这样是最妥当的。
 
这么一来,服务器每分钟都会执行下/bin/isRun来判断ZMQServer.php有没有正常的运行,基本上保证了客户端能够正常请求了。

linux自启动、定时启动脚本的更多相关文章

  1. Linux下定时执行脚本(转自Decode360)

    文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 ...

  2. 实用脚本 2 -- Linux下定时执行脚本

    今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...

  3. 每天一个linux命令--定时启动

    1.设置启动的时间,输入crontab -e命令 设置一种编辑器,进入编辑界面,设置启动的时间为每5分钟启动一次wanghy.sh脚本 # m h dom mon dow command # */ * ...

  4. linux 的开机启动脚本顺序

    linux 开机启动脚本顺序 linux 开机启动脚本顺序. 第一步:启动内核 第二步:执行init (配置文件/etc/inittab) 第三步:启动相应的脚本,并且打开终端/etc/init.d  ...

  5. linux系统初始化——启动脚本是如何工作的

    启动脚本是如何工作的 Linux 使用的是基于 运行级(run-levels) 概念的称为 SysVinit 的专用启动工具.它在不同的系统上可能是完全不一样的,所以不能认为一个脚本在某个 Linux ...

  6. linux中tomcat启动脚本:关闭、发布、重启、测试是否成功

    说明 在使用jenkins持续集成时,需要实现自动发布包到tomcat.该脚本实现了在jenkins将包发送到linux服务器上后的自动关闭.发布.启动.测试启动是否成功的过程 思路 该思路以tomc ...

  7. Linux上定时shell脚本

    原文链接:http://www.92coder.com/9-Linux%E5%AE%9A%E6%97%B6shell%E8%84%9A%E6%9C%AC/#more 本文主要介绍在Linux系统上部署 ...

  8. windows和Linux下定时启动或关闭服务

    http://blog.csdn.net/clare504/article/details/17410643 1.Windows下的定时启动程序可以采用系统的计划和任务,定时启动服务可以在计划任务中添 ...

  9. Linux创建Jenkins启动脚本以及开机启动服务

    1.jenkins.sh #!/bin/bash ###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限 JAVA_HOME=/usr/lib/jdk1.8.0 ...

随机推荐

  1. python学习笔记(三):numpy基础

    Counter函数可以对列表中数据进行统计每一个有多少种 most_common(10)可以提取前十位 from collections import Counter a = ['q','q','w' ...

  2. 20155213 2016-2017-2 《Java程序设计》第一周学习总结

    20155213 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 了解JVM.JRE与JDK,并下载.安装.测试JDK JVM JVM是Java Virtua ...

  3. 20155239 2016-2017-2 《Java程序设计》第10周学习总(2017-04-22 16:26

    教材学习 1.基本概念划分 OIS的七层协议: 应用层.表示层.会话层.运输层.网络层.数据链路层.物理层. OIS的五层协议: 应用层.运输层.网络层.数据链路层.物理层. 由下往上介绍如下: 2. ...

  4. 【私人向】Java复习笔记

    此笔记学习于慕课网:Java入门第一季-第三季,想学的可以点击链接进行学习,笔记仅为私人收藏 建议学习时间:2-3天(极速版) 数据类型 基本数据类型存的是数据本身 引用类型变量(class.inte ...

  5. DSP28335做FFT傅里叶变换

    1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列是有C2000 ware这个库的.方便很多,不过目前不确定在C5000上运行的FFT能直接迁移到DS ...

  6. [cogs347]地震

    COGS:地震(平衡树) COGS上一道题...文件名是equake 还是又打了一遍板子... 加个lazy标记就行了... 注意查询时先下传标记(lazy) // It is made by XZZ ...

  7. sqoop 数据迁移

    sqoop 数据迁移 1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIVE.H ...

  8. R的数据结构

    R语言中的数据结构包括标量.向量.矩阵.数组.列表以及数据框 目录 1 向量 2 矩阵 3 数据框 1 向量 向量是用于存储单一数据类型(数值.字符.逻辑值)的一维数组,示例如下: a <- c ...

  9. 九、Django之ORM

    一.ORM概述 用于实现面向对象编程语言里不同类型系统的数据之间的转换,换言之,就是用面向对象的方式去操作数据库的创建表以及增删改查等操作. 到目前为止,当我们的程序涉及到数据库相关操作时,一般操作流 ...

  10. C# List<string> 的Contains方法 是区分大小写的

    List<string> 的Contains  是区分大小写的 代码: List<string> test = new List<string>(); test.A ...