質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

14945閲覧

Systemdの自動起動失敗

JunYoshida

総合スコア20

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2017/12/20 07:00

編集2017/12/20 07:01

systemdを使った自作プログラムの自動起動を試みていますが、起動に失敗しています。
エラー内容としては、一定時間内に何度も行ったことによるものかと。
起動失敗の対策として何をしてよいのかわからず。。ヒントをいただけないでしょうか。

カスタムカーネル 3.18を使っています。

$ cat /etc/systemd/system/myapps.service [Unit] Description = myappsboot [Service] ExecStart = /home/root/myappboot.sh Restart = always Type = simple [Install] WantedBy = multi-user.target
root@overo:~# cat myappboot.sh #!/bin/sh kill `pidof xxx` `pidof yyy` `pidof zzz` /home/root/xxx.sh & /home/root/yyy.sh & /home/root/zzz.sh &
$ systemctl status myapps -l ● myapps.service - myappsboot Loaded: loaded (/etc/systemd/system/myapps.service; enabled; vendor preset: enabled) Active: failed (Result: start-limit) since Fri 2017-12-08 05:00:08 UTC; 17s ago Process: 1971 ExecStart=/home/root/myappboot.sh (code=exited, status=0/SUCCESS) Main PID: 1971 (code=exited, status=0/SUCCESS) Dec 08 05:00:08 overo systemd[1]: myapps.service holdoff time over, scheduling restart. Dec 08 05:00:08 overo systemd[1]: start request repeated too quickly for myapps.service Dec 08 05:00:08 overo systemd[1]: Failed to start myappsboot. Dec 08 05:00:08 overo systemd[1]: Unit myapps.service entered failed state. Dec 08 05:00:08 overo systemd[1]: myapps.service failed.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ExecStart で実行するプロセスはフォアグラウンドで実行されるものと systemd は想定しています。
myappboot.sh を実行すると、xxx.sh, yyy.sh, zzz.sh をバックグラウンドで実行し、myappboot.sh 自体は終了しますので、systemd は myappboot.sh の終了を検知し、Restart=always 設定にもとづき start し、ループしているのだと思います。

Restart=always で systemd にプロセスの監視をさせたいのであれば、xxx.sh, yyy.sh, zzz.sh それぞれを systemd サービスとしてフォアグラウンドで起動するようにするといいと思います。

投稿2017/12/21 09:56

TaichiYanagiya

総合スコア12148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何度も起動すること自体が想定通りで正常な状態ならUnitファイルのStartLimitBurst設定値の修正で対応することができます。
https://www.hiroom2.com/2017/02/18/linux-systemd%E3%81%AEstart-request-repeated-too-quickly-for-xxx-service/

正常ではないのならその原因を先に修正すべきだとは思いますが。

投稿2017/12/20 07:41

yunano

総合スコア841

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問