将脚本运行到 tmp 文件中,文件名为 hour_seconds

将脚本运行到 tmp 文件中,文件名为 hour_seconds

我试图确保我的 cron 任务每分钟都在执行,我想将每次运行的输出记录到 /var/tmp 中的某个位置。

我的 cron 文件如下所示:

hours_minutes_file=/var/tmp/moo_tools/runs/`date +"%H_%M"`
* * * * * /bin/bash -l -c 'cd /home/power_user/apps/transactional_processing/current && RAILS_ENV=production bundle exec rake moo_tools:process_records --silent ' > "$hours_minutes_file" 2>&1 

结果文件看起来不像我期望的那样。我期望看到这样的文件,其中/var/tmp/moo_tools/runs/00:1100显示一天中的小时数和11分钟数。

相反,我得到的文件名是这样的(我手动创建了 00_33 和 00_34):

ls /var/tmp/moo_tools/runs/
 00_33   00_34  '`date +"%H_%M"`'

我做错了什么?为什么字符串替换没有“起作用”?我尝试使用“${hours_minutes_file}”,但也没有用。我是 Bash 初学者,不知道如何解决这个问题。

答案1

hours_minutes_file由 cron 设置,而不是由 shell 设置。Cron 不会解释反引号或括号 ( { }),这些符号会成为文件名的一部分。

我会将包括创建该输出文件的逻辑放入 shell 脚本中,然后从 cron 执行该脚本。作为理想的副作用,您会得到一个更干净的 crontab。

相关内容