ablog

不器用で落着きのない技術者のメモ

Linux

RHEL7 に pip をインストールする

RHEL7.6 (Kernel 3.10) に pip をインストールしたメモ。 $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ sudo python get-pip.py 参考 python - How to install pip on Redhat Linux - Stack Overflow

grep でパターンにマッチする・しないファイルをリストする

マッチするファイルのリスト $ grep -l END *.sql マッチしないファイルのリスト $ grep -L END *.sql 参考 » grepのオプションおさらい TECHSCORE BLOG

chroot を使ってみる

環境 $ cat /etc/issue Amazon Linux AMI release 2018.03 Kernel \r on an \m $ uname -r 4.14.33-51.37.amzn1.x86_64 準備 $ mkdir -p change/the/dir $ cd change/the/dir $ cp --parents /bin/bash . $ sudo cp --parents /bin/ls . $ sudo cp --parents…

PPS を計測する

インストール iperfをインストールする Amazon Linux で iperf を使ってみる - ablog sysstat をインストールする $ yum -y install sysstat htop 計測 サーバ側 iperf で listen する for i in {5201..5204} do iperf3 -s -p $i & done クライアント側 負荷…

YCSB をビルドしようとすると "invalid target release: 1.8" と怒られる

事象 YCSB をビルドしようとすると "invalid target release: 1.8" と怒られる。 $ git clone https://github.com/brianfrankcooper/YCSB.git $ mvn clean package Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (def…

Linux で CPU のマイクロコードのバージョンは /proc/cpuinfo で確認できる

Linux で CPU のマイクロコードのバージョンは /proc/cpuinfo で確認できる $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz stepping : 2 microcode : 0x3…

grep で特定の文字列を含むファイル名だけを表示する

grep で特定の文字列を含むファイル名だけを表示する。 % grep -l foo *.log dtruss.log 参考 grep で特定の文字列が含まれるファイル名だけをリストアップする方法 | ウェブル

less で - や + で始まるファイルを開く

- や + で始まるファイルを開こうとすると以下のようにエラーになるので、 $ less +ASM1_ora_19821.trc Missing filename ("less --help" for help) 以下のように -- とオプションをつけるとよい。 $ less -- +ASM1_ora_19821.trc 参考 less(1) - Linux manu…

dig コマンドで ドメインツリーを辿る

ルートDNSサーバからDNSコンテンツサーバまでのドメインツリーを辿りたい場合は dig +trace でできる。 % dig +trace d.hatena.ne.jp ; <<>> DiG 9.8.3-P1 <<>> +trace d.hatena.ne.jp ;; global options: +cmd . 143705 IN NS f.root-servers.net. . 143705…

GNU Parallel をインストールする

$ sudo yum -y install parallel

sysdig でシステムワイドに実行回数が多いシステムコールを調べる

Linux でシステムワイドに実行回数が多いシステムコールや実行時間が長いシステムコールを調べたい場合は、sysdig が便利です。 Sysdig Open Source - Getting Started With Csysdig - YouTube インストール root で以下を実行する。 rpm --import https://s…

vDSO gettimeofday

There is a Virtual Dynamic Shared Object (VDSO) implemented in the glibc runtime library. The VDSO maps some of the kernel code, which is necessary to read gettimeofday in the user-space. Standard Red Hat Enterprise Linux 5.5 allows the ge…

Linux で clocksource を変更する方法

Red Hat Enterprise Linux 6、 7 での clocksource の変更手順。 他のバージョンについてなどは How to change the clock source in the system - Red Hat Customer Portal 参照。 確認方法 現在の clocksource を確認する。 $ cat /sys/devices/system/cloc…

Linux で clocksource が xen と tsc で gettimeofday(2) の性能を比較する

Linux で clocksource が xen と tsc で gettimeofday(2) の性能を比較したメモ。 テストプログラムをコンパイルする 1億回 gettimeofday(2) を実行するテストプログラム(gettimeofday.c) #include <stdio.h> #include <sys/time.h> int main(void) { struct timeval tv; int co</sys/time.h></stdio.h>…

vmstat でタイムスタンプを表示する

vmstat: Support for timestamps with '-t' & fix for '-wd' From now the vmstat can append a timestamp to each line in the VMSTAT and DISKSTAT mode. You can achieve that with the '-t' switch. The '-w' switch now works in the DISKSTAT mode too…

nethogs でプロセス別の通信量を調べる

nethogs はネットワークの top コマンド的なもので通信量の多いプロセスをランキング表示して、秒間通信量も見ることができる。 インストール sudo yum -y install gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses* git clone https://github.com/rabo…

