저는 단일 이메일 서버 프로젝트를 진행하고 있습니다. 부팅 중에 자동으로 시작되도록 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)의 올바른 이름을 확인하려면