如何在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