
モバイルデータ接続サービスを使用しています。午前9時から午後4時までは無制限の帯域幅を使用できます。
プログラム外でDropboxアプレットなどのアプリケーションを「ミュート」する方法を知りたいです。
Dropboxバイナリを次のスクリプトに置き換えることを検討しました。
#!/bin/bash
H=`date +"%H"`
if (($H >= 9 && $H < 16))
then
echo "run dropbox here"
fi
誰もがより良いアイデアを持っているかどうか疑問に思います。つまり、私のソリューションでは、Dropboxは午後4時以降も実行を続け、午前9時前にコンピュータの電源を入れても起動しません。 Wi-Fiを使用する場合、制限が課されない場合は素晴らしいです。
誰にも解決策があるかどうか疑問に思います。システムまたは予約されたことまたはそのようなもの。私はこれらのツールが非常に強力であることを知っていましたが、他のものはまったく知りませんでした。
(私のシステム:XUbuntu 15.04、つまりxfce4とsystemd)
答え1
cron
デーモンプロセスを開始および終了するために使用されます。 dropboxはユーザーとして実行されるため、cronjobをuser:として編集し、crontab -e
エディタに次のように入力します。
0 9 * * * $HOME/bin/dropbox-daemon-path
59 16 * * * pkill -u "$LOGNAME" dropbox-daemon-process-name
午前9時にDropboxデーモンを起動し(ここにフルパスを提供する必要があります)、午後5時1分前にそのユーザーのDropboxデーモンを終了します。
誰かの答えを聞きたいですsystemd
。
編集:Gilesが指摘したように、システムが次の場合は役に立ちません。電源が入っている9時から17時まで。繰り返しsystemd
ますが、このcronjobアプローチは最適ではありませんが。
#!/bin/bash
hour=$(date +%H)
[ $hour -lt 09 -o $hour -gt 16 ] && exit
#else
exec path-to-dropbox-daemon
crontabを少し修正してください。
* 9-16 * * * $HOME/bin/dropbox-wrapper-script
59 16 * * * sleep 50; pkill -u "$LOGNAME" dropbox-daemon-process-name
私にとってはきれいではありません。スクリプトは1分ごとにcronによって実行され、数行のログを残します。しかし、効果的でなければなりません。
答え2
@Janisが述べたように、特定の時間に実行されるようにタスクを設定すると、cron
次の項目の形式を取ることができます。
0 9 * * * bin chmod +x /usr/bin/dropbox
0-59/10 * * * * root /usr/local/bin/maybe-stop dropbox
改訂する:私が最初に書いたように、スーパーユーザーだけが再び変更できるので、10分ごとに実行するのはクレイジーです。+x
したがって、より良いアイデアは次のとおりです。
0 9 * * * bin chmod +x /usr/bin/dropbox
0 16 * * * root /usr/local/bin/maybe-stop dropbox
どこ/usr/local/bin/maybe-stop
:
#!/bin/bash
RESTRICT_PROGRAM=$1
WIFI_DEVICE=wlo1
BEGIN_FREE=9
END_FREE=16
if [ $(date +%H) -ge $BEGIN_FREE -a $(date +%H) -lt $END_FREE ]
then
# We have free broadband: allow it.
chmod +x /usr/bin/$RESTRICT_PROGRAM
elif ip addr show dev $WIFI_DEVICE | grep ' inet' | grep -q global
then
# We have WiFi: allow it.
chmod +x /usr/bin/$RESTRICT_PROGRAM
elif
else
chmod -x /usr/bin/$RESTRICT_PROGRAM
if [ $(date +%H) -lt $BEGIN_FREE -o $(date +%H) -ge $END_FREE ]
then
PIDS=$(fuser /usr/bin/$RESTRICT_PROGRAM 2>/dev/null | cut -d: -f2)
kill -SIGTERM $PIDS
sleep 3
kill -SIGKILL $PIDS
fi
fi
2番目の部分は、ネットワーク構成が変更されたときに実行するのと同じスクリプトをリンクすることです。
/etc/NetworkManager/dispatcher.d/dropbox-check
#!/bin/sh
exec /usr/local/bin/maybe-stop dropbox
答え3
1つのオプションは、cron
9時にcronjobを設定し、16時に別のオプションを設定することです。ロゴファイルどこかに。ラッパーが存在することを確認します。ロゴファイルアプリケーションを起動するかどうかを決定します。
アプリケーションが16:00より前に起動され、16:00以降も実行を続けている場合はもちろん、実行が継続する時間を事前に知らないと仮定して、アプリケーションを終了することができます(例:cronjobで起動)。
答え4
timeStart=`date --date='8AM' +"%s"`
timeStop=`date --date='23:59:00' +"%s"`
now=`date +"%s"`
if (($now >= $timeStart && $now < $timeStop))
then
#CRON JOBS BETWEEN 8AM AND 12PM
echo "NO BEER"
else
#CRON JOBS OUTSIDE OF 8AM AND 12PM
echo "DRINK BEER"
fi