• Linux监控服务并主动重启


    Linux查询后台进程,如果没有进程号,则重启服务:

    #!/bin/sh
    basepath=$(cd `dirname $0`; pwd)
    while true
    do
        procnum=`ps -ef|grep "服务名称"|grep -v grep|wc -l`
        if [ $procnum -eq 0 ]
        then
            #启动命令
            echo `date +%Y-%m-%d` `date +%H:%M:%S`  "restart 服务" >>$basepath/shell.log
        fi
        sleep 1
    done

     结合  crontab命令
    对于24小时开机运行的服务器可能用不到的,但是对非24小时开机,又想定时运行任务的机器还是十分有用的。

    crontab [-u user] [-l | -r | -e] [-i]
    -l:列出当前用户的计划任务。
    -e:编辑当前用户的计划任务。
    -r:删除当前用户的所有计划任务。即删除/var/spool/cron/USERNAME文件。
    -u:管理指定用户的计划任务,仅root有权限。
    -i:在使用-r选项删除所有任务时提示用户确认。

    crontab的语法

    crontab分为两类:
    1、系统cron任务
    系统的crontab存放在 /etc/crontab

    # vim /etc/crontab
    
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed


    a、每一行定义一个周期性任务,共7个字段。
    b、此处的环境变量不同于用户登录后获得的环境,因此建议命令使用绝对路径。
    c、执行结果会发送邮件给mailto指定的用户。

    2、用户cron任务
    用户的crontab文件存放在 /var/spool/cron/USERNAME
    # crontab -e -u USERNAME

    a、每一行定义一个周期性任务,共6个字段。
    b、此处的环境变量不同于用户登录后获得的环境,因此建议命令使用绝对路径。
    c、执行结果会发送邮件给当前用户。
    星号(*)匹配所有有效的值。
    短横线(-)表示范围连续取值。
    逗号(,)表示离散取值。
    正斜线(/)指定间隔频率。例如,0-59/2 在分钟字段表示每两分钟。
     
    指定的时间点不能被步长整除时,其意义将不存在。例如 */7 * * * *

    注意:%在crontab中被认为是newline,使用时需要用 转义。比如crontab文件中,如果有 "date +%Y%m%d",必须替换为:"date +\%Y\%m\%d"。
    crontab的最小时间单位为”分钟“,想完成”秒“级任务

    分钟    小时       几号       月份     星期几
    */5      *          *         *        *              每5分钟执行一次
    3        *          *         *        *              每小时的第3分钟执行一次
    3        4          *         *        5              每周5的4点3分执行一次
    5        6          7         *        *              每月的7号的6点5分执行一次
    7        8          9         10       *              每年的10月9号8点7分执行一次
    9        8          *         *        3,7            每周3和周日的8点9分
    0        8,20       *         *        3,7            每周3和周日的8点和20点执行一次
    0        9-18       *         *        1-5            周一到周五的9-18点,即工作时间内的每小时
    0        7          25        12       *              每年的12月25号7点执行一次

    查看所有用户的crontab
    # for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done  
    查看cron的日志
    # tail -50f /var/log/cron

  • 相关阅读:
    0 Explore TreeView
    按钮颜色选择器
    颜色组合框
    Get Files from Directory
    05.0 图片
    WINAPI 变量(2861个)
    为字符串增加50个空格
    让DataGridView显示行号
    相对路径
    SpecialFolder
  • 原文地址:https://www.cnblogs.com/hello-wei/p/9512361.html
Copyright © 2020-2023  润新知