我在尝试通过Chef运行shell脚本时遇到问题(使用docker-provisioning)。
这就是我尝试执行脚本的方式:
bash 'shell_try' do
user "root"
run = "#{some_path_to_script}/my_script.sh some_params"
code " #{run} > stdout.txt 2> stderr.txt"
end
(请注意,此脚本应运行另一个脚本,进程和写日志)
输出中没有错误,但是当我登录到计算机并且运行ps aux
进程未运行时。
我认为权限(或env变量)有问题,因为当我手动尝试相同的命令时 - 它可以工作。
答案 0 :(得分:1)
bash
资源只是直接运行提供的脚本文本,如果您想运行长时间运行的进程,通常会设置Upstart或systemd服务并使用service
资源启动它
答案 1 :(得分:1)
最后找到一个解决方案(感谢@coderanger) -
安装主管:
将我的服务添加到主管:
supervisor_service" name"做 动作:启用 #action:开始 命令' /path/script.sh start'
端
运行主管服务
全部完成!
答案 2 :(得分:0)
请参阅您的资源的主厨文档:https://docs.chef.io/resource_bash.html。 bash
资源不支持run
属性。 code
属性的文本作为bash脚本运行。除非资源另有说明,否则默认操作是run
脚本。
bash 'shell_try' do
user "root"
code " #{run} > stdout.txt 2> stderr.txt"
action :run
end
将code
属性写入临时文件,然后使用资源中指定的属性运行该属性。
此时此行run = "#{some_path_to_script}/my_script.sh some_params"
不执行任何操作。