关于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

原文地址:https://www.cnblogs.com/BadCodeBuilder/p/13227664.html