创建一个 cron 作业并实时观察其输出

创建一个 cron 作业并实时观察其输出

看了这个论坛的提问和回答,感觉提问的门槛很高。至少对于像我这样对 Linux 知之甚少的人来说是这样。大多数关于 cron jobs 的问题都超出了我的能力范围,包括答案。因此,带着一点尴尬,我要问一些最简单的问题。

我想创建一个 cron 作业来显示每分钟的数据/时间。我想在控制台上实时看到这一点。我猜测这最终将通过 bash 脚本或 Python 完成,但现在我想使用命令行。

crontab -e
* * * * * /bin/date >> /home/pi/cron_date

我明白了星星的概念。我使用“which”命令来查找“date”在哪里。我将此“日期”信息重定向到一个尚未创建的文件,但当我按 Enter 键时将创建该文件,称为 cron_date。

我正在使用编辑器“nano”。 Control + O 是 WriteOut(我猜是保存/另存为)。

File Name to Write: /tmp/crontab.D3AZm/crontab

问题1:我已经使用了 Enter 键并让“nano”随心所欲地称呼它。我的 cron_date 文件仍然创建在 /home/pi 下。我知道给我的文件名“nano”是一个临时文件。但由于我已经决定要将此文件作为我自己的文件,我是否应该删除“nano”建议并将其替换为:

File Name to Write: /home/pi/cron_date

或者我在想一些我实际上不需要考虑的事情?目前,我一直让这个临时文件被命名为“nano”,而不是替换任何东西。

crontab: installing new crontab
crontab -l

我的文件存在。现在的问题是实时查看文件。我可以通过以下方式查看日期/时间:

nano cron_date
cat /home/pi/cron_date

但我必须使用相同的命令来更新信息。我对该文件的唯一实时视图是:

tail -f /home/pi/cron_date

问题2:有没有办法可以看到整个文件正在更新?

这只是我想做的一个爱好项目的开始。使用 Raspberry Pi 拍摄河底照片。我将制作一个业余遥控潜水器。如果我的带摄像头的 Raspberry Pi 浸入水中,我想测量温度和时间。如果它过热,我将能够看到并打开风扇。我可能说错了,但我对 cron 作业的理解是我的项目的起点。

Raspberry Pi 1 型号 B:使用 Debian。

答案1

当您运行该crontab -e命令时,它允许您编辑临时文件。当您退出编辑器时,将检查临时文件是否有语法错误,如果没有错误,则将其安装在包含用户的 crontab 的系统目录中。如果您将该文件保存到其他位置,则临时文件将不会被修改,因此您之前的 crontab 仍保留在原处。运行命令crontab -l来检查 crontab 的内容。

每个 cron 任务都在您的主目录中执行。这完全与您编辑的临时文件的位置无关。如果您希望任务在不同的目录中执行,请使用以下命令启动它cd,例如

* * * * * cd ~/subdir && date >>somefile

这将更改到您的主目录中的目录subdir(该目录必须已经存在),并且 的输出date将被写入/home/pi/subdir/somefile.如果cd命令失败(例如,因为目录不存在),则date由于操作员的原因,该命令将不会被执行&&

您不需要写入 的完整路径date,因为它位于默认命令搜索路径中。

我不确定“查看整个文件正在更新”是什么意思。该命令tail -f在执行时显示文件的最后 10 行,然后永远运行(或直到您终止它)并显示添加的行。如果你只想显示新添加的行(即启动时不显示任何内容tail,请告诉它输出 0 行:

tail -n 0 -f /home/pi/cron_date

如果您想显示整个文件,然后在添加新行时打印它们,请告诉tail从第 1 行开始。

tail -n +1 -f /home/pi/cron_date

相关内容