
저는 모노 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일 것입니다).