Tôi không muốn làm điều đúng bằng cách tạo tập lệnh systemd mới, tôi chỉ muốn tập lệnh init cũ của tôi hoạt động trở lại khi tôi đã nâng cấp hệ thống của mình lên HĐH sử dụng systemd.
Tôi đã nghiên cứu ngắn gọn về cách chuyển đổi các tập lệnh init và cách viết tập lệnh systemd, nhưng tôi chắc chắn việc học nó đúng cách và thực hiện đúng sẽ khiến tôi mất vài giờ.
Tình hình hiện tại là:
systemctl start solr
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Và:
sudo service solr start
Failed to start solr.service: Unit solr.service failed to load: No such file or directory.
Ngay bây giờ, tôi chỉ muốn trở lại làm việc. Con đường ít kháng cự nhất để làm việc này trở lại là gì?
Cập nhật
Tôi không muốn tìm hiểu tất cả - tôi thực sự đã không - nhưng tôi phải làm và tôi đã khai quật được manh mối đầu tiên của mình:
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.
Các trang không tương thích cho systemd nói rằng:
LSB tiêu đề phụ thuộc thông tin vấn đề. Việc triển khai SysV trên nhiều bản phân phối đã không sử dụng thông tin phụ thuộc được mã hóa trong các tiêu đề tập lệnh khởi tạo LSB hoặc chỉ sử dụng chúng theo những cách rất hạn chế. Do đó chúng thường không chính xác hoặc không đầy đủ. systemd tuy nhiên diễn giải đầy đủ các tiêu đề này và theo dõi chúng chặt chẽ trong thời gian chạy
Tôi nghĩ điều đó có nghĩa là kịch bản của tôi sẽ không hoạt động cho đến khi nó được sửa.
Kịch bản trong câu hỏi:
#!/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