스크립트가 systemctl 명령을 사용하지 않습니다.

스크립트가 systemctl 명령을 사용하지 않습니다.

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또는 같은 옵션이 정의에 포함되어야 합니다.startExecStart=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_serverMySQL 및 StoneDB에서 제공하는 기본 시스템 서비스 단위를 서비스 단위 템플릿으로 사용하는 것을 고려할 수 있습니다.

https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd

관련 정보