- 投稿日:2020-06-21T20:18:02+09:00
LSコマンド実行時の配色変更
背景
WSL2でUbuntuを起動したときのdefaultのdircolors設定が見づらいので見やすい設定に変更したい。
1.dircolorsファイルの準備
lsコマンドを実行したときのディレクトリやファイルの配色は$LS_COLORSという環境変数によって決まる。
% echo $LS_COLORS$ echo $LS_COLORS no=00:fi=00:di=36:ln=35:pi=30;44:so=35;44:do=35;44:bd=33;44:cd=37;44:or=05;37;41:mi=05;37;41:ex=01;31:*.cmd=01;31:*.exe=01;31:*.com=01;31:*.bat=01;31:*.reg=01;31:*.app=01;31:*.txt=32:*.org=32:*.md=32:*.mkd=32:*.h=32:*.hpp=32:*.c=32:*.C=32:*.cc=32:*.cpp=32:*.cxx=32:*.objc=32:*.cl=32:*.sh=32:*.bash=32:*.csh=32:*.zsh=32:*.el=32:*.vim=32:*.java=32:*.pl=32:*.pm=32:*.py=32:*.rb=32:*.hs=32:*.php=32:*.htm=32:*.html=32:*.shtml=32:*.erb=32:*.haml=32:*.xml=32:*.rdf=32:*.css=32:*.sass=32:*.scss=32:*.less=32:*.js=32:*.coffee=32:*.man=32:*.0=32:*.1=32:*.2=32:*.3=32:*.4=32:*.5=32:*.6=32:*.7=32:*.8=32:*.9=32:*.l=32:*.n=32:*.p=32:*.pod=32:*.tex=32:*.go=32:*.sql=32:*.csv=32:*.sv=32:*.svh=32:*.v=32:*.vh=32:*.vhd=32:*.bmp=33:*.cgm=33:*.dl=33:*.dvi=33:*.emf=33:*.eps=33:*.gif=33:*.jpeg=33:*.jpg=33:*.JPG=33:*.mng=33:*.pbm=33:*.pcx=33:*.pdf=33:*.pgm=33:*.png=33:*.PNG=33:*.ppm=33:*.pps=33:*.ppsx=33:*.ps=33:*.svg=33:*.svgz=33:*.tga=33:*.tif=33:*.tiff=33:*.xbm=33:*.xcf=33:*.xpm=33:*.xwd=33:*.xwd=33:*.yuv=33:*.NEF=33:*.nef=33:*.aac=33:*.au=33:*.flac=33:*.m4a=33:*.mid=33:*.midi=33:*.mka=33:*.mp3=33:*.mpa=33:*.mpeg=33:*.mpg=33:*.ogg=33:*.opus=33:*.ra=33:*.wav=33:*.anx=33:*.asf=33:*.avi=33:*.axv=33:*.flc=33:*.fli=33:*.flv=33:*.gl=33:*.m2v=33:*.m4v=33:*.mkv=33:*.mov=33:*.MOV=33:*.mp4=33:*.mp4v=33:*.mpeg=33:*.mpg=33:*.nuv=33:*.ogm=33:*.ogv=33:*.ogx=33:*.qt=33:*.rm=33:*.rmvb=33:*.swf=33:*.vob=33:*.webm=33:*.wmv=33:*.doc=31:*.docx=31:*.rtf=31:*.odt=31:*.dot=31:*.dotx=31:*.ott=31:*.xls=31:*.xlsx=31:*.ods=31:*.ots=31:*.ppt=31:*.pptx=31:*.odp=31:*.otp=31:*.fla=31:*.psd=31:*.7z=1;35:*.apk=1;35:*.arj=1;35:*.bin=1;35:*.bz=1;35:*.bz2=1;35:*.cab=1;35:*.deb=1;35:*.dmg=1;35:*.gem=1;35:*.gz=1;35:*.iso=1;35:*.jar=1;35:*.msi=1;35:*.rar=1;35:*.rpm=1;35:*.tar=1;35:*.tbz=1;35:*.tbz2=1;35:*.tgz=1;35:*.tx=1;35:*.war=1;35:*.xpi=1;35:*.xz=1;35:*.z=1;35:*.Z=1;35:*.zip=1;35:*.ANSI-30-black=30:*.ANSI-01;30-brblack=01;30:*.ANSI-31-red=31:*.ANSI-01;31-brred=01;31:*.ANSI-32-green=32:*.ANSI-01;32-brgreen=01;32:*.ANSI-33-yellow=33:*.ANSI-01;33-bryellow=01;33:*.ANSI-34-blue=34:*.ANSI-01;34-brblue=01;34:*.ANSI-35-magenta=35:*.ANSI-01;35-brmagenta=01;35:*.ANSI-36-cyan=36:*.ANSI-01;36-brcyan=01;36:*.ANSI-37-white=37:*.ANSI-01;37-brwhite=01;37:*.log=01;32:*~=01;32:*#=01;32:*.bak=01;36:*.BAK=01;36:*.old=01;36:*.OLD=01;36:*.org_archive=01;36:*.off=01;36:*.OFF=01;36:*.dist=01;36:*.DIST=01;36:*.orig=01;36:*.ORIG=01;36:*.swp=01;36:*.swo=01;36:*,v=01;36:*.gpg=34:*.gpg=34:*.pgp=34:*.asc=34:*.3des=34:*.aes=34:*.enc=34:*.sqlite=34:echoコマンドで設定を編集することも可能だが、下記の様にdircolorsコマンドを用いて.dircolorsファイルを作成/編集するほうがよい。
% dircolors -p > ~/.dircolors // .dircolorsファイルを作成今回は既に作成済のsolarized テーマを使用した。
% git clone https://github.com/seebi/dircolors-solarized % cp dircolors-solarized/dircolors.ansi-universal ~/.dircolors
2.設定の反映
下記のコマンドで設定を反映しエイリアスを行えば次回以降から反映される。
.bashrcあたりに記載しておけばよい。% eval `dircolors ~/.dircolors -b` //.dircolorsファイルを反映 % alias ls='ls --color=auto'その他
ついでに.bashrc の60行目付近下記の様に変更するとコマンドラインの先頭のあたりの色もみやすくなります。
if [ "colorprompt"=yes];thenPS1=′colorprompt"=yes];thenPS1=′{debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[00;36m]\w[\033[00m]\$ ' else参考
- 投稿日:2020-06-21T17:48:01+09:00
基本的なLINUXコマンド
基本的なLinuxのコマンド
こんなコマンドあったなーって思い出すのにちょうどいい内容です。
オプションとかは書いていないので詳しく知りたい方は別のサイトで調べたほうがよいです。コマンドラインでの編集
コマンド 内容 ctrl + b 1文字戻る ctrl + f 1文字進む ctrl + a 行頭に移動する ctrl + e 行末に移動する ctrl + p,↑ 1つ前(Previous)のコマンドを表示 ファイルとディレクトリの確認
コマンド 内容 pwd カレントディレクトリを表示 cd カレントディレクトリを変更する ls カレントディレクトリ内のファイルを表示する ファイル操作
コマンド 内容 mkdir [オプション] <作成するディレクトリ名> ディレクトリを作成する touch <新しいファイル名1> <新しいファイル名2>... ファイルを作成する rm [オプション] <削除するファイル名1> <削除するファイル名2>... ファイルを削除する cat [オプション] <ファイル名> ファイルを表示する cp [オプション] <コピー元>... <コピー先> ファイルやディレクトリのコピー mv [オプション] <移動元>... <移動先> ファイルやディレクトリを移動する ファイルを探す
コマンド 内容 find <検索開始ディレクトリ> <検索条件> <アクション> ファイルを検索 コマンドの内容を調べたいとき
コマンド 内容 man <調べたいコマンド名> きっと教えてくれる がんばりましょー!
参考(Thanks)
- 投稿日:2020-06-21T16:52:34+09:00
Linux LVM RAID
RAID1の実現としては、昔ながらのMDカーネルドライバを使ってRAIDアレイを作りその上でLVM を作る、いわゆるLVM on RAIDと呼ばれる方法もありますが(LVMは作らなくても構わない)、
ここではLVM の機能でミラー化された、LVM RAID volume の作成方法を記します。
LVM は RAID 1/4/5/6/10をサポートしています。
(内部ではMDカーネルドライバを使っている)ルートで作業します。
対象ディスクは /dev/sde, /dev/sdf
ls -F /dev/sde* /dev/sdf* /dev/sde /dev/sdfパーティションの作成
パーティションを削除してディスク全体をLVM管理下に置くことも可能。
gdisk /dev/sde Command (? for help): p 略 Disk /dev/sde: 3907029168 sectors, 1.8 TiB Number Start (sector) End (sector) Size Code Name Command (? for help): n 略 Hex code or GUID (L to show codes, Enter = 8300): 8e00 Changed type of partition to 'Linux LVM' Command (? for help): p Disk /dev/sde: 3907029168 sectors, 1.8 TiB 略 Number Start (sector) End (sector) Size Code Name 1 2048 3907029134 1.8 TiB 8E00 Linux LVM Command (? for help): w 略 Do you want to proceed? (Y/N): y 略 The operation has completed successfully.gdisk /dev/sdf 略確認
ls -F /dev/sde* /dev/sdf* /dev/sde /dev/sde1 /dev/sdf /dev/sdf1PV(Physical Volume)の作成
pvcreate <devices>
pvcreate /dev/sde1 /dev/sdf1 Physical volume "/dev/sde1" successfully created. Physical volume "/dev/sdf1" successfully created.確認
pvs
pvdisplay
pvs PV VG Fmt Attr PSize PFree /dev/sde1 lvm2 --- <1.82t <1.82t /dev/sdf1 lvm2 --- <1.82t <1.82t pvdisplay "/dev/sde1" is a new physical volume of "<1.82 TiB" --- NEW Physical volume --- PV Name /dev/sde1 VG Name 最初は空 PV Size <1.82 TiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID BTiUhz-TssW-6hFv-tr70-QO3Y-QbU3-mpNL8N "/dev/sdf1" is a new physical volume of "<1.82 TiB" --- NEW Physical volume --- PV Name /dev/sdf1 VG Name 最初は空 PV Size <1.82 TiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 6Il3bs-mr2f-46RS-rV5O-Tavu-PPcu-QNofe5削除
pvremove <devices>
pvremove /dev/sde1 /dev/sdf1VG(Volume Group)の作成
vgcreate <volume name> <devices>
vgcreate vg1 /dev/sde1 /dev/sdf1 Volume group "vg1" successfully created確認
vgs
vgdisplay
vgscan
pvdisplay
vgs VG #PV #LV #SN Attr VSize VFree vg1 2 0 0 wz--n- <3.64t <3.64t vgdisplay --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size <3.64 TiB PE Size 4.00 MiB Total PE 953862 Alloc PE / Size 0 / 0 Free PE / Size 953862 / <3.64 TiB VG UUID eGU09g-QCWJ-pbCR-a9rf-YtKW-8b9e-BUqIPI vgscan Reading all physical volumes. This may take a while... Found volume group "vg1" using metadata type lvm2 pvdisplay --- Physical volume --- PV Name /dev/sde1 VG Name vg1 ← VG名 PV Size <1.82 TiB / not usable <4.07 MiB Allocatable yes PE Size 4.00 MiB Total PE 476931 Free PE 476931 Allocated PE 0 PV UUID BTiUhz-TssW-6hFv-tr70-QO3Y-QbU3-mpNL8N --- Physical volume --- PV Name /dev/sdf1 VG Name vg1 ← VG名 PV Size <1.82 TiB / not usable <4.07 MiB Allocatable yes PE Size 4.00 MiB Total PE 476931 Free PE 476931 Allocated PE 0 PV UUID 6Il3bs-mr2f-46RS-rV5O-Tavu-PPcu-QNofe5VG名の変更
vgrename <old vg name> <new vg name>
VGの削除
vgremove <vg name>
RAID1 LV(Logical Volume)の作成
lvcreate --type raid1 -m <N> -L <S> -n <LV> <VG>
- N: ミラー数を指定。ディスクが2台なら1
- S: LVのサイズを指定
- LV: 作成したいLV名
- VG: 使用するVG名(vgcreateで作成したもの)
lvcreate --type raid1 -m 1 -L 1.8T -n lv1 vg1 Rounding up size to full physical extent 1.80 TiB Logical volume "lv1" created.確認
lvs
lvdisplay
lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 rwi-a-r--- 1.80t 0.00 lvdisplay --- Logical volume --- LV Path /dev/vg1/lv1 LV Name lv1 VG Name vg1 LV UUID WBAnij-OHQm-8jwT-OV0X-iVAk-9FMT-DpYiXJ LV Write Access read/write LV Creation host, time d1, 2020-05-04 21:05:59 +0900 LV Status available # open 0 LV Size 1.80 TiB Current LE 471860 Mirrored volumes 2 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:4LV名の変更
lvrename /dev/<vg name>/<old lv name> /dev/<vg name>/<new lv name>
LVの削除
lvremove <lv path>
lvremove /dev/vg1/lv1ファイルシステムの作成
mkfsコマンド <lv path>
mkfs.ext4 /dev/vg1/lv1LVのマウント
ここではマウントポイントは
/disks/raid
としています。mount /dev/vg1/lv1 /disks/raid df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg1-lv1 1.8T 77M 1.7T 1% /disks/raidfstabに記載
blkid | grep mapper /dev/mapper/vg1-lv1_rimage_0: UUID="896732c2-ce1b-4edc-889f-c749afcde18f" TYPE="ext4" /dev/mapper/vg1-lv1_rimage_1: UUID="896732c2-ce1b-4edc-889f-c749afcde18f" TYPE="ext4" /dev/mapper/vg1-lv1: UUID="896732c2-ce1b-4edc-889f-c749afcde18f" TYPE="ext4" ls -l /dev/disk/by-uuid/ lrwxrwxrwx 1 root root 10 May 4 20:15 2f0035ec-eb69-4cb1-9a02-7774a7de8c87 -> ../../sdc1 lrwxrwxrwx 1 root root 10 May 4 20:15 4d0dc8c5-4640-4817-becc-966186982c06 -> ../../sda2 lrwxrwxrwx 1 root root 10 May 4 21:13 896732c2-ce1b-4edc-889f-c749afcde18f -> ../../dm-4 lrwxrwxrwx 1 root root 10 May 4 20:15 e3641bda-7386-4330-b325-e57d11f420bb -> ../../sdb1 lrwxrwxrwx 1 root root 10 May 4 20:15 f42dc771-696a-42e7-9f2b-9dbb6057c6b8 -> ../../sdd1 lrwxrwxrwx 1 root root 10 May 4 20:15 FA3B-8EA8 -> ../../sda1 vim /etc/fstab UUID="896732c2-ce1b-4edc-889f-c749afcde18f" /disks/raid ext4 noatime,nodiratime,relatime 0 0参考
- LVM RAID の運用方法: https://qiita.com/nigaky/items/03fe655af225324567d4
- Linux lvm
- LVM概要: https://qiita.com/TsutomuNakamura/items/e5ebd4565bcdd8fe6c94
- LVMで 論理ボリュームの作成、拡張、縮小、複製: https://qiita.com/TsutomuNakamura/items/93c6333c8dd32aeb197a
- LVMでRAID1の構築、障害対応、他RAIDボリュームの追加: https://qiita.com/TsutomuNakamura/items/c9c277049e0032ed6116
- LVMでスナップショットの作成と状態の復元: https://qiita.com/TsutomuNakamura/items/a68377952d07397db448
- Linuxインストール時にLVM on RAID1 な環境を構築する: https://qiita.com/TsutomuNakamura/items/1b7928b3595a6ca2a304
- SUSE LVMの設定: https://documentation.suse.com/ja-jp/sles/15-SP1/html/SLES-all/cha-lvm.html
- Linux LVM (Logical Volume Manager): https://www.nslabs.jp/storage.rhtml
- https://www.atmarkit.co.jp/ait/articles/1909/06/news018.html
- https://www.atmarkit.co.jp/ait/articles/1909/13/news019.html
- https://www.atmarkit.co.jp/ait/articles/1909/19/news022.html
- 投稿日:2020-06-21T16:33:45+09:00
Raspberry PIのコンソール接続し、ロカールIP及びSD情報表示
概要
RaspberryPIでSSHターミナルを起動した際に現在DHCPから配布されているIPアドレスを表示します。
そしてSDカードの容量も表示します。修正ファイル 「.bashrc」
下記のコマンドでファイルを修正します。
VIを使っていますが、他の編集ツールでも大丈夫です。vi ~/.bashrc上記のファイルに以下の内容を追記し、保存します。
echo "==IP Address==" ip addr | grep "inet " | grep brd | awk '{print $2}' | awk -F/ '{print $1}' echo "" echo "==Disk Space==" df -hSSHターミナルを起動
ターミナルを起動すると以下の画面のように表示されます。
Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jun 21 08:19:14 2020 from 192.168.1.2 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. ==IP Address== 192.168.1.13 ==Disk Space== Filesystem Size Used Avail Use% Mounted on /dev/root 15G 5.8G 7.9G 43% / devtmpfs 841M 0 841M 0% /dev tmpfs 970M 0 970M 0% /dev/shm tmpfs 970M 8.6M 962M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 970M 0 970M 0% /sys/fs/cgroup /dev/mmcblk0p1 253M 51M 202M 21% /boot tmpfs 194M 0 194M 0% /run/user/1000その他
グローバルのIPも表示したい場合は、下記のコマンドを利用してください。
pi@raspberrypi:~ $ curl globalip.me 219.107.XXX.XXX
終わりに
今日はSSHで接続した場合、「.bashrc」が実行される内容にコマンドを追記してみました。
何より現在使っているディスクの容量が確認できてよかったと思います。
皆さんも表示したい情報がありましたらこのファイルに追記してみてください。
- 投稿日:2020-06-21T16:33:45+09:00
Raspberry PIのコンソール接続し、ローカルIP及びSD情報表示
概要
RaspberryPIでSSHターミナルを起動した際に現在DHCPから配布されているIPアドレスを表示します。
そしてSDカードの容量も表示します。修正ファイル 「.bashrc」
下記のコマンドでファイルを修正します。
VIを使っていますが、他の編集ツールでも大丈夫です。vi ~/.bashrc上記のファイルに以下の内容を追記し、保存します。
echo "==IP Address==" ip addr | grep "inet " | grep brd | awk '{print $2}' | awk -F/ '{print $1}' echo "" echo "==Disk Space==" df -hSSHターミナルを起動
ターミナルを起動すると以下の画面のように表示されます。
Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jun 21 08:19:14 2020 from 192.168.1.2 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. ==IP Address== 192.168.1.13 ==Disk Space== Filesystem Size Used Avail Use% Mounted on /dev/root 15G 5.8G 7.9G 43% / devtmpfs 841M 0 841M 0% /dev tmpfs 970M 0 970M 0% /dev/shm tmpfs 970M 8.6M 962M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 970M 0 970M 0% /sys/fs/cgroup /dev/mmcblk0p1 253M 51M 202M 21% /boot tmpfs 194M 0 194M 0% /run/user/1000その他
グローバルのIPも表示したい場合は、下記のコマンドを利用してください。
pi@raspberrypi:~ $ curl globalip.me 219.107.XXX.XXX
終わりに
今日はSSHで接続した場合、「.bashrc」が実行される内容にコマンドを追記してみました。
何より現在使っているディスクの容量が確認できてよかったと思います。
皆さんも表示したい情報がありましたらこのファイルに追記してみてください。
- 投稿日:2020-06-21T16:33:17+09:00
初心者なりに/proc ディレクトリについて調べてみた
概要
Red Hat Enterprise Linux 4: リファレンスガイド - 5.3. /proc/配下のディレクトリ の説明によると
カーネルに関する情報の共通グループは、/proc/ ディレクトリ内のディレクトリ及びサブディレクトリにグループ化されます。
だそうです、あんまり分かりません。
通信用語の基礎知識 - /proc によるとUNIXやPOSIX準拠OS(Linux等)で、プロセス関係の情報が置かれるディレクトリ。
概要
具体的には、procfsをマウントするためのディレクトリ(マウントポイント)である。
UNIX System V、BSD、Linuxなどオペレーティングシステム(OS)を問わずこのディレクトリは存在するが、その内容については各OSのカーネルの仕様に依存しており、相互の互換性などはない。
OSによっては、プロセスの情報だけでなく、カーネルの情報を読み出すこともできる。
Linuxでも、どのディストリビューションにも例外なくあるが、FHSには規定されていない。
特徴
ファイル
ここに置かれた情報は、実際にはファイルとしてその実体は存在しない。
procfsがマウントされていると、PIDのディレクトリがあるように見え、ここから各種プロセスの情報を読み出すことができる。情報は一見ディレクトリやファイルに見えるが、仮想化されたものであって、ディスク上にファイル等がある訳ではない。
UNIXだけでなくLinuxでも同様だが、加えてカーネル内部の情報にアクセスするための情報がある。これも一見ファイルに見えるが、同様にファイルではない。だそうです
こっちの方が分かりやすいですね
man proc
してみるとめちゃくちゃ長いですが、概要はDESCRIPTION
The proc filesystem is a pseudo-filesystem which provides an interface to kernel data
structures. It is commonly mounted at /proc. Typically, it is mounted automatically by
the system, but it can also be mounted manually using a command such as:mount -t proc proc /procMost of the files in the proc filesystem are read-only, but some files are writable,
allowing kernel variables to be changed.DeepL に突っ込むと
説明
proc ファイルシステムはカーネルのデータ構造へのインターフェイスを提供する擬似ファイルシステムです。 一般的には /proc にマウントされます。 通常、システムによって自動的にマウントされますが、以下のようなコマンドを使って手動でマウントすることもできます。mount -t proc proc /procproc ファイルシステム内のほとんどのファイルは読み込み専用ですが、一部のファイルは書き込み可能で、カーネル変数を変更することができます。
なんとなく分かってきました
プロセスディレクトリ
まず、
ls
してみると数字のディレクトリが複数あります。
これは実行時大してプロセスが起動していないので少ないですが、
ps
してみると同じプロセスIDが確認出来ると思います。$ ls -al /proc | head total 4 dr-xr-xr-x 144 root root 0 Jun 10 00:59 . drwxr-xr-x 23 root root 4096 Jun 10 00:59 .. dr-xr-xr-x 9 root root 0 Jun 10 00:59 1 dr-xr-xr-x 9 mizutoki_ mizutoki_ 0 Jun 10 00:59 10 dr-xr-xr-x 9 mizutoki_ mizutoki_ 0 Jun 10 01:15 188 dr-xr-xr-x 9 mizutoki_ mizutoki_ 0 Jun 10 01:15 189 dr-xr-xr-x 9 root root 0 Jun 10 00:59 8 dr-xr-xr-x 9 root root 0 Jun 10 00:59 9 dr-xr-xr-x 2 root root 0 Jun 10 00:59 acpi $ ps PID TTY TIME CMD 10 pts/0 00:00:00 zsh 218 pts/0 00:00:00 psそれぞれのプロセス固有の情報が置かれているのでこれらをプロセスディレクトリと呼ぶそうです。
そして/proc/self
は自分のプロセスIDを分かっていなくても、自分自身のプロセスディレクトリにアクセス出来るそうです。そのプロセスディレクトリの中身を覗いてみます
$ ls -al /proc/10 total 0 dr-xr-xr-x 9 mizutoki_ mizutoki_ 0 Jun 10 00:59 . dr-xr-xr-x 143 root root 0 Jun 10 00:59 .. dr-xr-xr-x 2 mizutoki_ mizutoki_ 0 Jun 10 01:26 attr -r-------- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 auxv -r--r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 cgroup --w------- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 clear_refs -r--r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 cmdline -rw-r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 comm -rw-r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 coredump_filter -r--r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 cpuset lrwxrwxrwx 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 cwd -> /mnt/c/Users/mizutoki_ -r-------- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 environ lrwxrwxrwx 1 mizutoki_ mizutoki_ 0 Jun 10 00:59 exe -> /bin/zsh dr-x------ 2 mizutoki_ mizutoki_ 0 Jun 10 00:59 fd dr-x------ 2 mizutoki_ mizutoki_ 0 Jun 10 01:26 fdinfo -rw-r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 gid_map -r-------- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 io -r--r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 limits dr-x------ 2 mizutoki_ mizutoki_ 0 Jun 10 01:26 map_files -r--r--r-- 1 mizutoki_ mizutoki_ 0 Jun 10 01:26 maps . . .ファイル群
理解が容易だったものをいくつか抜粋して見ますと
/proc/[pid]/cmdline
プロセスの完全なコマンドラインを保持
例えば、$ cat /proc/10/cmdline -zsh $ cat /proc/self/cmdline cat/proc/self/cmdline
/proc/[pid]/cwd
プロセスの現在の作業ディレクトリ
/proc/[pid]/environ
現在実行中のプログラムが起動された時に設定された最初の環境が含まれている。
この説明だとあまり分かりませんが、cat
して見ると環境変数が入っています*
/proc/[pid]/status
/proc/[pid]/stat
,/proc/[pid]/statm
の情報の多くを、人間が解析しやすい形式で表示する$ cat /proc/self/status Name: cat Umask: 0022 State: R (running) Tgid: 1035 Ngid: 0 Pid: 1035 PPid: 10 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 1000 1000 1000 1000 FDSize: 64 Groups: 4 20 24 25 27 29 30 44 46 108 114 1000 NStgid: 1035 NSpid: 1035 NSpgid: 1035 NSsid: 10 VmPeak: 6324 kB VmSize: 6324 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 836 kB VmRSS: 836 kB RssAnon: 68 kB RssFile: 768 kB RssShmem: 0 kB VmData: 312 kB VmStk: 140 kB VmExe: 32 kB VmLib: 2112 kB VmPTE: 52 kB VmSwap: 0 kB HugetlbPages: 0 kB CoreDumping: 0 Threads: 1 SigQ: 0/102431 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 . . .
/proc/cpuinfo
CPU と アーキテクチャに依存する項目のコレクション$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 158 model name : Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz stepping : 10 microcode : 0xffffffff cpu MHz : 3695.998 cache size : 12288 KB physical id : 0 siblings : 12 core id : 0 cpu cores : 6 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 21 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall . . .他にもたくさんあるので、詳しく知りたい方は
man proc
を読んでみてください参照
- 投稿日:2020-06-21T13:18:44+09:00
Ubuntuで5GHz帯アクセスポイントが作成できなかった話
Ubuntuで5GHz帯アクセスポイントが作成できなかった話
要約
Ubuntuで無線LANルーターの代わりが出来ると聞いて試してみたら、5GHz帯が使用できなかった。原因はIntelチップセット用Linuxドライバiwlwifiの仕様。atherosドライバの一部ならいけるらしいが試せていない。
環境
- OS: Ubuntu 20.04 LTS
- ハードウェア: 小型PC。WiFiチップはIntel AC7265。インターフェイスはm.2 2230。
現象
- UbuntuだとGUIからアクセスポイント作成可能ということで、手順に沿ってアクセスポイントを作成した。
- 2.4GHz帯を指定すると問題なくアクセスポイントとして機能するのに、5GHz帯を指定すると機能しなかった。
- もちろんハードウェアは2.4GHz, 5GHz両方に対応しているし、設定すれば5GHzのアクセスポイントに問題なく接続できる。
調査結果
Intelのドライバは5GHzアクセスポイントモードが無いという記述があった。確かに紹介されていたリンクには"AP mode on 2.4GHz (on devices driven by iwlmvm)"とあり5GHzと書かれていない。ということは、クライアントモードなら5GHz対応だがアクセスポイントモードには5GHz非対応であると考えられる。
Intel AC7265のページ自体には対応周波数しか書かれていないので、ハードウェアというよりドライバ側の仕様なのだろうか。
上記に至るまでに試したこと
APモード対応確認
上記ページにあったリンク先の記載に従って
iw list
でAPに対応可能か確認したら対応していた。2.4GHz帯と5GHz帯でAPモード対応に違いがあるかもと思って調べたが、両周波数に共通の項目だった。create_apの導入
- 2.4GHz帯のチャンネル指定では動作して5GHz帯は不可という点は変わらず。
- 国コードが関係しているという話から、JPを指定すれば変わるかもしれないと思ったがそんなことはなかった。
- チャンネルを複数指定できるかと思ったができない。
- 2.4GHz, 5GHzでそれぞれ別々にアクセスポイントをたてられるかと思ったが、 チップセットによって同時に立てられるアクセスポイント数が決まっているとのこと。
iw list
の結果なのでcreate_apに限った話ではない。試さなかったこと
カーネル再構築
no IR フラグについての回答にカーネルにパッチを当てると出来るみたいなことを書いてあるのだけれど、Debianの話なので少なくともそのまま適用できるものではない。仮に可能だとしても、分析して適用してみようとまでは思えなかった。
無線LANチップの交換
外付けアンテナ(無線アダプタ)を買うぐらいなら小型WiFiルーターを買ったほうがいいわけで、あくまでも内蔵無線LANチップを交換する路線で。
Qualcomm製チップ用ドライバには対応しているものがあるとのことだが、残念ながらそのチップが載ったカードはMini PCI Expressのみで、Amazonではm.2 2230対応のカードは常識的な価格では入手不可能。
あきらめずに調べているとBointec DGF109AというチップにQCA6174A-5のチップが使われていて、さらに探すとMOUSERというところで売っていた。
MOUSER自体はコンシューマー向けではないものの、それなりの会社っぽい(よくはわからない)。ただ、購入しようとすると購入サイトでエラーが頻発すること、4,118円+エクスプレス料金2,000円とそれなりに高額なこと、2.4GHz帯のアクセスポイントは必要なので5GHz帯のアクセスポイントと排他的にしか運用できない仕様であった場合、仮に5GHzで使えても無駄な投資になることなどから注文を断念した。
考察
5GHz帯はDFSなどの問題もありドライバも対応が難しいのかもしれない。
改訂履歴
2020/5/30: 下書き
2020/6/20: 初版
- 投稿日:2020-06-21T11:55:35+09:00
大きなサイズのファイルを高速に作る方法
はじめに
空のファイルを作る時、どのようなコマンドを使っているでしょうか?
私の場合は以下のように、ファイルサイズが0であればtouch
コマンド、一定のサイズのファイルが必要な場合はdd
コマンドを使っていました。ところが
dd
コマンドとは別に、一定のサイズのファイルを作る方法としてfallocate
というコマンドがあることを知ったので、両者のパフォーマンスを比較してみました。[nkojima@akagi sample_files]$ touch sample.txt [nkojima@akagi sample_files]$ dd if=/dev/zero of=./sample2.txt bs=1K count=1024 1024+0 レコード入力 1024+0 レコード出力 1048576 バイト (1.0 MB) コピーされました、 0.00580267 秒、 181 MB/秒 [nkojima@akagi sample_files]$ ls -lah 合計 1.0M drwxrwxr-x 2 nkojima nkojima 43 6月 21 12:18 . drwx------. 5 nkojima nkojima 175 6月 21 12:17 .. -rw-rw-r-- 1 nkojima nkojima 0 6月 21 12:17 sample.txt -rw-rw-r-- 1 nkojima nkojima 1.0M 6月 21 12:18 sample2.txtテストに使用した環境
- CPU
- Kabylake: Pentium G4560
- マザーボード:ASRock H110M-STX
- メモリ:8GB(4GB×2枚)
- ストレージ:256GB SSD(NVMe)
- OS
- CentOS 7.8(2003)
テスト方法
dd
コマンドとfallocate
コマンドを使って、様々なサイズのファイルを作成して、その処理速度を測定しました。
- ファイルサイズ:100MB、500MB、1GB、2GB、4GB、8GB、16GB
dd
コマンドのオプションのブロックサイズ(-bs)は1MBとしました。- 処理時間の測定には、以下のように
date
コマンドを使ったため、正確な処理時間でありません。- 処理を3回実行して、その平均値をテスト結果としました。
[root@akagi ~]# date; dd if=/dev/zero of=dd.txt bs=1M count=100; date; 2020年 6月 21日 日曜日 12:48:28 JST 100+0 レコード入力 100+0 レコード出力 104857600 バイト (105 MB) コピーされました、 0.0362178 秒、 2.9 GB/秒 2020年 6月 21日 日曜日 12:48:29 JST [root@akagi ~]# date; fallocate -l 100m ./fallocate.txt; date; 2020年 6月 21日 日曜日 12:48:52 JST 2020年 6月 21日 日曜日 12:48:52 JSTテスト結果
- 以下の表を見れば一目瞭然、圧倒的に
fallocate
コマンドの方が高速でした。
- swap領域を作る時など、単一の大きなファイルを作る必要があるケースでは、特にfallocateコマンドが有用だと考えられます。
dd
コマンドは高速なストレージ(NVMe-SSD)を使ってもそれなりに処理時間がかかるので、低速なストレージだとさらに大きな差がつくのではないかと思います。
ファイルサイズ ddコマンドの処理時間(秒) fallocateコマンドの処理時間(秒) 100MB <1 <1 500MB <1 <1 1GB 1 <1 2GB 2 <1 4GB 4 <1 8GB 7 <1 16GB 15 <1 関連記事
- 指定したサイズと数量でテスト用ファイルを生成
- こちらの記事も、
dd
コマンドからfallocate
コマンドを利用する形に修正したほうが良さそうです。
- 投稿日:2020-06-21T03:12:46+09:00
linux alias 設定メモ./bashrc
linuxのaliasってどうやって設定すんの?
二種類ある。
- 一時的な設定
- 恒久的な設定一時的な設定
これだとログアウトしたりすると消えてしまう。
shellalias name='value'恒久的な設定
homeディレクトリ配下に
.bashrc
ってファイルが隠れているので追記する。.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions ★ここに追記 #例 alias la="ls -a"alias確認方法
現在登録されているエイリアスは
alias
コマンドで確認。[ec2-user@~]$ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias la='ls -a' alias ll='ls -l --color=auto' alias ls='ls --color=auto'経緯
dockerコマンドにエイリアスを設定したかった
同じイメージ名で
docker-compose build
すると<none>:<none>
という空のdockerのイメージファイルができてしまう。
上書きしてほしいところだが、いちいち消すしかないみたい。
だが、削除するために下記のコマンドを毎回打つのは面倒。shelldocker images -f dangling=true -q | xargs docker rmiコマンドメモ
command detail docker -f フィルタ docker -q ID抽出 xargs <commnad> <command> [パイプされた引数1] [引数2] [引数3] ... docker rmi <imageID> docker イメージ削除 なので
rmidang
というエイリアスにする。
dockerのconfigにエイリアスはないようなので、bashに追加することにした。gitみたいに用意してほしい。
ちなみにdangling
は宙ぶらりんの意。結果
.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions alias la="ls -a" #docker ##remove dangling images alias rmidang="docker images -f dangling=true -q | xargs docker rmi"参考
世の中のエンジニアのalias設定
https://qiita.com/reireias/items/d906ab086c3bc4c22147
aliasと関数で幸せになろう
https://qiita.com/belion_freee/items/528ff57b920d559abf3d
aliasの引数使いたいときは関数を使うbash起動時の設定ファイル実行順序
- 投稿日:2020-06-21T03:12:46+09:00
linux alias 設定メモ
linuxのaliasってどうやって設定すんの?
二種類ある。
- 一時的な設定
- 恒久的な設定一時的な設定
これだとログアウトしたりすると消えてしまう。
shellalias name='value'恒久的な設定
homeディレクトリ配下に
.bashrc
ってファイルが隠れているので追記する。.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions ★ここに追記 #例 alias la="ls -a"alias確認方法
現在登録されているエイリアスは
alias
コマンドで確認。[ec2-user@~]$ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias la='ls -a' alias ll='ls -l --color=auto' alias ls='ls --color=auto'経緯
dockerコマンドにエイリアスを設定したかった
同じイメージ名で
docker-compose build
すると<none>:<none>
という空のdockerのイメージファイルができてしまう。
上書きしてほしいところだが、いちいち消すしかないみたい。
だが、削除するために下記のコマンドを毎回打つのは面倒。shelldocker images -f dangling=true -q | xargs docker rmiコマンドメモ
command detail docker -f フィルタ docker -q ID抽出 xargs <commnad> <command> [パイプされた引数1] [引数2] [引数3] ... docker rmi <imageID> docker イメージ削除 なので
rmidang
というエイリアスにする。
dockerのconfigにエイリアスはないようなので、bashに追加することにした。gitみたいに用意してほしい。
ちなみにdangling
は宙ぶらりんの意。結果
.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions alias la="ls -a" #docker ##remove dangling images alias rmidang="docker images -f dangling=true -q | xargs docker rmi"参考
世の中のエンジニアのalias設定
https://qiita.com/reireias/items/d906ab086c3bc4c22147
aliasと関数で幸せになろう
https://qiita.com/belion_freee/items/528ff57b920d559abf3d
aliasの引数使いたいときは関数を使うbash起動時の設定ファイル実行順序
- 投稿日:2020-06-21T03:12:46+09:00
dockerコマンドをlinuxのalias設定に設定する
linuxのalias設定方法
二種類ある。
- 一時的な設定
- 恒久的な設定一時的な設定
これだとログアウトしたりすると消えてしまう。
shellalias name='value'恒久的な設定
homeディレクトリ配下に
.bashrc
というファイルが隠れているので追記する。.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions ★ここに追記 #例 alias la="ls -a"alias確認
現在登録されているエイリアスは
alias
コマンドで確認。[ec2-user@~]$ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias la='ls -a' alias ll='ls -l --color=auto' alias ls='ls --color=auto'追加したいdockerコマンド
同じイメージ名で
docker-compose build
すると<none>:<none>
という空のdockerのイメージファイルができてしまう。
上書きしてほしいところだが、下記のコマンドを打っていちいち消すしかないみたい。shelldocker images -f dangling=true -q | xargs docker rmiコマンドメモ
command detail docker -f フィルタ docker -q ID抽出 xargs <commnad> <command> [パイプされた引数1] [引数2] [引数3] ... docker rmi <imageID> docker イメージ削除 削除するために下記のコマンドを毎回打つのは面倒なので、dockerコマンドにエイリアスを設定したかったが、dockerのconfigにエイリアスはないらしい。
しかたなくbashに追加することにした。gitみたいに用意してほしい。今回は
rmidang
というエイリアスにする。
ちなみにdangling
は宙ぶらりんの意。結果
.bashrc# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions alias la="ls -a" #docker ##remove dangling images alias rmidang="docker images -f dangling=true -q | xargs docker rmi"参考
世の中のエンジニアのalias設定
https://qiita.com/reireias/items/d906ab086c3bc4c22147
aliasと関数で幸せになろう
https://qiita.com/belion_freee/items/528ff57b920d559abf3d
aliasの引数使いたいときは関数を使うbash起動時の設定ファイル実行順序