새로운 시스템 스크립트를 작성하여 올바른 일을하고 싶지 않습니다. 시스템을 systemd를 사용하는 OS로 시스템을 업그레이드 했으므로 이전 init 스크립트가 다시 작동하기를 원합니다.
init 스크립트를 변환하는 방법과 시스템 스크립트를 작성하는 방법에 대해 간략히 연구했지만 제대로 학습하고 올바르게 수행하는 데 몇 시간이 걸릴 것입니다.
현재 상황은 다음과 같습니다
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