私の電子メールをダウンロードするために10分ごとに実行されるシステムタイマーがありますofflineimap
。問題は、時には大量の電子メールまたは大容量の添付ファイルを受け取り、携帯電話のデータ通信接続を使用して移動中である可能性があることです。
nmcli
現在アクティブな接続を照会し、その接続がデータ通信接続であることを確認するカスタムスクリプトがあります。その場合、offlineimap
まったく実行されません。
私の質問は、システムタイマーが同じことをすることができるかどうかです。次のように:
[Timer]
OnUnitInactiveSec=10m
RunOnMetered=no
ベストアンサー1
まず、接続が測定されるかどうかを示すために依存する単位が必要です。たとえば、次のようになります。
[Unit]
Description=Check if the current connection is metered
[Service]
Type=oneshot
ExecStart=check-metered-connection.sh
以下はcheck-metered-connection.sh
簡単なdbusチェックです。
#! /usr/bin/bash
metered_status=$(dbus-send --system --print-reply=literal \
--system --dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager \
org.freedesktop.DBus.Properties.Get \
string:org.freedesktop.NetworkManager string:Metered \
| grep -o ".$")
if [[ $metered_status =~ (1|3) ]]; then
echo Current connection is metered
exit 1
else
exit 0
fi
これにより、組織はサービスに依存し、次のように開始できます。
Requires=unmetered-connection.service
After=unmetered-connection.service
誰かがこれについて考え、親切にGithubにコードを投稿しました。jdorel/systemd 測定接続の依存関係完全なコードを取得します。
ここにあるすべてのコード例は私のものではありませんが、リンクされたリポジトリからそのままコピーされました。。完全性のためにここにコピーしました。