ฉันไม่ต้องการทำสิ่งที่ถูกต้องด้วยการสร้างสคริปต์ systemd ใหม่ฉันแค่อยากให้สคริปต์ init เก่าทำงานอีกครั้งตอนนี้ฉันได้อัพเกรดระบบของฉันเป็นระบบปฏิบัติการที่ใช้ systemd
ฉันได้ทำการค้นคว้าสั้น ๆ ถึงวิธีการแปลงสคริปต์เริ่มต้นและวิธีการเขียนสคริปต์ systemd แต่ฉันแน่ใจว่าการเรียนรู้อย่างถูกต้องและการทำอย่างถูกต้องจะใช้เวลาหลายชั่วโมง
สถานการณ์ปัจจุบันคือ:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
และ:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
ตอนนี้ฉันแค่อยากกลับไปทำงาน เส้นทางของความต้านทานน้อยที่สุดเพื่อให้การทำงานนี้อีกครั้งคืออะไร?
อัพเดท
ฉันไม่ต้องการที่จะคิดออกทั้งหมด - ฉันไม่ได้ - แต่ฉันต้องและฉันได้ค้นพบเบาะแสแรกของฉัน:
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กล่าวว่า:
ข้อมูลการพึ่งพาส่วนหัวของ LSB มีความสำคัญ การประยุกต์ใช้ SysV ในการแจกแจงจำนวนมากไม่ได้ใช้ข้อมูลการพึ่งพาที่เข้ารหัสในส่วนหัวของสคริปต์เริ่มต้นของ LSB หรือใช้ในวิธีที่ จำกัด มากเท่านั้น เนื่องจากว่าพวกเขามักจะไม่ถูกต้องหรือไม่สมบูรณ์ อย่างไรก็ตาม systemd ตีความส่วนหัวเหล่านี้อย่างเต็มที่และติดตามอย่างใกล้ชิดที่รันไทม์
ฉันคิดว่านั่นหมายความว่าสคริปต์ของฉันจะไม่ทำงานจนกว่าจะได้รับการแก้ไข
สคริปต์ในคำถาม:
#!/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