모노 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이 시작될 때까지 어떻게 서비스가로드되지 않도록 할 수 있습니까?
답변
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 일 수 있음)을 결정하십시오.