zookeeperという名前のユーザーの下で、Ubuntuサーバー16.04のブート後に(ロギング後ではなく)Zookeeperデーモンを開始したい。そこで、次のようにファイル/etc/rc.local
を変更しました。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo 'never'; defrag_file_pathname
su -c '$ZOOKEEPER_HOME/bin/zkServer.sh start' zookeeper &
exit 0
、su -c '$ZOOKEEPER_HOME/bin/zkServer.sh start' zookeeper &
の前にexit 0
行を追加します。しかし、プロセスは再起動後に開始されません!
ここで何が問題なのですか?
詳細:zookeeperユーザーはSudoグループ化し、パスワードを持っています。
details:ターミナルでコマンドsu -c '$ZOOKEEPER_HOME/bin/zkServer.sh start' zookeeper &
を実行するとき、実行するにはパスワードが必要です。
/etc/systemd/system/Zoo.service
に.service
ファイルを作成し、次の行を追加します。
[Unit]
Description=Zookeeper Daemon
Wants=syslog.target
[Service]
Type=forking
WorkingDirectory=/path/to/dir/of/interest
User=zookeeper
ExecStart=/home/zookeeper_home/bin/zkServer.sh
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=multi-user.target
次に、サービスをセットアップします。
Sudo systemctl start Zoo
Sudo systemctl enable Zoo
ステータスを確認します。
Sudo systemctl status Zoo
デーモンの作成の詳細については、以下をお読みください。
https://www.freedesktop.org/software/systemd/man/systemd.unit.html