尝试了两种方式,[这篇博客][21]里的相对简单些。

## 案1. 使用 *systemctl* 命令

创建 *kibana.service* 文件

```shell

vim /lib/systemd/system/kibana.service

```

写入下面内容(需将 *ExecStart* 修改为实际的 *kibana* 文件路径)后保存(*Esc* => `:wq`)

```conf

[Unit]

Description=Kibana

After=network.target

[Service]

ExecStart=/usr/lib/kibana/kibana-6.8.3-linux-x86_64/bin/kibana

Type=simple

PIDFile=/var/run/kibana.pid

Restart=always

[Install]

WantedBy=default.target

```

通过 *systemctl* 设置自启动:

```shell

# 重新加载服务配置文件

sudo systemctl daemon-reload

# 开机自动启动

sudo systemctl enable kibana

# 启动

sudo systemctl start kibana

# 停止

sudo systemctl stop kibana

```

## 案2. 使用 *sysv-rc-conf* 命令

下面是[另一种][19]自启动的方式:

创建 `/etc/init.d/kibana` 文件:

```shell

vim /etc/init.d/kibana

```

写入下面内容(需将 `KIBANA_BIN` 修改为你的 *kibana* 保存路径)后保存(*Esc* => `:wq`)

```shell

#!/bin/sh

#

# /etc/init.d/kibana4_init -- startup script for kibana4

# bsmith@the408.com 2015-02-20; used elasticsearch init script as template

# https://github.com/akabdog/scripts/edit/master/kibana4_init

#

### BEGIN INIT INFO

# Provides: kibana4_init

# Required-Start: $network $remote_fs $named

# Required-Stop: $network $remote_fs $named

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Starts kibana4_init

# Description: Starts kibana4_init using start-stop-daemon

### END INIT INFO

#configure this with wherever you unpacked kibana:

KIBANA_BIN=/usr/lib/kibana/kibana-6.8.3-linux-x86_64/bin

NAME=kibana6

PID_FILE=/var/run/$NAME.pid

PATH=/bin:/usr/bin:/sbin:/usr/sbin:$KIBANA_BIN

DAEMON=$KIBANA_BIN/kibana

DESC="Kibana6"

if [ `id -u` -ne 0 ]; then

echo "You need root privileges to run this script"

exit 1

fi

./lib/lsb/init-functions

if [ -r /etc/default/rcS ]; then

./etc/default/rcS

fi

case "$1" in

start)

log_daemon_msg "Starting $DESC"

pid=`pidofproc -p $PID_FILE kibana`

if [ -n "$pid" ] ; then

log_begin_msg "Already running."

log_end_msg 0

exit 0

fi

# Start Daemon

start-stop-daemon --start --pidfile "$PID_FILE" --make-pidfile --background --exec $DAEMON

log_end_msg $?

;;

stop)

log_daemon_msg "Stopping $DESC"

if [ -f "$PID_FILE" ]; then

start-stop-daemon --stop --pidfile "$PID_FILE" \

--retry=TERM/20/KILL/5 >/dev/null

if [ $? -eq 1 ]; then

log_progress_msg "$DESC is not running but pid file exists, cleaning up"

elif [ $? -eq 3 ]; then

PID="`cat $PID_FILE`"

log_failure_msg "Failed to stop $DESC (pid $PID)"

exit 1

fi

rm -f "$PID_FILE"

else

log_progress_msg "(not running)"

fi

log_end_msg 0

;;

status)

status_of_proc -p $PID_FILE kibana kibana && exit 0 || exit $?

;;

restart|force-reload)

if [ -f "$PID_FILE" ]; then

$0 stop

sleep 1

fi

$0 start

;;

*)

log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}"

exit 1

;;

esac

exit 0

```

为启动脚本增加执行权限:

```shell

chmod +x /etc/init.d/kibana

```

配置开机启动:

文章中使用的 `chkconfig --add kibana` 执行的时候显示命令不存在,搜了下说是在 *ubuntu* 中 *chkconfig* 命令已被 *sysv-rc-conf* 命令替代。

```shell

# 安装 sysv-rc-conf 命令

apt install sysv-rc-conf

# 设置 Kibana 为自启动

sysv-rc-conf kibana on

# 查看系统当前服务

sysv-rc-conf --list

```

重启机器:

```shell

reboot

```

## 参考

1. [Debian 9 或 ubuntu 16.04 使用 chkconfig 设置开机自启动错误 command not found 的解决方法][18]

1. [linux kibana后台启动及自启动脚本][19]

1. [centos 7 安装 kibana 7.x 并设置开机自动启动][20]

1. [Kibana的搭建与配置][21]

[18]:https://www.quyu.net/info/1591.html (Debian 9 或 ubuntu 16.04 使用 chkconfig 设置开机自启动错误 command not found 的解决方法)

[19]:https://my.oschina.net/sluggarddd/blog/713724 (linux kibana后台启动及自启动脚本)

[20]:https://www.jianshu.com/p/0b6e5ea527e1 (centos 7 安装 kibana 7.x 并设置开机自动启动)

[21]:https://linuxeye.com/467.html (Kibana的搭建与配置)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