gpt4 book ai didi

docker - 我如何在主管中执行脚本?

转载 作者:可可西里 更新时间:2023-11-01 15:34:05 26 4
gpt4 key购买 nike

我有一个 start-all.sh 我在 docker 的 CMD 中指定了它。它按预期工作。

start-all.sh

 #!/usr/bin/env bash

echo "It's Me Dear"

/etc/init.d/hadoop-hdfs-namenode start
/etc/init.d/hadoop-hdfs-datanode start
/etc/init.d/hadoop-hdfs-secondarynamenode start
/etc/init.d/hadoop-0.20-mapreduce-tasktracker start

sudo -u hdfs hadoop fs -chmod 777 /
/etc/init.d/hadoop-0.20-mapreduce-jobtracker start

/etc/init.d/flume-ng-agent start

/bin/bash

我无法在 supervisord 中指定相同的文件。我试过了

 [program:long_script]
command=bash /usr/local/start-all.sh

start-all.sh 出现在同一个文件中,模式为 777。我该如何解决这个问题?

 [program:job_tracker]
command=bash -c "/etc/init.d/hadoop-0.20-mapreduce-jobtracker start"

它开始和退出。我检查了日志文件。它说权限被拒绝。我必须在同一命令中添加 sudo -u hdfs hadoop fs -chmod 777/

 command=bash -c "sudo -u hdfs hadoop fs -chmod 777 /;/etc/init.d/hadoop-0.20-mapreduce-jobtracker start"

这是行不通的。我指定了两个命令,但这也不起作用。有什么想法吗?

编辑

我的文件存在于/usr/local/start-all.sh 我如何确保主管正在查看正确的目录?

最佳答案

http://supervisord.org/configuration.html#program-x-section-settings

如果您查看示例文件(向下几个屏幕,他们没有那个位置的 anchor ),您会看到如下内容:

目录=/tmp

您可以指定从哪个目录运行命令。

supervisord 也有一个用户选项。

user=hdfs

如果 supervisord 以 root 身份运行,则此 UNIX 用户帐户将用作运行该程序的帐户。如果supervisord不能切换到指定用户,则程序不会启动。

关于docker - 我如何在主管中执行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com