Ich möchte nicht das Richtige tun, indem ich ein neues systemd-Skript erstelle. Ich möchte nur, dass mein altes init-Skript wieder funktioniert, nachdem ich mein System auf ein Betriebssystem aktualisiert habe, das systemd verwendet.
Ich habe kurz nachgeforscht, wie man Init-Skripte konvertiert und wie man systemd-Skripte schreibt, aber ich bin sicher, dass es mehrere Stunden dauern würde, es richtig zu lernen und es richtig zu machen.
Die aktuelle Situation ist:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Und:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Im Moment möchte ich einfach wieder an die Arbeit gehen. Was ist der Weg des geringsten Widerstands dagegen, dass dies wieder funktioniert?
Aktualisierung
Ich wollte das alles nicht herausfinden - ich tat es wirklich nicht - aber ich muss und ich habe meinen ersten Hinweis gefunden:
sudo systemctl enable solr
Synchronizing state for solr.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d solr defaults
insserv: warning: script 'K01solr' missing LSB tags and overrides
insserv: warning: script 'solr' missing LSB tags and overrides
Executing /usr/sbin/update-rc.d solr enable
update-rc.d: error: solr Default-Start contains no runlevels, aborting.
Auf der Inkompatibilitätsseite für systemd heißt es:
Informationen zur Abhängigkeit von LSB-Headern sind wichtig. Die SysV-Implementierungen in vielen Distributionen verwendeten die in LSB-Init-Skript-Headern codierten Abhängigkeitsinformationen nicht oder nur in sehr begrenztem Umfang. Aufgrund dessen sind sie oft falsch oder unvollständig. systemd interpretiert diese Header jedoch vollständig und folgt ihnen zur Laufzeit genau
Ich denke, das bedeutet, dass mein Skript nicht funktioniert, bis das behoben ist.
Das fragliche Skript:
#!/bin/sh
# Prerequisites:
# 1. Solr needs to be installed at /usr/local/solr/example
# 2. daemon needs to be installed
# 3. Script needs to be executed by root
# 4. $INSTALL_ROOT must be set
# This script will launch Solr in a mode that will automatically respawn if it
# crashes. Output will be sent to /var/log/solr/solr.log. A pid file will be
# created in the standard location.
start () {
echo -n "Starting solr..."
# Reset ulimit or else get issues with too many open files (https://issues.apache.org/jira/browse/SOLR-4)
ulimit -n 10000
# start daemon
daemon --chdir='/usr/local/solr/example' --command "java -jar -server start.jar -DINSTALL_ROOT=$INSTALL_ROOT" --respawn --output=/var/log/solr/solr.log --name=solr --verbose
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo "done."
else
echo "failed. See error code for more information."
fi
return $RETVAL
}
stop () {
# stop daemon
echo -n "Stopping solr..."
daemon --stop --name=solr --verbose
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo "done."
else
echo "failed. See error code for more information."
fi
return $RETVAL
}
restart () {
daemon --restart --name=solr --verbose
}
status () {
# report on the status of the daemon
daemon --running --verbose --name=solr
return $?
}
case "$1" in
start)
start
;;
status)
status
;;
stop)
stop
;;
restart)
stop
sleep 15
start
;;
*)
echo $"Usage: solr {start|status|stop|restart}"
exit 3
;;
esac
exit $RETVAL