답변:
몇 가지 옵션이 있습니다.
1) mysql에게 이벤트를 발생시켜 시작되었음을 Upstart에 알리십시오.
initctl emit mysql-started
"또는 유사합니다.
에 initctl
호출을 추가하여 처리 할 수 있습니다 /etc/init.d/mysql
.
2) 일반적인 SysV 실행 레벨에서 mysql을 비활성화하고 시작하는 래퍼 Upstart 작업을 만듭니다 (이것은 중지를 처리하지 않으며 단지 예일뿐입니다).
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
그런 다음 " start on started mysql-sysv
" 직업을 가지십시오 .
여기서 문제는 누군가 (또는 일부 시스템 도구가) 자동으로 /etc/rc?.d
원래 /etc/init.d/mysql
서비스 스크립트에 대한 링크를 다시 추가하면 문제가 발생할 수 있다는 것 입니다. 또한 mypid는 메인 pid가 시작된 후 어느 시점까지 실제로 준비되지 않은 것을 알 수 있습니다 . 데이터베이스는 시작된 후에도 "온라인"상태가되기까지 시간이 걸리므로 문제가됩니다 (변환 로그 재생 등).
3) "stoped rc"에서 시작하는 모든 스타트 업 작업 ( "waiter")을 생성 한 다음 (즉, 모든 SysV 작업이 완료되었다고 주장 할 때 시작) mysql이 준비 될 때까지 폴링 한 다음 종료합니다. 작업이 "중지 된 웨이터에서 시작"되도록하십시오.
4) mysql을 Upstart 작업으로 변환하십시오 (최상의 옵션). 여기에 upstart mysql 구성의 시작점이 있습니다 : https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
한 다음 다른 서비스를 시작하십시오.start on consul-finished
initctl emit cloud-init-finished
연결될 수 있도록 sysv 서비스 를 sed-replace 해야했다
시작 하지 않은 모든 작업이 완료된 후 시작 작업을 시작하는 것이 좋습니다 .
start on started rc
/etc/init/rc.conf
업 스타트 내에서 비업 스타트 작업을 시작하는 것입니다.
소품 : /server//a/533481
사용은 어떻습니까
pre-start exec /etc/init.d/mysql start
당신의 시작 작업 안에!