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