如何在Ubuntu服务器16.04中的特定用户下启动后启动Zookeeper守护程序

我想在Ubuntu服务器16.04启动后(而不是在记录之后)在名为zookeeper的用户下启动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 

,在exit 0之前添加su -c '$ZOOKEEPER_HOME/bin/zkServer.sh start' zookeeper & 。 但重启后该过程未启动!

这有什么不对?

详细信息zookeeper用户位于sudo组并且有密码。

详细信息 :当我运行命令su -c '$ZOOKEEPER_HOME/bin/zkServer.sh start' zookeeper & in terminal时,它需要密码才能运行。

创建一个 。 /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