Saya sedang mengerjakan proyek yang merupakan EmailServer mono. Saya telah mencoba menambahkan layanan ke systemd sehingga dijalankan secara otomatis saat boot tetapi saya mengalami masalah.
Saya telah membuat skrip dan ditambahkan ke /lib/systemd/system/emailserver.service
kemudian jalankan ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Saya kemudian dieksekusi systemd reload-daemon
diikuti oleh systemctl start emailserver.service
dan kemudian ketika saya menjalankan ps -ef |grep -i emailserver
saya kemudian dapat melihat bahwa mono EmailServer.exe
itu berjalan, semua terlihat baik sejauh ini.
Namun, ketika saya me-reboot server dalam /var/log/messages
file itu kemudian berisi pesan kesalahan berikut
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.
Dalam skrip emailserver.service saya, saya memiliki yang berikut ini
[Unit]
Description=Boardies Email Server Startup Script
[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always
[Install]
WantedBy=multi-user.target
Saya menggunakan OpenSuse 12.1
Apa yang saya lakukan salah, terima kasih atas bantuan yang dapat Anda berikan.
PEMBARUAN Saya telah menemukan apa yang menyebabkan program berhenti bekerja saat bootup tetapi saya tidak yakin bagaimana saya dapat memperbaiki masalah ini. Program saya bergantung pada database MySQL dan saya pikir program saya mulai sebelum MySQL dimulai, bagaimana saya bisa membuat layanan saya tidak memuat sampai setelah MySQL dimulai.
Jawaban:
Tambahkan
After=mysql.service
ke file layanan Anda (atau ubah ke nama layanan yang benar), misalnya:Harap dicatat bahwa Anda tidak harus memasukkan file layanan Anda ke / lib / systemd / system, ini adalah file yang disediakan pengguna dan Anda hanya perlu menyalinnya ke / etc / systemd / system.
Untuk mendapatkan daftar semua file layanan yang dapat Anda gunakan
systemctl list-unit-files
dan tentukan nama yang benar untuk layanan basis data Anda (mungkin mysql.service atau mysqld.service)sumber
After=*.service
memesan lebih dari satu?