我是 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 脚本中并与系统一起启动,也许还有某种看门狗来检查这个东西。