我在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-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如何确保主管查看的目录正确?
1条答案
按热度按时间epggiuax1#
http://supervisord.org/configuration.html#program-x截面设置
如果您查看示例文件(下面有几个屏幕,它们没有该点的锚),您将看到如下内容:
directory=/tmp
可以指定从哪个目录运行命令。supervisord还有一个用户选项。
user=hdfs
If supervisord runs as root, this UNIX user account will be used as the account which runs the program. If supervisord can’t switch to the specified user, the program will not be started.