Nie chcę robić tego dobrze, tworząc nowy skrypt systemowy, chcę tylko, aby mój stary skrypt init znów działał po uaktualnieniu systemu do systemu operacyjnego, który używa systemd.
Krótko zbadałem, jak konwertować skrypty inicjujące i jak pisać skrypty systemowe, ale jestem pewien, że nauczenie się tego poprawnie i zrobienie tego we właściwy sposób zajmie mi kilka godzin.
Obecna sytuacja to:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
I:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Teraz chcę tylko wrócić do pracy. Jaka jest ścieżka najmniejszego oporu przed ponownym uruchomieniem ?
Aktualizacje
Nie chciałem tego wszystkiego rozgryźć - naprawdę tego nie zrobiłem - ale muszę i odkryłem moją pierwszą wskazówkę:
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.
Strona niezgodności dla systemd mówi, że:
Informacje o zależności nagłówka LSB mają znaczenie. Implementacje SysV w wielu dystrybucjach nie wykorzystywały informacji o zależnościach zakodowanych w nagłówkach skryptu inicjującego LSB lub wykorzystywały je tylko w bardzo ograniczonym zakresie. Z tego powodu są często niepoprawne lub niekompletne. systemd jednak w pełni interpretuje te nagłówki i ściśle je śledzi w czasie wykonywania
Myślę, że to oznacza, że mój skrypt nie będzie działał, dopóki nie zostanie naprawiony.
Skrypt, o którym mowa:
#!/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