如何在supervisor中执行脚本?

mitkmikd  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(626)

我在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如何确保主管查看的目录正确?

epggiuax

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.

相关问题