使用 Cron 每分钟在文本文件中写入特定格式的时间

使用 Cron 每分钟在文本文件中写入特定格式的时间

我对 Linux 还不太熟悉。我最近想学习如何使用 Cron。所以我将以下行写入 crontab 文件,它起作用了:

* * * * * date >> //home/os/system-date.txt

system-date.txt此行将在每一分钟附加当前日期和时间。

当我在终端中运行以下命令时,时间以特定格式打印:

date +"%H-%M-%S"

例如,23-59-59被打印。

但是当我想用 Cron 执行此操作时,txt 文件中没有任何内容。具体来说,当我在 crontab 中写入以下行时

* * * * * date +"%H-%M-%S" >> //home/os/system-date.txt

什么都没发生。我不知道为什么。

答案1

您应该使用反斜杠( %) 来转义条目中的百分号 ( ),如下所示:crontab\

* * * * * date +"\%H-\%M-\%S" >>/home/os/system-date.txt 2>>/home/os/system-date.err

百分号在crontab条目中具有特殊含义:它们被解释为换行符。请参阅 crontab(5) 手册页

“第六个”字段(行的其余部分)指定要运行的命令。行的整个命令部分(直到换行符或%字符)将由 文件/bin/sh的 SHELL 变量中指定的 shell执行。除非使用反斜杠 ( ) 进行转义,否则命令中的crontab百分号 ( )将更改为换行符,并且第一个百分号之后的所有数据将作为标准输入发送到命令。无法将单个命令行拆分为多行,就像 shell 的尾随“ ”一样。%\%\

crontab另外,请注意条目中的命令将不会正常情况下,由 执行/bin/bash。因此,创建一个 Bash 脚本并从 调用该 Bash 脚本始终是一个好习惯crontab。另一点需要注意的是,PATH在执行的命令(或脚本)中,环境变量要简单得多crontab,因此再次使用完整路径名用于在编写的脚本中执行的命令,该脚本将被调用crontab

答案2

您可以创建一个简单的脚本文件(即 addDate.sh),例如:

#!/bin/bash
date +"%H-%M-%S" 2>&1 >> //home/os/system-date.txt

2>&1错误重定向至指定的输出文件。

并在你的 crontab 中运行这个脚本文件。

* * * * * /myscripts/addDate.sh

/myscripts您保存脚本文件的路径在哪里。

相关内容