みなさん、こんにちは。 これは私のXNUMX番目の投稿です。 共有するのに良いものがない限り、私は通常投稿を書きません。今回はきっと多くの人が興味を持ってくれるものがあります。
数ヶ月前、アプリケーションの帯域幅を制限するスクリプトを作成することを考えていましたが、いくつかの問題やエラーがあり、それが困難だったため、疑問を投げかけました。 フォーラム de <°FromLinux 誰かがアイデアを持っていた場合に備えて。
それでしばらく放置し、ある日スクリプトを再開することにしました。 たくさんのテストをしたり、bashについてたくさん読んだり、暇なときに頭痛がしたりしましたが、やりました!
私は非常に満足しているので、あなたがそれを使用して改善できるように、私の小さなスクリプトをあなたと共有することにしました。 GPLv3でライセンスを取得する予定ですが、これは私の最初のプロジェクトであるため、これを行う方法がよくわかりません(以前に行ったことのある人からのアドバイスが必要です)。
さて、今、私は私の必要性が何であったか、そして私が問題を解決するために何をしたかを説明します。
状況
私は512Kbsのインターネットプランを持っているので、 トランスミッション 大きなファイル(LibreOfficeや一部のGNU / Linuxディストリビューションなど)をダウンロードするためのBitTorrentクライアントとして。 その速度ではダウンロードに時間がかかり、問題はWebブラウザを使用するときです Firefoxの:読み込みに時間がかかります。
インターネットに接続したら、送信のアップロードとダウンロードの時間制限を有効にし、Firefoxが読み込まれるのを待ってから、トレントを再開します。 ご覧のとおり、これを数回行うのは面倒です。 言うまでもなく、私はすべてのトレントを完全に一時停止してから、再びオンにするのを忘れてしまい、トレントのアップロード/ダウンロードに貴重な時間を浪費することになります。
ソリューション
この問題のために、基本的に次のことを行うBashスクリプトを作成することにしました。
1. Transmissionが実行されており、トレントが一時停止されていないことを確認してください。 その場合は、トレントをオンに戻します。
2. Firefoxが実行されていることを確認します。 次に、KB / sを送受信し、ファイルに保存します。
3. ブラウザのアップロード/ダウンロードKB / sが基準範囲を超えると、送信のアップロード/ダウンロード設定が変更されます。
これにより、Webページにアクセスするときに、ブラウザーが要求を送信するときに送信ファイルのアップロードが制限され、ページデータを受信するときにダウンロードが制限されます。 これは、一度に複数のページにアクセスする場合にうまく機能し、結果は実際には送信を無効にした場合と同じです。
大きな利点は、それが完全に自動化されており、私の介入を必要としないことです。
スクリプト
あらゆるアプリケーションの帯域幅消費を制御するために使用できますが、現時点では、非常に特定の問題を解決するためにのみ作成されています。 しかし、変更を加えることはそれほど難しくありません。
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">要件
それが正しく機能するためには、アプリケーションが必要です«ネットホッグ'。
この場合、スクリプトはFirefoxとTransmissionで動作するため、トレントのアップロードとダウンロードの値を変更する「transmission-remote」に加えて、これらのアプリケーションをインストールする必要があります。 スクリプト「awk」でも使用します。 すべてのディストリビューションにインストールされているかどうかわからないので、言及します。
使用ソフトウェア
スクリプトが使用するアプリケーションとスクリプトが機能するシステムのリスト。
•DebianGNU / Linux 6.0.8
•Linux2.6.32-5-686
•Firefox24.0
•トランスミッション2.03(11030)
•Nethogs0.7.0
実行
ルートとして実行する必要があるため ネットホッグ そのユーザーでのみ実行できますが、 送信-リモート コマンドを使用して通常のユーザーで実行されます スー。
スクリプトは内部Bashコマンドを使用します トラップ SIGINT(CTRL + c)またはSIGTERM信号によって停止されたときに、トランスミッションのロード/アンロードのデフォルト値を復元することができます。
起動時に実行し、コンピュータをシャットダウンまたは再起動したときに停止する方法がまだわかりません。 ファイルにリンクを張ろうと思っていました /etc/rc.local しかし、それが機能するかどうかはわかりません。また、/ etc /がどのように機能するのかよくわかりません。初期化 (私はそこにあるいくつかのスクリプトを見ました スケルトン、しかし私はそれらを理解していません)。 誰かが私を助けてくれるなら、私はとても感謝します。
皆さん、それだけです。 私の小さな貢献があなたに役立つこと、そしてあなたが望むならそれを改善できることを願っています。 ファイルにセキュリティ上の問題がある場合に備えて、あなたの意見や推奨事項、および提案を喜んで読みます(私はプログラマーではないので、時々いくつかのことをします)。
私は同じことをするプログラムを知らないので、いくつかの修正でそれが将来素晴らしいアプリケーションになる可能性があることを知っています。 たとえば、私はグラフィカルインターフェイスを持つことができると思います 天頂 帯域幅の使用で優先したいアプリケーション(Webブラウザー、更新マネージャー、ファイル転送など)とさまざまな参照値を選択できるようにします。 はい、それはやや野心的ですが、非常に便利です。
スクリプトは、でダウンロードできます。 paste。 読んでくれてありがとう!