web-dev-qa-db-ja.com

Ubuntuサーバー16.04で特定のユーザーで起動した後にZookeeperデーモンを起動する方法

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 &を実行するとき、実行するにはパスワードが必要です。

1

/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

3
George Udosen