20210514のLinuxに関する記事は3件です。

Xubuntuのターミナルに表示されるディレクトリ名の文字色を簡単に変更する

初めに lsコマンドなどで表示されるディレクトリ名が見づらい! そう思い、いろいろ調べると、「環境変数に...」や「カラーコードを...」など、とても面倒くさい手順を踏むことがわかりました。 そこで「GUI操作でもっと手軽にできないか」とターミナルの設定項目を調べていると...発見しました! 本記事はGUI操作でターミナルの文字配色を変更する手順を紹介します。 環境は「低スペックノートPCに Xubuntu21.04 を minimal install して fish を入れたお話」で作成したものになります。 Ubuntu系のLinuxディストリビューションであれば同様の手順で変更できます。 変更前と変更後 手順に入る前に、参考として変更前と変更後の文字色をのせておきます。 変更前 私はターミナルの背景を透過に設定することが多いです。 その影響もあり、暗い青文字が非常に見づらいのです。 変更後 明るい青文字に変更しました。 とても見やすいですね。 手順 手順はとても簡単です。 terminal の Edit から preference を開く colorタブ を開く palette にある青色を任意のカラーに変更する 1.terminalのpreferenceを開く preferenceは環境設定などの意味があります。 2.colorタブを開く 3.paletteのカラーを変更する 1枚目の画像が変更前、2枚目の画像が変更後です。 少しだけ色を明るくしました。 Closeでpreferenceを閉じます。 更新などせずに勝手に切り替わります。 まとめ GUI操作ができる環境では、terminalのpreferenceから簡単に変更できることがわかりました。 CUI操作になれることは良いことですが、たまにはこうしてGUIで楽をするのもいいですね。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

timeよりスゴイ! multitimeを使って実行時間を計測

multitimeとは timeコマンドは,コマンドの実行時間を計測するコマンドです. multitimeコマンドは,コマンドを繰り返し発行し,実行時間を計測するコマンドです. 実行例 multitimeコマンドに -n オプションで実行する回数を渡します. 以下は,multitimeコマンドを使いsleep 1を5回実行しています. $ multitime -n 5 sleep 1 ===> multitime results 1: sleep 1 Mean Std.Dev. Min Median Max real 1.012 0.002 1.010 1.012 1.015 user 0.001 0.000 0.000 0.001 0.001 sys 0.002 0.000 0.002 0.002 0.003 インストール方法 Ubuntuの場合はパッケージがあるので,コマンド1つでインストールできます. sudo apt install multitime Homebrewもパッケージがあります. brew install multitime ビルドしてインストールする場合は以下のリンクを参照してください. Laurence Tratt: multitime 基本的な使い方 sleep 1を5回実行した時間を計測し,結果を出力します.. $ multitime -n 5 sleep 1 ===> multitime results 1: sleep 1 Mean Std.Dev. Min Median Max real 1.010 0.001 1.008 1.010 1.011 user 0.000 0.000 0.000 0.000 0.000 sys 0.002 0.000 0.001 0.002 0.002 平均時間のみ出力 sleep 1を5回実行した平均時間だけを出力します. $ multitime -p -n 5 sleep 1 real 1.01 user 0.00 sys 0.00 標準出力を別コマンドに渡す sleep 1を3回実行した平均時間だけを出力します.また,3回それぞれの実行結果を cowsay コマンドに標準入力として渡します.これは, sleep 1; date | cowsay を3回実行した場合と同様の結果が得られます. $ multitime -p -n 3 -o cowsay bash -c "sleep 1; date" _____________________________ / 2021年 5月14日 金曜日 \ \ 14時44分55秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || _____________________________ / 2021年 5月14日 金曜日 \ \ 14時44分56秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || _____________________________ / 2021年 5月14日 金曜日 \ \ 14時44分58秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || real 1.02 user 0.00 sys 0.01 上記は,-s オプションを使うことで以下に書き換えられます.-s オプションは指定がない場合,ランダムな待ち時間になるため,上記とは厳密には異なります. $ multitime -p -n 3 -o cowsay -s 1 date _____________________________ / 2021年 5月14日 金曜日 \ \ 14時51分32秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || _____________________________ / 2021年 5月14日 金曜日 \ \ 14時51分33秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || _____________________________ / 2021年 5月14日 金曜日 \ \ 14時51分33秒 JST / ----------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || real 0.00 user 0.00 sys 0.00 発展した使い方 SSH先でmultitimeを実行 以下のコマンドでは,遠隔のホストにSSH接続を行いsleep 10 を10回実行します.その後,sleep 1を1回実行してSSHを切断します.事前に遠隔ホストにmultitimeコマンドのインストールが必要です. ssh admin@host "(multitime -p -n 10 bash -c \"sleep 10\"; sleep 1;)" realだけを出力 realだけを計測したい場合は以下のコマンドを実行します.以下では,sleep 4を3回実行した結果の real を含む行の第2フィールド(数値)だけを絞って出力します. $ multitime -p -n 3 sleep 4 2>&1 >/dev/null | grep real | awk '{print $2}' 4.01 余談 同様のコマンドでsharkdp/hyperfineを見つけました. @kazuho さんのツイートで見つけました.研究のデータ測定で大活躍しました. そういえばだけど、linuxでコマンドのベンチマーク取るときに使うコマンドは time(1) ではなく multitime(1) がオススメ。指定回数試行してくれて、平均以外に標準偏差や中央値も教えてくれるよ! https://t.co/8X82Ag0opy pic.twitter.com/z7H4fSiv4p— Kazuho Oku (@kazuho) April 9, 2021
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Varnish6.4.x にGeoIP2ベースのアクセス制限を掛ける

