Yeni bir systemd betiği oluşturarak doğru olanı yapmak istemiyorum, sadece sistemimi systemd kullanan bir işletim sistemine yükselttiğim için eski init betiğimin tekrar çalışmasını istiyorum.
İnit komut dosyalarının nasıl dönüştürüleceğini ve sistem komut dosyalarının nasıl yazılacağını kısaca araştırdım, ancak düzgün bir şekilde öğrendiğinizden ve doğru şekilde yaptığımdan birkaç saat alacağımdan eminim.
Mevcut durum:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Ve:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Şu anda, sadece işe geri dönmek istiyorum. Bunun tekrar çalışmaya başlamasında en az direnç gösteren yol nedir ?
Güncellemeler
Bunları çözmek istemedim - gerçekten yapmadım - ama zorundayım ve ilk ipucumu ortaya çıkardım:
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.
Systemd için uyumsuzluklar sayfa söylüyor:
LSB başlık bağımlılığı bilgisi önemlidir. Birçok dağıtımdaki SysV uygulamaları, LSB init betiği başlıklarında kodlanan bağımlılık bilgisini kullanmadı veya bunları yalnızca çok sınırlı şekillerde kullandı. Bundan dolayı genellikle yanlış veya eksik olurlar. ancak systemd bu başlıkları tamamen yorumlar ve çalışma zamanında yakından izler
Bence bu, senaryomun düzeltilinceye kadar çalışmayacağı anlamına geliyor.
Söz konusu komut dosyası:
#!/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