質問: やろうとしていること ---------- systemdサービスファイルを使用して、 csvファイルを定期的にGoogle Driveにアップロードすることに取り組んでいます。 教えてほしいこと -------- サービスファイルの記述内容によって、動作状況が変わりますが、なぜ変わってしまうのか、理由が分からずこまっています。 意図する動作としては、サービスファイル1で良いのですが、Status確認したときの"inactive"が気になります。 サービスファイル2は、StatusがAcitiveとなりますが、意図する動作(Google Driveへのアップロード)をしてくれません。 **サービスファイル1** ``` [Unit] Description=test script After=network.target [Service] Type=simple ExecStart=/home/pi/test.sh [Install] WantedBy=multi-user.target ``` **実行結果** ・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) **サービスファイル2** ``` [Unit] Description=test script After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/home/pi/test.sh [Install] WantedBy=multi-user.target ``` **実行結果** ・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)
回答: すみません。 の回答で、`RemainAfterExit=yes` で active のままにすると、以降の実行タイミングになっても ExecStart は実行されないようです。(二重起動を防ぐため?) 他の .timer, .service を見ると、`Type=oneshot` で、`RemainAfterExit=yes` を設定せず、**inactive (dead)** となるのが正解のようです。