编写了一个tomcat开机自启动脚本,执行没问题,但是在安装mysql的时候出现了大量的:

insserv: warning: script 'S20tomcat' missing LSB tags and overridesinsserv: warning: script 'tomcat' missing LSB tags and overridesinsserv: There is a loop at service rmnologin if started insserv: There is a loop between service rmnologin and mountnfs if started insserv: loop involving service mountnfs at depth 6 insserv: loop involving service networking at depth 5 insserv: There is a loop between service tomcat and hwclock if started insserv: loop involving service hwclock at depth 3 insserv: loop involving service mountdevsubfs at depth 2 insserv: There is a loop between service tomcat and udev if started insserv: loop involving service udev at depth 1 insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting tomcat depends on rmnologin and therefore on system facility `$all' which can not be true!

居然还导致mysql安装后的自动配置提示失败,按照LSB tags规范改写脚本如下(debian8环境):

#!/bin/bash### BEGIN INIT INFO# Provides:          bbzhh.com# Required-Start:    $local_fs $network# Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: tomcat service # Description: tomcat service daemon ### END INIT INFO # # description: Apache Tomcat init script # processname: tomcat # chkconfig: 234 20 80 # # # Copyright (C) 2014 Miglen Evlogiev # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see 
. # # Initially forked from: gist.github.com/valotas/1000094 # Source: gist.github.com/miglen/5590986 #Location of JAVA_HOME (bin files) export JAVA_HOME=/opt/jdk #Add Java binary files to PATH export PATH=$JAVA_HOME/bin:$PATH #CATALINA_HOME is the location of the bin files of Tomcat export CATALINA_HOME=/opt/tomcat #CATALINA_BASE is the location of the configuration files of this instance of Tomcat export CATALINA_BASE=/opt/tomcat export CATALINA_BOOTSTRAP=/opt/tomcat/bin/bootstrap.jar #TOMCAT_USER is the default user of tomcat export TOMCAT_USER=tomcat #TOMCAT_USAGE is the message if this script is called without any options TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" #SHUTDOWN_WAIT is wait time in seconds for java proccess to stop SHUTDOWN_WAIT=20 tomcat_pid() { echo `ps -fe | grep $CATALINA_BOOTSTRAP | grep -v grep | tr -s " "|cut -d" " -f2` } start() { pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m" else # Start tomcat echo -e "\e[00;32mStarting tomcat\e[00m" #ulimit -n 100000 #umask 007 #/bin/su -p -s /bin/sh $TOMCAT_USER if [ `user_exists $TOMCAT_USER` = "1" ] then /bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh else echo -e "\e[00;31mTomcat user $TOMCAT_USER does not exists. Starting with $(id)\e[00m" sh $CATALINA_HOME/bin/startup.sh fi status fi return 0 } status(){ pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m" else echo -e "\e[00;31mTomcat is not running\e[00m" return 3 fi } terminate() { echo -e "\e[00;31mTerminating Tomcat\e[00m" kill -9 $(tomcat_pid) } stop() { pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;31mStoping Tomcat\e[00m" #/bin/su -p -s /bin/sh $TOMCAT_USER sh $CATALINA_HOME/bin/shutdown.sh let kwait=$SHUTDOWN_WAIT count=0; until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ] do echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m"; sleep 1 let count=$count+1; done if [ $count -gt $kwait ]; then echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m" terminate fi else echo -e "\e[00;31mTomcat is not running\e[00m" fi return 0 } user_exists(){ if id -u $1 >/dev/null 2>&1; then echo "1" else echo "0" fi } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status exit $? ;; kill) terminate ;; *) echo -e $TOMCAT_USAGE ;; esac exit 0

其实解决办法就是在#!/bin/bash下面添加:

### BEGIN INIT INFO# Provides:          bbzhh.com# Required-Start:    $local_fs $network# Required-Stop:     $local_fs# Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: tomcat service # Description: tomcat service daemon ### END INIT INFO

当然,也可以一劳永逸的:

apt-get remove insserv