안녕하세요, flink 로컬 서버를 조정하기 위해 systemctl 서비스를 만들고 싶습니다.
에서 바로 갈 수 있어요/bin/start-local.sh
하지만 이 서비스 정의를 사용할 때.
[Unit]
Description=Apache Flink
Documentation=http://flink.apache.org/
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=beam1
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
ExecStart=/opt/flink-1.3.2/bin/start-local.sh
ExecStop=-/opt/flink-1.3.2/bin/stop-local.sh
Restart=always
[Install]
WantedBy=multi-user.target
오류가 발생합니다. 서비스 방어에 무슨 문제가 있나요?
Oct 17 04:41:57 beam1 stop-local.sh[3997]: No jobmanager daemon (pid: 3995) is running anymore on beam1.
Oct 17 04:41:57 beam1 systemd[1]: flink.service: Service hold-off time over, scheduling restart.
Oct 17 04:41:57 beam1 systemd[1]: Stopped Apache Flink.
Oct 17 04:41:57 beam1 systemd[1]: Started Apache Flink.
Oct 17 04:41:57 beam1 start-local.sh[4411]: Starting jobmanager daemon on host beam1.
Oct 17 04:41:57 beam1 stop-local.sh[4817]: No jobmanager daemon (pid: 4814) is running anymore on beam1.
Oct 17 04:41:58 beam1 systemd[1]: flink.service: Service hold-off time over, scheduling restart.
Oct 17 04:41:58 beam1 systemd[1]: Stopped Apache Flink.
Oct 17 04:41:58 beam1 systemd[1]: flink.service: Start request repeated too quickly.
Oct 17 04:41:58 beam1 systemd[1]: Failed to start Apache Flink.
답변1
예! 다른 유형을 사용해보세요 :)
Type=forking
체계남성페이지 내용은 다음과 같습니다.
분기로 설정된 경우 ExecStart=로 구성된 프로세스는 시작의 일부로 분기()를 호출해야 합니다. 시작이 완료되고 모든 통신 채널이 설정되면 상위 프로세스가 종료될 것으로 예상됩니다. 하위 프로세스는 계속해서 기본 서비스 프로세스로 실행되며, 상위 프로세스가 종료되면 서비스 관리자는 해당 유닛이 시작된 것으로 간주합니다. 이는 기존 UNIX 서비스의 동작입니다. 이 설정을 사용하는 경우 systemd가 서비스의 기본 프로세스를 안정적으로 식별할 수 있도록 PIDFile= 옵션도 사용하는 것이 좋습니다. 상위 프로세스가 종료되면 systemd는 계속해서 후속 유닛을 시작합니다.