• 关于crontab的爱恨情仇


    上课讲到了Linux的实时数据收集,老师讲到了crontab,一看直接就是个定时器,这种好东西怎么能不搞一个呢?找教程搞一个。找到的教程是这样的,第一步让你使用crontab -u $username -e(此处的$username是需要创建定时命令的用户的用户名),如果你没有创建过定时命令,就会给你一个提示,告诉你你没有定时命令,并给你创建一个新的文件,如下图

    Something Incorrect

    看上去没啥问题啊。好嘛,看看文件存哪儿了,存/tmp目录下面啦,要是不改设置,重启就直接没了。当时因为时间紧急就没继续搞。今天有空来解决一下这个问题。

    解决过程

    看crontab的help,是这样的

    pi@raspberrypi:~ $ crontab -h
    crontab: invalid option -- 'h'
    crontab: usage error: unrecognized option
    usage:  crontab [-u user] file
            crontab [ -u user ] [ -i ] { -e | -l | -r }
                    (default operation is replace, per 1003.2)
            -e      (edit user's crontab)
            -l      (list user's crontab)
            -r      (delete user's crontab)
            -i      (prompt before deleting user's crontab)
    

    (暴露是树莓派了)用法的第一行显示的是指向一个文件,既然是第一行肯定是最常用的命令,这就是在说crontab需要一个的文件来决定定时命令。自己创建一个怎么样呢?

    touch crontest
    touch mylog
    echo "SHELL=/bin/sh" >> crontest
    echo "*/1 * * * * echo 'hello, world' >> mylog" >> crontest
    crontab -u pi crontest
    sudo service cron restart
    

    过了1分钟,准确点说是秒到达0的时候,mylog文件里面真的有个hello, world在里面了,Done!

    后来看了一下命令猜想了一下,如果没有include之类的东西的话,crontab只能运行一个文件的定时命令了。这一点我没有考证,不过也没关系,一个文件也是够了,而且看/etc下面是有小时、天、月命令等文件夹的,看来应该是可以include的。

    其它问题

    在crontab里面想要定时在控制台echo什么东西好像并不能执行,不知道是不是什么bug

  • 相关阅读:
    ubuntu 下redis的安装简介
    Oracle 的几种循环方式介绍
    NIO 概述 与 通信实例
    io 的一些简单说明及使用
    webSocket的 原理 及 实现
    事务 与事务的 隔离级别 简单说明
    case 函数的简单使用记录下
    java HttpClient 忽略证书的信任的实现 MySSLProtocolSocketFactory
    南京小吃八绝
    JavaScript图表库(百度)
  • 原文地址:https://www.cnblogs.com/BadCodeBuilder/p/13227664.html
Copyright © 2020-2023  润新知