在部署到 AWS Elastic Beanstalk 期间,我想做两件事:
- 获取一个包含 cron 条目的文件并将此文件放在 /etc/cron.d/
- 更改包含在单个目录中的 shell 脚本的文件权限,以便它们可以由 cron 执行
在我的 .ebextensions 文件夹中,我有以下内容:
container_commands:
00fix_script_permissions:
command: "chmod u+x /var/app/current/scripts/*"
01setup_cron:
command: "cat .ebextensions/propel_mis_crons.txt > /etc/cron.d/propel_mis_crons && chmod 644 /etc/cron.d/propel_mis_crons"
leader_only: true
.ebextensions 文件夹中的 propel_mis_crons.txt 有:
# m h dom mon dow command
MAILTO="dev@23sparks.com"
* * * * * root /var/app/current/scripts/current_time.sh
我检查了部署日志,可以看到以下内容:
2013-08-09 14:27:13,633 [DEBUG] Running command 00fix_permissions_dirs
2013-08-09 14:27:13,633 [DEBUG] Generating defaults for command 00fix_permissions_dirs
<<<
2013-08-09 14:27:13,736 [DEBUG] No test for command 00fix_permissions_dirs
2013-08-09 14:27:13,752 [INFO] Command 00fix_permissions_dirs succeeded
2013-08-09 14:27:13,753 [DEBUG] Command 00fix_permissions_dirs output:
2013-08-09 14:27:13,753 [DEBUG] Running command 01setup_cron
2013-08-09 14:27:13,753 [DEBUG] Generating defaults for command 01setup_cron
<<<
2013-08-09 14:27:13,829 [DEBUG] Running test for command 01setup_cron
2013-08-09 14:27:13,846 [DEBUG] Test command output:
2013-08-09 14:27:13,847 [DEBUG] Test for command 01setup_cron passed
2013-08-09 14:27:13,871 [INFO] Command 01setup_cron succeeded
2013-08-09 14:27:13,872 [DEBUG] Command 01setup_cron output:
但是,在部署时,脚本目录中所有文件的权限设置不正确,并且 cron 不运行。我不确定 cron 未运行是否由于权限问题而未运行,或者是否有其他原因阻止了这种情况。这是在 PHP5.4 64 位 Amazon Linux 实例上运行的。
希望能在这方面提供一些帮助。随着时间的推移,很有可能会添加由 cron 触发的新 shell 脚本。