私は走っています
- Arch Linux 6.4.2-arch1-1と
- openbox wm v3.6.1が付属しています。
- Tint2バーバージョン17.0.2および
- システム化 v253.5-2-arch
すべてが最新の状態です。
私のTint2列には、天気などの時間関連情報が表示されます。
私はTint2列を数秒ごとに更新したくありません。これは、あまりにも多くのシステムリソースを使用し、新しいデータを頻繁にポーリングし、天候サイトなどでブロックされる可能性があるためです。
それで、Tint2を1時間ごとに更新するように設定しましたが、これは合理的なようです。
ところで、ノートブックをスリープモードにして再びオンにすると、インターネットに接続する前にTint2が起動するため、情報の更新(天気など)を収集する前に更新されます。
眠っていない直後にTint2を再起動する方法を提案できる人はいますか?後ろにインターネット接続を確認してください。
だから欲しい
- 次のいずれかを実行します。スリープ解除、再起動、電源投入、休止状態のキャンセル
- インターネット接続が検出されたら、Tint2を再起動します(たとえば、古い古い天気予報の代わりに新しい天気予報があります)。
私の考えでは、これは悪用に関連する可能性がありますsystemd
。
これが私が今まで持っているものです:
systemdというサービスファイルを作成してrestart_tint2.service
入れました/etc/systemd/system/
。
[Unit]
Description=This service runs once only after the arch linux laptop is 1 turned on after suspend 2 re-booted 3 turned on after being switched off 4 turned on after being hibernated
After=suspend.target
[Service]
Type=oneshot
ExecStart=/home/$USER/Dropbox/linux_config/script_tint2_restart_after_sleep/restart_tint2.sh
[Install]
WantedBy=suspend.target
このスクリプトを指すのは...
#!/bin/bash
# function to check internet connectivity
check_internet() {
ping -c 1 8.8.8.8 >/dev/null 2>&1
}
# function to restart tint2
restart_tint2() {
if pgrep -x "tint2" >/dev/null; then
pkill -x "tint2"
fi
sleep 1
tint2 & disown
}
# check internet connectivity
check_internet
# if internet is not available, wait and check again
while [ $? -ne 0 ]; do
sleep 5
check_internet
done
# restart tint2 after internet connection is detected
restart_tint2
exit 0
ノートブックを一時停止し、電源ボタンを使用して再起動すると、Tint2は終了しますが、再起動しません。
私がどこで間違っているのかわかりません。
この目標を達成するには、あらゆる方法で開かれている必要があります。
答え1
systemd serviceというテキストファイルを生成してこのコンテンツrestart_tint2.service
に入れます。/etc/systemd/system/
[Unit]
Description=This service runs once only after the arch linux laptop is 1 turned on after suspend 2 re-booted 3 turned on after being switched off 4 turned on after being hibernated
After=suspend.target hibernate.target
[Service]
Type=oneshot
# point to the location of the script given below
ExecStart=/home/$USER/Dropbox/linux_config/script_tint2_restart_after_sleep/restart_tint2.sh
[Install]
WantedBy=suspend.target
restart_tint2.sh
条件が満たされると、上記のサービスファイルは次のスクリプト(これを行う)を呼び出します。
#!/bin/bash
# function to check internet connectivity
check_internet() {
ping -c 1 8.8.8.8 >/dev/null 2>&1
}
# function to restart tint2
restart_tint2() {
# the below is the only solution that works,
# both killing, then re-starting tint2
killall -SIGUSR1 tint2
}
# check for internet connectivity
check_internet
# if internet is not available, wait and check again
while [ $? -ne 0 ]; do
sleep 5
check_internet
done
# restart tint2 after internet connection is detected
restart_tint2
exit 0
それだけで、作業ソリューション