次のことが起こる理由を理解するのに役立つ人はいますか?
$ cd /etc/init.d; sudo service hadoop-hdfs-namenode status
Hadoop namenode is running [ OK ]
$ sudo /etc/init.d/hadoop-hdfs-namenode status
Hadoop namenode is running [ OK ]
$ sudo service /etc/init.d/hadoop-hdfs-namenode status
/etc/init.d/hadoop-hdfs-namenode: unrecognized service
$ cd /etc/init.d; sudo hadoop-hdfs-namenode status
sudo: hadoop-hdfs-namenode: command not found
デフォルトでは、以前に追加した/etc/init.d/
場合は実行するには追加する必要があります。そうしないとエラーが発生することがわかりました。service
hadoop-hdfs-namenode
command not found
しかし、ホームディレクトリにあれば追加しなくても大丈夫です。service
実際、service
どこにでも追加することは常に間違っています。
なぜservice
必要ではなく、ホームディレクトリに追加するのが常に間違っているのですか?
答え1
一般的に.
あなたの道にはありません。したがって、スクリプトが実行されるパスを指定する必要があります。これが現在のディレクトリの場合は、次のようにします。
[cloudera@quickstart ~]$ cd /etc/init.d; sudo ./hadoop-hdfs-namenode status
の場合、service
サービス名の前にパスを指定する必要はありません。これはうまくいきます:
[cloudera@quickstart ~]$ sudo service hadoop-hdfs-namenode status