在 amazon ec2 linux 中的特定时间执行脚本

在 amazon ec2 linux 中的特定时间执行脚本

我是 amazon ec2 和 linux 的新手,

我正在使用 pentaho kettle 进行工作,为了启动我的工作进程,我在 amazon ec2 实例中使用以下命令,

cd /dev/pdi/data-integration (reaching to specific directory)

screen (the process which never die so using screen for this)

./kitchen.sh -file="/dev/pdi/pdi_transformations_jobs/capella_job.kjb" -param:ROUTE_TO_LOG="/dev/logs/capellajobOutput.log" (for starting batch file)

现在我想做一些事情,比如我想在特定的时间启动我的 ec2 实例以及工作流程。

我可以为此编写一个 cron 脚本,但是我读到某处说 amazon ec2 实例不支持 cron,对吗?

我将上述 3 条命令放在 1 个 .sh 文件中,并尝试创建类似批处理文件的文件,以便它自动执行所有三个命令,但我收到了“没有这样的文件或目录并且未找到命令”之类的错误

所以有人可以向我解释哪里出了问题以及我应该如何实现某件事吗?

答案1

  • 首先,EC2 应该支持cron。如果你不确定,为什么不直接测试一下呢?

  • 其次,要运行脚本,它需要具有执行权限,并且需要位于您的路径中,或者使用完整文件名(包括位置)调用。请参阅man chmod

  • 第三,仅screen在脚本内部调用然后期望以下命令在screen会话内运行,这是行不通的。

  • 您不想重复地(例如通过 cron)运行一个永不结束的作业 - 您将以很多这样的作业结束,并且您的系统很快就会超载。

  • 我不知道 Pentaho kettle,但它/dev/应该是一个目录发展文件,不要使用此名称,它是保留给设备文件,这对于 Unix/Linux 来说非常重要,你永远不应该将 if 用于其他用途。

最后,我不确定你真正想要完成什么。这个kitchen.sh脚本应该永久运行吗?在这种情况下,你不需要(也永远不应该)尝试通过任何定时方法(如)来运行它cron,但需要将它放入 init 脚本中并与系统一起启动,也许还有某种看门狗来检查这个东西。

相关内容