Saya tidak ingin melakukan hal yang benar dengan membuat skrip systemd baru, saya hanya ingin skrip init lama saya bekerja lagi sekarang karena saya telah memutakhirkan sistem saya ke OS yang menggunakan systemd.
Saya telah meneliti secara singkat cara mengkonversi skrip init dan cara menulis skrip systemd, tapi saya yakin mempelajarinya dengan benar dan melakukannya dengan benar akan memakan waktu beberapa jam.
Situasi saat ini adalah:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Dan:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Saat ini, saya hanya ingin kembali bekerja. Apa jalan perlawanan paling tidak untuk membuat ini bekerja lagi?
Pembaruan
Saya tidak ingin memikirkan ini semua - saya benar-benar tidak - tetapi saya harus dan saya telah menggali petunjuk pertama saya:
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.
The halaman tidak kompatibel untuk systemd mengatakan bahwa:
Informasi dependensi header LSB penting. Implementasi SysV pada banyak distribusi tidak menggunakan informasi dependensi yang dikodekan dalam header skrip init LSB, atau menggunakannya hanya dengan cara yang sangat terbatas. Karena itu mereka sering salah atau tidak lengkap. Namun systemd sepenuhnya menafsirkan header ini dan mengikutinya secara dekat saat runtime
Saya pikir itu berarti skrip saya tidak akan berfungsi sampai itu diperbaiki.
Script yang dipertanyakan:
#!/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