systemdタイマーを使用して、毎日異なる正確な時刻にユーティリティを起動し、パラメータを渡します。

systemdタイマーを使用して、毎日異なる正確な時刻にユーティリティを起動し、パラメータを渡します。

マルフットMeteor 2衛星からデータをキャプチャするためのコマンドラインユーティリティ。衛星は毎日異なる時間にオーバーヘッドを送信し、システムタイマーを使用してmlrpt正しいパラメータで起動したいと思います。

APIから取得した時間から始まります。

    startDate start_times end_times duration
1  2019-08-25       17:51     18:05       14
2  2019-08-25       19:31     19:45       14
3  2019-08-26       05:07     05:21       14
4  2019-08-26       06:47     07:01       14
5  2019-08-26       19:11     19:25       14
6  2019-08-27       06:27     06:42       15
7  2019-08-27       18:51     19:06       15
8  2019-08-28       06:07     06:22       15
9  2019-08-28       18:31     18:46       15
10 2019-08-29       05:47     06:02       15
11 2019-08-29       18:11     18:26       15
12 2019-08-30       05:27     05:42       15
13 2019-08-30       17:51     18:06       15
14 2019-08-30       19:31     19:45       14
15 2019-08-31       05:08     05:22       14
16 2019-08-31       06:48     07:02       14
17 2019-08-31       19:11     19:26       15
18 2019-09-01       06:27     06:42       15
19 2019-09-01       18:51     19:07       16
20 2019-09-02       06:07     06:23       16
21 2019-09-02       18:31     18:47       16
22 2019-09-03       05:47     06:03       16

mlrptを実行したいすべてのフォーマットについてmlrpt $startT-$stopT -t $durationMin

このサービスファイルから始めます。

~/.config/systemd/user/mlrpt.service
[Unit]
Description=Capture Meteor satellite data using mlrpt
DefaultDependencies=no
Wants=local-fs.target time-sync.target
After=local-fs.target time-sync.target

[Service]

Type=simple
ExecStart=/usr/local/bin/mlrpt $START_TIME-$END_TIME -t $DURATION

mlrptタイマーファイルが適切な時間に開始されるだけでなく、正しいパラメータをユーティリティに渡すように(毎回異なる)タイマーファイルをどのように設定しますか?似たようなテンプレートが必要だと思います。

~/.config/systemd/user/mlrpt.timer
[Unit]
Description=Run mlrpt when a satellite is overhead

[Timer]
OnCalendar=
Persistent=true

[Install]
WantedBy=timers.target

しかし、次にどこに行くべきかわかりません。正しいタイマーファイルの例がある場合は、タイマーファイルを生成するスクリプト技術があります。

ベストアンサー1

これらのワンタイム非反復作業の場合、より良い解決策が見つかったようですsystemd-run。リストの最初の項目に対して実行するスクリプトを作成します。systemd-run --user --on-calendar="2019-08-25 19:51" /usr/local/bin/mlrpt "17:51-18:05" -t 14

おすすめ記事