我需要在Ec2实例的启动时启动诸如Elasticsearch,kafka之类的服务
我在crontab上尝试过@reboot,但是出了点问题
Shell脚本:
#!/bin/sh
nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
Crontab条目:
@reboot sh /home/abhijeet/startServices.sh
我不知道我要去哪里错了
cron
在修改后的环境中运行shell,并且在该环境中运行的shell最少PATH
且大概/usr/bin
不存在,因此/usr/bin/nohup
未找到。
你可以:
添加/usr/bin
到中PATH
,而不是修改您crontab
的,您应该在脚本顶部添加以下内容:
#!/bin/sh
export PATH="$PATH":/usr/bin
nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
使用绝对路径nohup
:
#!/bin/sh
/usr/bin/nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
请注意,根据crontab
条目,您正在执行脚本作为sh
(dash
)的参数,同时具有完全相同的shebang。在这种情况下,这没有什么区别,但是如果shebang不同,请注意这一点。通常,可以使脚本可执行,并使用shebang指示所需的解释器。
现在,最重要的部分。cron
在它们各自的子外壳中运行所有给定的作业,并并行(非阻塞)生成这些子外壳,即以并行方式运行作业。因此,您不需要nohup
and和backgrounding(&
),只需这样做(根据您的示例,该/home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch
文件是可执行的):
@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句