Non voglio fare la cosa giusta creando un nuovo script systemd, voglio solo che il mio vecchio script init funzioni di nuovo ora che ho aggiornato il mio sistema a un sistema operativo che utilizza systemd.
Ho studiato brevemente come convertire gli script di init e come scrivere script di systemd, ma sono sicuro che impararlo correttamente e farlo nel modo giusto mi richiederebbe diverse ore.
La situazione attuale è:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
E:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
In questo momento, voglio solo tornare al lavoro. Qual è il percorso di minor resistenza per far funzionare di nuovo questo?
aggiornamenti
Non volevo capire tutto - non l'ho fatto davvero - ma devo e ho scoperto il mio primo indizio:
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.
La pagina delle incompatibilità per systemd dice che:
Le informazioni sulla dipendenza dell'intestazione LSB sono importanti. Le implementazioni SysV su molte distribuzioni non hanno utilizzato le informazioni sulle dipendenze codificate nelle intestazioni degli script init LSB, né le hanno utilizzate solo in modi molto limitati. A causa di ciò sono spesso errati o incompleti. systemd tuttavia interpreta completamente queste intestazioni e le segue da vicino in fase di esecuzione
Penso che ciò significhi che il mio script non funzionerà fino a quando non verrà risolto.
La sceneggiatura in questione:
#!/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