信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    素敵だら! Linux コマンド ~top~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回紹介するのは「top」!■toptop コマンドはサーバーや、プロセスきおけるcpu や メモリーの負荷状況をリアルタイムで継続的に確認出来るコマンドです。全体的な情報がわかるので、情報量は多いですが見方を覚えておくととても便利です。よく使うものとして知っておきたいのは情報のソートです。まずtop と打つと、ターミナルのウィンドウ全体に情報が表示されます。上部がサーバー・全体の情報、下部のリストになっているのが各プロセス(バックグラウンドで動いているアプリやユーザーが実行しているコマンドなど)毎の情報です。確認の流れとして、例えば不調の原因が、何なのか上部の情報から、それが cpm なのか メモリーなのかを確認し、では実際にそこに負荷を与えているプロセスは何なのか下部リストを確認して割り出す、などが考えられます。下部リストはshift + m によってメモリーソートshift + p によって cpu ソートshift + o に続けて、表示された一覧表から任意の情報によるソートが利用できます。画面を閉じるときにはCtrl + c です。以上、負荷状況を確認するのに便利な `top` でした!

  • テクログ

    素敵だら! Linux コマンド ~ファイル内容の表示 その1~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回はファイル内容を表示する、読み取るコマンドをいくつかご紹介します。ぱっと思いつくだけでも、cat, less, tail, head, more などのコマンドがあり、また vi (vim) や emacs などのエディタを使用することもあります。コマンドごとに強みがあるので、用途に応じて使い分けられるようにしたいですね。■less, more引数にファイルを指定するか、標準出力に対してパイプを通すことで表示することができます。※less も more も基本操作性は変わらないので、機能が多い less を使うことをお勧めしますless, more いずれも一度にすべて読み込むわけでなく、一部だけを読み取って表示させるので、高速に動きます。表示中、`q` を押すことで終了します。less text.txt cat text.txt | less また、これは結構大事なことですが、これらのコマンドは読み取り専用なので、誤ってファイルを変更してしまったり、タイムスタンプを変えてしまったりすることがありません。less, more は開いたファイル中から特定の文字を検索することも可能です。※いずれもファイルを開いた状態で `/` に続いてキーワードを打ち込む※次の検索結果に移動するときは `n`ただ、ログのような巨大なファイルだと検索に時間がかかるので、そういう時には grep コマンドを使った方がよいです。grep による検索結果が多いようであれば上記のようにパイプを通せば、検索結果が流れることなく確認でき、かつその検索結果のなかからさらに検索することも可能です。

  • テクログ

    素敵だら! Linux コマンド ~diff~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。緊急事態宣言中に紹介するのは「diff」!■diffdiff はファイル同士の差分を教えてくれるコマンドです。まずは通常の使い方から。例えば、a.txt1 2 3 b.txt1 4 3 のようなファイルがあったとして、diff a.txt b.txt ※変更前、変更後、の順番で指定のように実行すると、2c2 < 2 --- > 4 ※一行目に表示されている英字はそれぞれ a(added)、d(deleted)、c(changed)を示しています※「2c2」は a.txt の二行目から b.txt の二行目に変更があることを示しています ※ `-c` や `-u` オプションを付けると、差分がより見やすい形式で表示されますのように差分箇所を確認することができます。プログラマーで、コード管理を Git や Subversion で行っていれば、ほぼ使う機会もない機能ですが、オプションの組み合わせによって、利用するシーンの幅が広がります。おすすめのオプション組み合わせは `-r` と `-q` と `--exclude` です。diff -rq --exclude=.git src src.back `-r` で複数のファイルを、再帰的に走査し、`-q` で差分のあるファイル名のみを取得し、 `--exclude` で走査不要なディレクトリ・ファイルを指定します。例えば、あまりないとは思いますが、デプロイツールを使わず、cli から直接反映させるようなときに、複数ファイルに渡って反映前後での差分確認に使うことができます。以上、知っておくと、いざという時に便利な diff でした!

  • テクログ

    素敵だら! Linux コマンド ~wget~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。年明け第一回目は「wget」!※つらいので今回から1コマンドずつ紹介することにしました。■wgetwget は何かをダウンロードしたいときに使うコマンド。ページを画像やCSSなども丸ごとダウンロードしたり、簡易的なクローリングもできちゃうパワフルなダウンローダーです。まずは通常の使い方から。wget http://example.com/ とすると、対象のページHTMLが `index.html` としてダウンロードされます。保存名を指定したいときにはwget http://example.com/ -O test.html `-O` オプションを使います。Linux で wget を使用するシーンとしては、.zip や .tar などの圧縮されたソースデータをダウンロードすることが多いのではないでしょうか。データが置いてあるホスティングサーバー上ではアクセスによる負荷を分散させるために、ダウンロードURLをミラーサイトにリダイレクトさせていることがあります。wget --trust-server-names https://sourceforge.net/projects/notepadplusplus.mirror/files/latest/download そんな時は、`--trust-server-names` を使えば正常にダウンロードできます。他にもWEB魚拓のように、あるサイトのページをまるっとダウンロードしたいときは、wget -k -p -w 3 http://abehiroshi.la.coocan.jp/ とすると、他のページや画像なども一緒にまとめてダウンロードしてくれます。`-k`  `--convert-links`ダウンロードしたHTMLやCSSのリンクを、ローカル内の相対パスに変換します。`-p` `--page-requisites`ページの表示に必要なファイルをすべてダウンロードします。`-w` `--wait`再帰的にダウンロードするとき、指定した秒数分間隔をあけて実行します。クローラー、スパイダー、すべてそうですが、再帰的なアクセス・ダウンロードするときには、必ず数秒の間隔をあけるなど、サーバーへの負荷を考慮してください!!!以上、2020年一発目は wget でした!

  • テクログ

    cURLのメモリリーク

    こんにちは、kaiです。最近新作ゲームをプレイ中に自宅PCのメモリ使用率が95%まで上がったことがあって(windows defenderの問題でした)、メモリリークって怖いな…と思う今日この頃ですが、それに関連して今回は担当していた案件で遭遇した問題について紹介します。取得したURLにPHPのcURL関数を用いてアクセスするプログラムを作成したところ、実行中、時間を追うごとにサーバーのメモリ消費量が増大していく現象が発生しました。プログラム側ではスタックし続けるような処理を実装していないので、調査したところ、curlの古いバージョンにはキャッシュを蓄積し続けるバグが存在しておりプログラム実行中にはメモリが解放されずに消費されていくことが分かりました。そこで暫定の対応ではありますが、curl利用部分を個別のプログラムとして切り出し、そこにURLを分割して渡すことでメモリ消費を抑える形に改修しました。追々バージョンアップや別の方法に変えたいところですね…まだ記事作成時点でテスト中ですが、結果や追加対応などはまた報告できればと。外部要因の不具合はなかなか出くわさなかったので個人的には良い経験になったと思います。ではまた。・参考URLhttps://qiita.com/digitalpeak/items/4b39fdcb8fae7d09f406https://blog.eviry.com/entry/2019/07/23/160715_1

  • テクログ

    AWS-CLIコマンドでEC2のメトリクスをいろいろ取りたい

    # aws-cliコマンドさくっと、EC2のインスタンスの情報をcliで取りたいときのコマンドです。##EC2のタグについてるサーバの名前を知りたい時aws ec2 describe-instances | jq -r '.Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value' #ステータスがrunning状態のTagsがKey=Nameのをインスタンスを取得aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value' #running状態かつ、 TagsがKey=NameのインスタンスIDとインスタンス名を取得aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' #インスタンス名だけを抽出して、整形して出力aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' | grep "InstanceName" | awk '{print $2}' | sed -e 's/"//g' -e 's/,//g' > hogeファイル #インスタンスIDだけを抽出して、整形して出力aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' | grep "InstanceId" | awk '{print $2}' | sed -e 's/"//g' -e 's/,//g' #EC2についてるEIPを取得aws ec2 describe-addresses --query '*[].PublicIp' --output text | tr '\t' '\n' #ローカルPCからAWSへ取得したEIPリストを使ってSSHして、コマンド叩く用のシェル#!/bin/bash aws ec2 describe-addresses --query '*[].PublicIp' --output text | tr '\t' '\n' > elastic_ip.lst export AWS_HOME=${HOME}/.aws export AWS_CONFIG_FILE=${AWS_HOME}/config export ELASTIC_IP=${HOME}/elastic_ip.lst cat ${ELASTIC_IP} | while read line do ssh -n user@$line -p 22 -i /xxxxxx/xxxxxx 'example-command' > result.txt done