Linux で圧縮率の低い大きなサイズのファイルを作成する

Linux で圧縮率の低い大きなサイズのファイルを作成する方法をメモ。 $ dd if=/dev/urandom of=1gb.dat bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 12.9546 s, 82.9 MB/s $ ls -lh 1gb.dat -rw-rw-r-- 1 ec2…

SSH のタイムアウトを防止する(Keep Alive を有効にする)

事象 例えば、EC2 の Amazon Linux に ssh で接続して実行時間の長い*1コマンドを実行しているとタイムアウトして以下のメッセージが出力される。 packet_write_wait: Connection to **.***106.21 port 22: Broken pipe 解決策 クライアント(自分の場合は M…

スワップ領域がないとどうなるか

Systems Performance: Enterprise and the Cloud (English Edition)作者: Brendan Gregg出版社/メーカー: Prentice Hall発売日: 2013/10/07メディア: Kindle版この商品を含むブログを見るP.280 It is also interesting to ask what happen if no swap device…

sched: Interrupt Aware Scheduler

Anybody tested Oracle's interrupt aware CPU scheduler (https://t.co/vNb9mQ9M55). In addition Linux 4.12 brings 2 I/O schedulers BFQ & Kyber.— Stefan Koehler (@OracleSK) 2017年5月15日Linux のプロセススケジューラで割込み負荷の高いCPU以外にプ…

真のCPU使用率 by Brendan Gregg@Netflix

自分の「シンプルでシステマチックな〇〇性能分析」のルーツな面々のうちの2人*1 Brendan Gregg@Netflix と Tanel Poder@Gluent が素敵な絡みをしていたのでメモ。@brendangregg Could be useful: I once documented my understanding of the typical CPU co…

top の起源は VMS の MONITOR PROCESS/TOPCPU コマンド

top コマンドは William LeFebvre が VMS の MONITOR PROCESS/TOPCPU コマンドにインスパイアされて1984年にBSD 用に作ったのが起源らしい。へーと思ったのでメモ。Systems Performance: Enterprise and the Cloud作者: Brendan Gregg出版社/メーカー: Prent…

パッケージインストール時に NOKEY という Warning が出る

署名を検証するための適切なキーをインストールしていない場合は、メッセージに NOKEY という単語が含まれます: warning: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID 57bbccba https://access.redhat.com/documentation/ja-…

Linuxで hostname コマンドはどこから情報を取っているか

/proc/sys/kernel/hostname から取っている 参考 linux - Where does uname get its information from? - Unix & Linux Stack Exchange linux - Where does `hostname` store the hostname that I've set? - Unix & Linux Stack Exchange

UEK ダウンロードサイト

インターネットに接続されていないサーバで Yum でパッケージをインストール出来ない場合は Oracle Linux Yum Server | Oracle, Software. Hardware. Complete. からダウンロードできる。例えば、Oracle Linux 6 の UEK なら Oracle Linux 6 (x86_64) UEK Re…

プロセスがファイルに読み書きしてる内容を覗き見する

確認方法 ファイルディスクリプタ番号を確認して ls -l /proc/<PID>/fd tail で見てみる tail -f /proc/<PID>/fd/21 実行例 $ while :; do date; sleep 5; done > foo.log & [1] 23801 $ ps -elf|egrep [2]3801 1 S oracle 23801 22232 0 76 0 - 16525 wait 11:03 pts/</pid></pid>…

Oracle Linux 7 でサービス一覧を確認する

$ systemctl list-unit-files --no-pager UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.…

Oracle Linux 7 でデフォルト起動カーネルを変更する

Oracle Linux 7 でデフォルト起動カーネルを変更する手順 カーネルのエントリを確認 # grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 Oracle Linux Server (3.10.0-327.el7.x86_64 with Linux) 7.2 ★RHCK Oracle Linux Server (3.8.13-98.7.1.el…

Oracle Linux 6 でブロックデバイスとWWIDの対応を調べる

⁠25.3.1. WWIDWorld Wide Identifier (WWID) を使用するとデバイスを正確に識別することが可能です。 WWID 識別子は、 SCSI 標準で全 SCSI デバイスに必要とされるような永続的でシステムに依存しない ID となります。 すべてのストレージデバイスに対して必…

ローカルYumリポジトリでパッケージインストール時の依存関係を自動解決する

RHEL、CentOS や Oracle Linux などの Red Hat Enterprise Linux 派生ディストリビューションで、インターネットに接続できない環境でパッケージをインストールしたいけど、rpm でインストールしようとすると依存関係の解決が面倒な場合は、ローカルYumリポ…