
StoneDb(MySQL 수정 버전)에 대한 사용자 정의 서비스를 생성했지만 {start|stop|restart|reload|force-reload|status}
상태를 확인할 때 다음 오류가 발생합니다.
이는 서비스를 수동으로 관리하기 위해 동일한 스크립트를 사용하더라도 StoneDb에서 명령을 수행하지 않는다는 것을 의미합니다.
[Unit]
Description=StoneDB database server
After=network.target
#StartLimitIntervalSec=90
[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server
TimeoutSec=300
[Install]
WantedBy=multi-user.target
여기서 내가 무엇을 놓치고 있나요?
답변1
그만큼systemctl
시작하고 중지하는 명령서비스 단위(systemctl) 명령줄 인수를 전달하지 않으면 ExecStart=
서비스 시작 명령이 서비스 단위에 정의된 대로 그대로 실행됩니다.
해당 스크립트가 인수를 기대하는 경우 오류 메시지에서 알 수 있듯이 stop
또는 같은 옵션이 정의에 포함되어야 합니다.start
ExecStart=script some-argument
이미 언급한 바와 같이:
[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server start
ExecStop=/opt/stonedb57/install/mysql_server stop
ExecReload=/opt/stonedb57/install/mysql_server reload
TimeoutSec=300
...
도우미/래퍼 스크립트를 호출하는 대신 mysql_server
MySQL 및 StoneDB에서 제공하는 기본 시스템 서비스 단위를 서비스 단위 템플릿으로 사용하는 것을 고려할 수 있습니다.
https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd