私は単一の電子メールサーバープロジェクトを進めています。起動中に自動的に起動するように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)の正しい名前を解決するには