Centos 7은 아직 새롭고 초기 경험의 대부분은 Ubuntu에서 이루어졌습니다. 방금 Centos 7에 애플리케이션을 설정했고 해당 제품 웹 사이트에서 해당 애플리케이션을 Linux 서비스(시스템 부팅 시 시작)로 실행하려면 이 스크립트를 사용해야 한다는 것을 보았습니다.
#! /bin/sh
export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_07"
startcmd='<PRODUCT_HOME>/bin/listener_mm.sh start > /dev/null &'
restartcmd='<PRODUCT_HOME>/bin/listener_mm.sh restart > /dev/null &'
stopcmd='<PRODUCT_HOME>/bin/listener_mm.sh stop > /dev/null &'
case "$1" in
start)
echo "Starting the Listener Server ..."
su -c "${startcmd}" user1
;;
restart)
echo "Re-starting the Listener Server ..."
su -c "${restartcmd}" user1
;;
stop)
echo "Stopping the Listener Server ..."
su -c "${stopcmd}" user1
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
하하 esac이 다른 배포판에만 국한되지 않기를 바랍니다:?
그래서 스크립트를 생성하고, 내 환경에 따라 올바른 값을 교체하고, 내 스크립트에 심볼릭 링크를 추가했습니다. 몇 가지 질문이 있습니다. 1) 위 스크립트는 Ubuntu 또는 기타 Linux 배포판에서 작동할 수 있습니다. 그렇다면 스크립트를 변경해야 합니까? 2) 모든 사용자를 위한 서비스로 실행하려면 어떻게 해야 합니까? 시스템이 시작될 때 시작되기를 원합니다. Debian/Ubuntu에는 update-rc.d가 있는데 이를 위해서는 chkconfig를 사용해야 할 것 같습니다. 이것에 대한 조언이 있습니까? 공교롭게도 별다른 기능이 없는 기계라서 조금 실험해봤는데, 경험이 있으신 분께서 조언을 주시면 좋을 것 같습니다.
systemd에 관한 일부 기사를 읽고 있지만 도움을 주시면 대단히 감사하겠습니다.
많은 감사를 드립니다.
어서 MM
답변1
CentOS 7, Fedora 및 최신 버전의 Ubuntu에서 부팅 시 무언가를 실행하려면시스템 장치. 문제는 더 이상 필요하지 않은 레거시 초기화 스크립트입니다.
간단한 단위 파일은 다음과 같습니다.
[Service]
Type=simple
ExecStart=/bin/myservice
[Install]
WantedBy=multi-user.target
포그라운드에서 실행한다고 가정하면 /bin/myservice
위의 내용이 실제로 필요한 것입니다. /etc/systemd/system/myservice.service
자신의 시스템에 설정하거나 /usr/lib/systemd/system/myservice.service
배포용 패키지를 구축하는 경우 다음을 입력하고 다음을 수행할 수 있습니다.
- 서비스를 즉시 시작하려면:
systemctl start myservice
- 다음 부팅 시 서비스가 자동으로 시작되도록 표시하려면 다음 안내를 따르세요.
systemctl enable myservice
chkconfig
및 같은 도구 update-rc.d
는 레거시 도구이며 systemd를 실행하는 환경에는 필요하지 않습니다.