Docker 如何在supervisor中执行脚本?
我在docker的CMD中指定了start-all.sh。它按预期工作 全部启动。shDocker 如何在supervisor中执行脚本?,docker,hadoop,supervisord,Docker,Hadoop,Supervisord,我在docker的CMD中指定了start-all.sh。它按预期工作 全部启动。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-mapreduc
#!/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-uhdfs-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。如何确保主管查看的目录正确?
如果查看示例文件(下面的几个屏幕上没有该点的锚),您将看到如下内容:
directory=/tmp
您可以指定从哪个目录运行命令
supervisord还有一个用户选项
user=hdfs
如果supervisord以root用户身份运行,则此UNIX用户帐户将用作运行该程序的帐户。如果supervisord无法切换到指定的用户,程序将不会启动。
我尝试过。但它不起作用。但是command=bash-c”/usr/local/start all.h“
做了我想做的事