На этот вопрос уже есть ответ здесь:
Я хочу запустить демон 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 &
перед выход 0
. Но после перезапуска процесс не запускается!
Что здесь не так?
подробности : Пользователь zookeeper находится в группе sudo и имеет пароль.
подробности : Когда я запускаю команду su -c '$ ZOOKEEPER_HOME / bin / zkServer.sh start' zookeeper &
в терминале, для запуска требуется пароль.
Создайте файл service
в /etc/systemd/system/zoo.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