mysql이 시작된 후에만 시스템 서비스를 시작하려면 어떻게 해야 합니까?

mysql이 시작된 후에만 시스템 서비스를 시작하려면 어떻게 해야 합니까?

저는 모노 EmailServer 프로젝트를 진행 중입니다. 부팅 중에 자동으로 시작되도록 systemd에 서비스를 추가하려고 시도했지만 문제가 있습니다.

스크립트를 생성하고 에 추가한 /lib/systemd/system/emailserver.service다음 실행했습니다 ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service.

그런 다음 실행 systemd reload-daemon한 다음 systemctl start emailserver.service실행하면 실행 중인 ps -ef |grep -i emailserver것을 볼 수 있습니다. mono EmailServer.exe지금까지는 모두 괜찮아 보였습니다.

그러나 파일에서 서버를 재부팅하면 /var/log/messages다음과 같은 오류 메시지가 포함됩니다.

Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff
time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:03 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:04 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:04 dev-server systemd[1]: emailserver.service start request
repeated too quickly, refusing to start.

내 emailserver.service 스크립트에는 다음이 있습니다.

[Unit]
Description=Boardies Email Server Startup Script

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

OpenSuse 12.1을 사용하고 있습니다.

내가 뭘 잘못하고 있는 걸까요? 도움을 주셔서 감사합니다.

업데이트 부팅 시 프로그램 작동이 중지되는 원인을 찾았지만 이 문제를 어떻게 해결할 수 있는지 잘 모르겠습니다. 내 프로그램은 MySQL 데이터베이스에 의존하며 내 프로그램은 MySQL이 시작되기 전에 시작되는 것 같습니다. MySQL이 시작된 후까지 내 서비스가 로드되지 않도록 하려면 어떻게 해야 합니까?

답변1

After=mysql.service서비스 파일에 추가하거나 올바른 서비스 이름으로 변경하세요. 예:

[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

서비스 파일을 /lib/systemd/system에 넣을 필요는 없습니다. 이 파일은 사용자가 제공한 파일이므로 /etc/systemd/system에만 복사해야 합니다.

사용할 수 있는 모든 서비스 파일 목록을 얻으려면 systemctl list-unit-files데이터베이스 서비스의 올바른 이름을 확인하고 결정하십시오(아마도 mysql.service 또는 mysqld.service일 것입니다).

관련 정보