zoukankan      html  css  js  c++  java
  • linux自启动、定时启动脚本

    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
    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
    */1 * * * * root /bin/isRun >> /web/log/zmqlog.txt 2>&1

    前面的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有没有正常的运行,基本上保证了客户端能够正常请求了。
  • 相关阅读:
    Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据
    Android商城开发系列(五)—— 商城首页回到顶部和搜索框布局实现
    Android商城开发系列(一)——开篇
    Android商城开发系列(四)——butterknife的使用
    Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏
    Android商城开发系列(二)——App启动欢迎页面制作
    使用git克隆指定分支的代码
    mongodb 3.x WiredTiger存储优化测试
    oracle 文件导出
    本地安装gem install --local redis-stat-0.4.13.gem
  • 原文地址:https://www.cnblogs.com/kross/p/3236231.html
Copyright © 2011-2022 走看看