如何使用 Crontab 仅在特定日期的 Linux 启动时打开文件?

如何使用 Crontab 仅在特定日期的 Linux 启动时打开文件?
matthew@matthew-pc:~$ crontab -l 
[...]
@reboot 1 5 * sleep 10s && export DISPLAY=:0 && xdg-open ~/@/Testing.jpg

“Testing.jpg”在 5 月 1 日 Linux 启动时未打开。
如何使用 Crontab 在特定日期(例如 5 月 2 日)Linux 启动时打开文件?

答案1

您不能将时间表与@reboot-混合使用cron,不支持这一点。

如果您想在特定日期的 Linux 启动时打开文件,请执行以下操作:

  1. 编写一个脚本 (chkdate.sh),检查日期是否与(例如)5 月 2 日相匹配

  2. 使用@reboot规范cron来运行chkdate.sh

[编辑:re chkdate.sh,一个用于检查今天日期与特定日期的脚本]:

你可以写一个bash脚本来完成此任务。date中的函数将bash返回今天的日期。有了这个,您只需根据特定日期测试今天的日期,并采取所需的操作。这是解决这个问题的一种方法:

注意:我使用基于 Debian 的 Linux 发行版,因此以下内容反映了这一点。您的系统可能会有所不同。

  1. 使用该date功能:打开一个“终端窗口”,或者简单地获取系统上的命令提示符。在命令提示符下($在我的例子中),输入date +%Y-%m-%d
$ date +%Y-%m-%d
2019-05-02
$
  1. 指定date所需的格式:date可以提供多种不同格式的输出。在上面的示例中,格式为“年-月-日”。如果您只对月份和日期感兴趣,那么命令将是date +%m-%d
$ date +%m-%d
05-02
$
  1. 无论您需要什么格式,您都必须学会使用系统文档。要了解如何指示date以您需要的格式提供其输出,您需要阅读其文档:
$ man date
...
q
$

请注意,单个字符q将关闭man页面。

  1. 一旦决定了date输出的格式,您就可以开始编写脚本了chkdate.sh。让我们创建该文件,并在易于使用的文本编辑器中打开它:
$ nano ~/chkdate.sh
...

您可以开始输入脚本;例如:

#!/bin/bash
SOMEDAY="05-02"
TODAY=`date +%m-%d`
if [ $TODAY == $SOMEDAY ]
then 
   echo "Today is the day!"
else
   echo "Today is NOT the day."
fi

现在,保存文件^o并退出nano编辑器^x

  1. 您需要设置文件权限以使脚本可执行,然后可以运行它:
$ chmod 755 ~/chkdate.sh
$ ~/chkdate.sh 
Today is the day!
$ 

因为今天是 5 月 2,所以语句then的条件if是执行 ( echo "Today is the day!")。在一年中的任何其他一天,该else声明都将被执行。另请注意,没有必要有一个else条件 - 如果您不需要它,您可以简单地忽略它。

  1. 假设执行此命令,您可以修改脚本以将echo ...命令替换为您要使用的命令。

相关内容