🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

3046閲覧

ラズパイ systemd サービスファイル自動起動

raspypy

総合スコア247

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/10/28 00:17

##やろうとしていること

systemdサービスファイルを使用して、
csvファイルを定期的にGoogle Driveにアップロードすることに取り組んでいます。

##教えてほしいこと

サービスファイルの記述内容によって、動作状況が変わりますが、なぜ変わってしまうのか、理由が分からずこまっています。
意図する動作としては、サービスファイル①で良いのですが、Status確認したときの"inactive"が気になります。
サービスファイル②は、StatusがAcitiveとなりますが、意図する動作(Google Driveへのアップロード)をしてくれません。

サービスファイル①

text

1[Unit] 2Description=test script 3After=network.target 4 5[Service] 6Type=simple 7ExecStart=/home/pi/test.sh 8[Install] 9WantedBy=multi-user.target 10

実行結果
・Google Driveに定期的にアップロードできている。
ただし、次のコマンドで状況を確認すると、**inactive (dead) **となっている。
$ sudo systemctl status test.service

● test.service - test script
Loaded: loaded (/usr/lib/systemd/system/test.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2019-10-25 10:37:14 JST; 6s ago
Main PID: 1295 (code=exited, status=0/SUCCESS)

サービスファイル②

text

1[Unit] 2Description=test script 3After=network.target 4 5[Service] 6Type=oneshot 7RemainAfterExit=yes 8ExecStart=/home/pi/test.sh 9[Install] 10WantedBy=multi-user.target 11

実行結果
・Google Driveにアップロードしてくれない。
ただし、次のコマンドで状況を確認すると、**active (exited)**となっている。
$ sudo systemctl status test.service

● test.service - test script
Loaded: loaded (/usr/lib/systemd/system/test.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2019-10-28 08:40:22 JST; 15s ago
Main PID: 10423 (code=exited, status=0/SUCCESS)

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

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

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

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

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

dodox86

2019/10/28 01:11 編集

「サービスファイル」と書かれていますが、いわゆるSystemdの「ユニットファイル」ですよね。ユニットファイルの説明をていねいに読めば理由が分かると思います。ファイル1と2の差から調べてみてください。ご提示のものでは、以下の設定部分が異なっています。 ファイル1 Type=simple --- ファイル2 Type=oneshot RemainAfterExit=yes 「systemd Type=simple」などとググるとよいと思います。TypeとRemainAfterExitの設定で何が違うか、ということです。
raspypy

2019/10/28 01:42

ありがとうございます。 ファイル①に関して。 simpleと設定すると、指定コマンドがフォアグラウンドで実行を継続する場合。コマンドを実行したらすぐに起動完了と判定するので、 ⇒スクリプトファイルが実行されたらすぐに起動完了となっているので、”dead”となっている。 と理解して、 Typeの記述を削除しました。 しかし、相変わらずinactive(dead)となっています。 (これでも動作はしているのですが、なぜinactive(dead)となっているのかが、気になっています。)
dodox86

2019/10/28 01:50

個人様のブログですが、大変分かり易いので: http://enakai00.hatenablog.com/entry/20130917/1379374797 こちらの記事によると、Type=oneshot, RemainAfterExit=yes でinactive になるのは設定どおりで、矛盾はないと思います。(と思っていたら回答をいただいていましたね)
raspypy

2019/10/28 01:58

ブログの紹介ありがとうございます。
guest

回答1

0

ベストアンサー

すみません。
https://teratail.com/questions/219239 の回答で、RemainAfterExit=yes で active のままにすると、以降の実行タイミングになっても ExecStart は実行されないようです。(二重起動を防ぐため?)

他の .timer, .service を見ると、Type=oneshot で、RemainAfterExit=yes を設定せず、inactive (dead) となるのが正解のようです。

投稿2019/10/28 01:40

TaichiYanagiya

総合スコア12173

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

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

raspypy

2019/10/28 01:59

いえいえ。 こちらこそ、理解が足らず、2度手間になってしまい、すみませんでした。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問