日本国内向けのWebサイトの場合、しばしば日本国外からのアクセスが迷惑になるケースがあります。 もちろん、GoogleBotやBingBotのような有益なクローラーはきちんとサイトにアクセスしてもらわなければいけないわけですが、サイトによっては特定の国や地域、あるいは妙なUserAgentによるアクセスが頻発することがあります。 ファイアウオール等でIPから国を割り出して遮断できるサービスが利用できる場合は、もちろんそちらを使うほうが簡単かつ無難ではありますが、そういった機能・サービスが利用できないケースの場合に、アプリケーションサーバーの前に設置していたVarnishで対処してみました。 というわけで自分用の作業メモです。 用意するもの とりあえず必要なものを整理しておきます。 Ubuntu 18.04 LTS(20.04LTSでも基本同じ) Varnish6.4.x (6.0/6.5/6.6でも良いらしい)が動く環境。 packagecloudからインストール前提 libvmod-geoip2 Maxmindのアカウント geoipupdate 事前準備 当然のことながら、Varnishが動いていないとだめです。VCLの書き方などは省略します。他の記事を適当に調べてセットアップしましょう。 Maxmind のサイトでアカウントを作成し、ライセンスキーを発行しておきます。 ライセンスキーをなくさないようにDLしておくとよいでしょう。 インストール手順 libvmod-geoip2のソースを入手 Githubリポジトリ からソースを入手します。 アーカイブで取ってきてもいいですし、リポジトリをクローンしてきても可です。お好みで。 libvmod-geoip2をビルドする Installationに書いてある手順に沿ってビルドを行えば基本はOKです。 ただし、packagecloudからVarnishをインストールしている場合は、 sudo apt install varnish-dev libmaxminddb-dev をしておかないと、autogen.shやconfigureがコケます。 make && make installできたら次に進みます。 geoipupdateのインストール Ubuntuなので、 add-apt-repository ppa:maxmind/ppa apt update apt install geoipupdate でリポジトリの追加と、geoipupdateのインストールを行います。 GeoIP.confの作成 geoipupdateのインストールができたら、適当なディレクトリにGeoIP.confを作成します。 サンプルは、Github にあるので、これをベースに AccountID LicenseKey を設定します。どちらも事前準備で取得したMaxmindのライセンスキーで得られます。 geoipupdateの実行 geoipupdate -d GeoIPのDBを保存したいパス -f /path/to/GeoIP.conf を実行し、GeoIPのデータベースが作成されることを確認します。 この処理は毎週やることを推奨されているので、あとでCronに登録しておくと良いでしょう。 Varnishの設定調整 仕上げにVarnishのVCLを調整します。 libvmod-geoip2のインストール手順にもあるように、VCLに以下の内容を追記します。 import geoip2; sub vcl_init { new country = geoip2.geoip2("/path/to/GeoLite2-Country.mmdb"); } sub vcl_recv { if (country.lookup("country/names/en", client.ip) != "Japan") { 追加で書きたいVCLの処理を色々 return (synth(403, "Forbidden")); } } あとはVarnishにVCLを読ませます。落ちても良い環境の場合はVarnishの再起動でも良いですが、キャッシュをたくさん抱えている場合は、 sudo varnishadm -T localhost:6082 -S /etc/varnish/secret vcl.load 適当なVCL名 /etc/varnish/default.vcl sudo varnishadm -T localhost:6082 -S /etc/varnish/secret vcl.use 適当なVCL名 でVCLの差し替えができます。 もちろん、テスト用の環境でVCLの内容が正しいことをテストしてから行いましょう。 あとはアクセスログを見て、日本国外のアクセスが遮断されていることが確認できればOKです。 より細かい条件式はVarnishの公式ドキュメントなどを読んで、調整すればよいでしょう。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む