Upstart : 비 시작 프로세스 후 서비스 시작


11

Ubuntu 10.04에서는 upstart로 서비스를 시작해야하지만 mysql이 시작되어 실행 중일 때만 필요합니다.

문제는 mysql 자체가 upstart에 의해 처리되지 않기 때문에 "start on"기능을 사용할 수 없다는 것입니다.

어떡해 ?

답변:


15

몇 가지 옵션이 있습니다.

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


1
둘러 본 후에이 답변은 내가 가진 모든 옵션을 요약합니다. 또한 "started mysql"과 mysql이 실제로 사용 가능한 시간 사이의 차이를 지적 해 주셔서 감사합니다. # 4가 이미 어딘가에 시도되었는지 봅시다.
Falken

옵션 3에는 "시작된 웨이터에서 시작"이 필요합니다. 중지되지 않았습니다.
adeandrade

옵션 1은 모델에 잘 맞습니다! 먼저 python 스크립트를 통해 구성 서버에서 모든 시작 스크립트를 다운로드 os.system('/sbin/initctl emit consul-finished')한 다음 다른 서비스를 시작하십시오.start on consul-finished
CMag

친구 고마워요! 기본적으로 나는 initctl emit cloud-init-finished연결될 수 있도록 sysv 서비스 를 sed-replace 해야했다
Jose Alban

0

시작 하지 않은 모든 작업이 완료된 후 시작 작업을 시작하는 것이 좋습니다 .

start on started rc

/etc/init/rc.conf 업 스타트 내에서 비업 스타트 작업을 시작하는 것입니다.

소품 : /server//a/533481


-1

사용은 어떻습니까

pre-start exec /etc/init.d/mysql start

당신의 시작 작업 안에!


... 마술이 시작되지 않습니다 그 신출내기 mysql을 시작할 때 작업을.
adaptor

네, 당신이 요구 한 것이 아닙니다 !!! 당신은 다른 방법으로 라운드를 요청했습니다. 적어도 그것이 내가 이해 한 방법이다
kaji

내 시작 작업은 mysql을 모니터링하고 다운되면 알림을 보내야합니다. 모니터링 작업을 통해 mysql을 시작하는 것이 다소 불편하다고 생각합니다.
Falken

나는 완전히 잘못 생각하지 않습니다. 나는 이런 식으로 : pre-start script if! /etc/init.d/rabbitmq- 서버 상태 &> / dev / null; /etc/init.d/rabbitmq-server start fi end 스크립트
maxadamo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.