- 投稿日:2020-02-24T23:28:37+09:00
LVM構成のCentOS7でシャットダウンに時間が掛かる。
はじめに
CentOS7でシャットダウンに時間が掛かる事象が発生。
shutdown -h now
を実行して、
真っ黒画面に遷移した後、真っ黒画面の状態で90秒程停滞し、その後停止する。真っ黒画面の状態で
ESC
を押すと、下記のようなメッセージが確認できた。A stop job is running for LVM2 metadata daemonメッセージを検索すると、シャットダウン時に発生するLVMのバグらしい。
lvmetadの無効化
2.02.187
でfixされているようだが、2020/02/24時点、CentOS7向けの
lvm2
パッケージは2.02.185
が最新のようだったので、lvmetad
を無効化して
対処する。/etc/lvm/lvm.conf
を下記のように変更すると、lvmetadを無効化できる。"変更前"use_lvmetad = 0"変更後"use_lvmetad = 1再度OSをシャットダウンして、すんなり落ちれば対処完了。
参考
sourceware.org - lvm2.git / commitdiff
Red Hat -メタデータデーモン (LVMETAD)
- 投稿日:2020-02-24T21:03:54+09:00
【Linuxコマンド】 man コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 man コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧man コマンドとは
各コマンドのマニュアルを確認する為のLinuxコマンドです。
"man" は "manual"の略です。コマンドの使い方
$ man '確認したいコマンド' # cd コマンドを確認する例 $ man cdman コマンドのオプション一覧
オプション 説明 -a 対象のすべてのマニュアルの表示 -d デバッグモードで表示 -k マニュアルの検索 -K マニュアルの本文で検索 -P pagerの指定 -c コンフィグファイルを指定 -P オプション
# cd コマンドのマニュアルをcatを使い表示する $ man -P cat cdその他のLinuxコマンドのオプション一覧
その他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:03:28+09:00
【Linuxコマンド】 cp コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 cp コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧cp コマンドとは
ファイルやディレクトリをコピーする時に使うLinuxコマンドです。
"cp"は"copy"の略です。コマンドの使い方
$ cp コピー元 コピー先 #同じディレクトリ内にコピー $ cp test.txt test2.txt #別のディレクトリ(testディレクトリ)へコピー $ cp test.txt /home/hoge/test2/test2.txt #別のディレクトリ(testディレクトリ)へ同じ名前でコピー $ cp コピー元 コピー先のディレクトリ名 $ cp test.txt test2 #複数ファイルをコピー $ cp コピー元その1 コピー元その2 コピー先のディレクトリ名 $ cp test.txt test2.txt test3cp コマンドのオプション一覧
オプション 説明 -a 元ファイルの属性とディレクトリの構成を保持してコピーする。 -b 上書きされるファイルのバックアップを作成する -d シンボリックリンクをコピーする際に実体をコピーする -f コピー先に同じ名前のファイルがある際に警告なしで上書きをする。 -i 上書きされるファイルがある際に確認が入る。 -l ハードリンクを作成する -P ディレクトリ構造ごとコピーする -p 元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持 -r コピー元にディレクトリを指定した場合、再帰的に(サブディレクトリも含めて)コピーする -s コピーの代わりにシンボリックリンクを作成する -u 保存先が同じファイル名のファイルだったとき、タイムスタンプを確認して、新しいor同じだったときコピーしない。 -v 実行内容を表示 -rオプション
/home/hoge#ディレクトリごとコピーする $ cp -r コピー元ディレクトリ コピー先ディレクトリ #testディレクトリをtest2ディレクトリ配下へコピー $ cp -r test /home/hoge/test2-sオプション
#シンボリックリンクを作成する $ cp -s 元ファイル シンボリックリンク #test.txtのシンボリックリンクを作成 $ cp -s test.txt test_symbolic.txtその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:03:04+09:00
【Linuxコマンド】 touch コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 touch コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧touch コマンドとは
タイムスタンプを変更するためのLinuxコマンドです。
また、存在しないファイル名を指定することで、ファイルを新規作成する機能も持っています。コマンドの使い方
$ touch ファイル名 #testファイルのタイムスタンプを現在にする $ touch test.txt #存在しないファイル名を指定してファイル新規作成 $ touch testoooooooo.txttouchコマンドのオプション一覧
オプション 説明 -d 日時を指定する -c ファイルを新規作成しない -r 指定したファイルのタイムスタンプに合わせる -a 最終アクセス日時のみ変更する -m 最終更新日時のみ変更する -h シンボリックリンクの場合、リンク先ではなくシンボリックそのもののタイムスタンプを変更する -d オプション
$ touch -d 日付 ファイル名 #ファイルtest.txtのタイムスタンプを2020年1月1日21:30に指定する。 $ touch -d "2020-1-1 21:30" test.txt-c オプション
$ touch -c ファイル名 #ファイルtest.txtのファイルが存在しなければ新規作成、存在していればタイムスタンプを書き換える。 $ touch -c test.txt-r オプション
$ touch -r 既存のファイル名 対象ファイル名 #ファイルtest.txtのタイムスタンプをファイルtest2.txtのタイムスタンプと同一にする。 $ touch -r test2.txt test.txtその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:02:37+09:00
【Linuxコマンド】 less コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 less コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧less コマンドとは
ファイルの中身を確認する為のLinuxコマンドです。
コマンドの使い方
/home/hoge$ less '確認したいファイル名' # hoge fileを確認する例 $ less hogeman コマンドのオプション一覧
オプション 説明 -F 1画面以下の行しかないファイルの場合lessを終了する --help ヘルプ画面の表示 -i 検索時に大文字小文字の判別をしない -N 行番号の表示 -r エスケープシーケンスをそのまま出力する -R 色以外のエスケープシーケンスをそのまま出力する -S 折り返しせず表示し、横にもスクロールできるようにする --version バージョンを表示する -X 画面をclearせずに最後の状態を保ったままlessを終了する -X オプション
/home/hoge# 終了時の画面を維持する $ less -X hoge.txt hogehoge #内容が残ったままです--version オプション
# less コマンドのバージョンを確認する $ less --versionその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:02:20+09:00
【Linuxコマンド】 mkdir コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 mkdir コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧mkdir コマンドとは
ディレクトリを新規作成するLinuxコマンドです。
"mkdir" は "make directory"の略です。コマンドの使い方
$ mkdir ディレクトリ名 #hogeディレクトリ作成 $ mkdir hogemkdirコマンドのオプション一覧
オプション 説明 -m パーミッションを指定しディレクトリを作成する -p エラーを表示せず記述したディレクトリが存在しなければ作成する -v ディレクトリを作成した結果のメッセージを表示する -m オプション
$ mkdir -m パーミッション指定 ディレクトリ名 #パーミッションが666のhogeディレクトリを作成する。 $ mkdir -m 666 hoge-p オプション
mkdirは作成しようとしているディレクトリが存在していると、エラーになりディレクトリが作成されない。ディレクトリがすでにあるにもかかわらず再度作成すると、そのディレクトリ内容も削除されてしまうからです。また、mkdirは作成する親ディレクトリが存在していなくてもエラーになり子ディレクトリが作成されません。
これらを解決するのが-pオプションです。-pを指定することで、ディレクトリが存在していてもエラーメッセージを表示せず、現在あるディレクトリはそのままにして新規に作成することはなく子ディレクトリを作成することができます。$ mkdir -p ディレクトリ名 #現在hogeディレクトリがある場合は無視し、ない場合はhogeディレクトリを作成する。 $ mkdir -p hogeその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:01:58+09:00
【Linuxコマンド】 rm コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 rm コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧rm コマンドとは
ファイルやディレクトリを削除するLinuxコマンドです。
"rm" は "remove"の略です。コマンドの使い方
/home/hoge# ディレクトリの中身の確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 # hoge.txt を削除する $ rm hoge.txt # 削除されていることの確認 $ ls -l drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2man コマンドのオプション一覧
オプション 説明 -f エラーメッセージを表示せず実行する(危険) -i 削除前に確認する -I 削除対象が4つ以上のときのみ、削除前に確認する -r ディレクトリも削除対象に含める -v 削除の詳細を表示する -i オプション
/home/hoge# ディレクトリの中身の確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 # hoge.txt を削除する $ rm -i hoge.txt remove hoge.txt? (y or n) y # 削除されていることの確認 $ ls -l drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2-r オプション
/home/hoge# ディレクトリの中身の確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 # hoge.txt を削除する $ rm -r test # 削除されていることの確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2-v オプション
/home/hoge# ディレクトリの中身の確認 $ ls -v -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 # hoge.txt を削除する $ rm -v hoge.txt mooooo.tx # 削除されていることの確認 $ ls -l drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2-rf オプション(破滅の魔法)
※ 以下の作業は危険ですので絶対に真似しないで下さい。
実際には警告が出るようになっていますが、実行される際は自己責任でお願いします。/# 破滅してみる $ cd / $ sudo rm -rf /その他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:01:39+09:00
【Linuxコマンド】 cat コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 cat コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧cat コマンドとは
ファイル内容を標準出力するコマンドです。
"cat" は "concatenate"の略です。
"concatnate"=「連結する」なので本来は
「ファイル内容を標準出力する」というより「ファイル内容を連結して標準出力する」と言った方が丁寧かもしれません。catコマンドの使い方
/home/hoge$ cat 対象ファイルcatコマンドのオプション一覧
オプション 説明 -n 行番号をつけて出力 -b blank(空白行)を入れずに行番号をつけて出力 -s 連続した空白行を1行の空白行にまとめて出力 -E 各行の末尾に"$"をつけて出力 -T タブを"^I"に置換して出力 -nオプション
行番号をつけて出力。
オプションなしの場合は
/home/hoge/test$ cat test.txt hoge hogehoge hogehogehoge hogehogehogehoge-nオプションをつけると以下のように出力されます。
/home/hoge/test$ cat -n test.txt 1 hoge 2 hogehoge 3 4 hogehogehoge 5 6 7 8 hogehogehogehoge 9-bオプション
blank(空白行)を入れずに行番号をつけて出力。
/home/hoge/test$ cat -b test.txt 1 hoge 2 hogehoge 3 hogehogehoge 4 hogehogehogehoge-sオプション
連続した空白行を1行の空白行にまとめて出力
/home/hoge/test$ cat -s test.txt hoge hogehoge hogehogehoge hogehogehogehogeちなみに、-sと-nを組み合わせると↓
/home/hoge/test$ cat -ns test.txt 1 hoge 2 hogehoge 3 4 hogehogehoge 5 6 hogehogehogehoge 7-Eオプション
各行の末尾に"$"をつけて出力
あとで"$"をカンマに置換して配列にしたりするときなんかに便利だったりします。/home/hoge/test$ cat test.txt hoge$ hogehoge$ $ hogehogehoge$ $ $ $ hogehogehogehoge$ $-Eオプション
タブを"^I"に置換して出力
以下の場合が
/home/hoge/test$ cat ex.txt hoge hogehoge hogehogehoge↓こうなります。
/home/hoge/test$ cat ex.txt hoge ^Ihogehoge ^I^Ihogehogehogecatコマンドの連結出力
複数のファイルを連結させて出力します。(本来のcat)
/home/hoge/test$ cat hoge.txt hoge $ cat hoge2.txt hogehoge $ cat hoge3.txt hogehogehoge $ cat hoge.txt hoge2.txt hoge3.txt hoge hogehoge hogehogehogeまた、連結させたものを新しいファイルとして作成できます。
/home/hoge/test$ cat hoge.txt hoge $ cat hoge2.txt hogehoge $ cat hoge3.txt hogehogehoge # 3ファイルをsuperhogeとして作成 $ cat hoge.txt hoge2.txt hoge3.txt > superhoge $ cat superhoge hoge hogehoge hogehogehogeその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:01:21+09:00
【Linuxコマンド】 ls コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 ls コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧ls コマンドとは
ファイルやディレクトリの情報を表示するためのコマンドです。
"ls" は "list directory contents"の略です。lsコマンドの使い方
/home/hoge$ ls test hoge.txt test2lsコマンドのオプション一覧
オプション 説明 -a 全て表示 -l 詳細表示 -1 リストを縦に並べる -r 逆順表示 -t 更新時間順に表示 -S ファイルサイズ順でソートする -X 拡張子順(ごと)に並べる -R ディレクトリ内容を再帰的に表示 --full-time タイムスタンプの詳細を表示する -h 単位を読みやすい形式で表示する -k KB単位で表示する -F ディレクトリ名の後に ' / ', 実行可能なファイル名の後に ' * ' をつける -aオプション
ファイル名の先頭にピリオドがつく隠しファイルも表示。
/home/hoge$ ls -a test hoge.txt test2 .hidden-lオプション
ファイルの詳細を表示。
/home/hoge$ ls -l -rw-r--r-- 1 root root 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 root root 4096 Feb 24 17:14 test drwxr-xr-x 2 root root 4096 Feb 24 17:15 test2詳細の見方ですが、一行目で説明すると
項目 説明 -rw-r--r-- ファイルの種類(左1文字)+パーミッション 1 ハードリンクの数 root 所有者 root 所有グループ 11 ファイルのサイズ Feb 24 17:11 作成日時 hoge.txt ファイル名 -Rオプション
ディレクトリ内容を再帰的に表示。
/home/hoge$ ls -R hoge.txt test test2 ./test test.txt ex.txt test.log ./test2 test2.txt ex2.txt test2.log-hオプション
ファイルサイズの単位をいい感じによろしくやってくれます。
/home/hoge$ ls -lh -rw-r--r-- 1 root root 11B Feb 24 17:11 hoge.txt drwxr-xr-x 2 root root 4.0K Feb 24 17:14 test drwxr-xr-x 2 root root 4.0K Feb 24 17:15 test2その他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:00:52+09:00
【Linuxコマンド】 cd コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 cd コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧cd コマンドとは
ディレクトリを移動するLinuxコマンドです。
"cd" は "change directory"の略です。cdコマンド 使い方一覧
ルートディレクトリへ移動
/home/hoge$ cd /ホームディレクトリへ移動
/$ cd ~↑↓同じ意味です。
/$ cd相対パスでの移動
相対パスとは
現在いるディレクトリから見たパスのことです。
/home$ cd hoge絶対パスでの移動
絶対パスとは
全体の一番上から見たパスのことです。
/home/hoge$ cd /test1つ上の階層
/home/hoge/test$ cd ..2つ上の階層へ移動
/home/hoge$ cd ../..1つ上の階層のtaroディレクトリへ移動
/home/hoge$ cd ../taro-Pオプション
移動先のディレクトリがシンボリックリンクだった場合、シンボリックのターゲットに移動してくれる便利なオプション
/home$ cd -P hogegeその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T21:00:30+09:00
【Linuxコマンド】 ssh コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 ssh コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧ssh コマンドとは
sshプロトコルを利用してリモートホストにログイン、もしくはコマンドを実行するためのLinuxコマンドです。
"ssh"は"secure shell"の略です。コマンドの使い方
$ ssh ユーザ名@接続先のホスト名(IPアドレス) #rootユーザーでIP192.168.x.xに接続する場合 $ ssh root@192.168.x.xssh コマンドのオプション一覧
オプション 説明 -p 接続に使用するポート番号を指定する -i 接続に使用する公開鍵ファイルを指定する -l 接続に使用するユーザー名を指定する -pオプション
#接続に使用するポート番号を指定する $ ssh -p 22 root@192.168.x.x-iオプション
# /home/hoge配下の公開鍵を指定 $ ssh -i /home/hoge/xxxxx root@192.168.x.x-lオプション
#rootユーザーでIP192.168.x.xに接続 $ ssh -l root 192.168.x.xその他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T20:55:54+09:00
【Linuxコマンド】 pwd コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 pwd コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧pwd コマンドとは
現在の作業ディレクトリの場所をフルパスで表示するLinuxコマンドです。
"pwd" は "print working directory"の略です。コマンドの使い方
/home/hoge$ pwd /home/hogeman コマンドのオプション一覧
オプション 説明 -L シンボリックリンクを考慮せずパスを表示する -P シンボリックリンクの実体へのパスを表示する -L オプション
/home/hoge# ディレクトリ構成の確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 lrwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test_link -> test2 $ cd test_link $ pwd -L /home/hoge/test_link-P オプション
/home/hoge# ディレクトリ構成の確認 $ ls -l -rw-r--r-- 1 hoge hoge 11 Feb 24 17:11 hoge.txt drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:14 test drwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test2 lrwxr-xr-x 2 hoge hoge 4096 Feb 24 17:15 test_link -> test2 $ cd test_link $ pwd -P /home/hoge/test2その他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T20:55:38+09:00
【Linuxコマンド】 mv コマンド オプション 一覧 【初学者必見】
【Linuxコマンド】 mv コマンド オプション 一覧 【初学者必見】
まとめ
Linuxコマンド一覧mv コマンドとは
ファイルやディレクトリを移動するためのコマンドです。
"mv" は "move"の略です。mvコマンドの使い方
/home/hoge$ mv 移動元 移動先mvコマンドのオプション一覧
オプション 説明 -b 上書きまたは削除されるファイルのバックアップを取る -f 確認せず上書きをする -i 上書きの場合は確認をする -n 移動先に同名のファイルやディレクトリがある場合は移動しない -u 移動元の方が新しい場合のみ上書きする -v 移動の詳細情報を表示 -bオプション
mvコマンドは基本は上書きをするので-bオプションをつけると上書きされるファイルのバックアップをとってくれる。
オプションがない場合の挙動
/home/hoge/test$ ls test.txt ex.txt test.log $ mv test.txt ex.txt $ ex.txt test.log-bオプションつけた場合の挙動
/home/hoge/test$ ls test.txt ex.txt test.log $ mv -b test.txt ex.txt $ ex.txt~ ex.txt test.logファイル名の後ろに「~」がついているのがバックアップファイルです。
-vオプション
移動の詳細情報を表示してくれる。
複数のファイルを移動した時の確認用によく使います。/home/hoge/test$ ls test.txt ex.txt test.log $ mv -v test.txt ex.txt test.log test2 `test.txt' -> `test2/test.txt' `ex.txt' -> `test2/ex.txt' `test.log' -> `test2/test.log' $ ls $ cd ../test2 $ ls test.txt ex.txt test.logrenameとして使う
mvコマンドは
testディレクトリ内のtest.txtを
test2ディレクトリ内のtest2.txtという名前で移動することができます。/home/hoge/test2$ ls $ cd ../test $ mv test.txt test2/test2.txt $ cd ../test2 $ ls test2.txtもちろん同一ディレクトリ内でもrenameとして使えます。
なぜrenameとして使えるのか
そしてなぜ1Gの大容量でもmvコマンドは一瞬で移動できてしまうのか
ここ2つは実はmvコマンドのソースを見ると面白いのでまた、別の記事で書きます。その他のLinuxコマンドのオプション一覧
pwd, mkdir, cd, cat, cp, ls, touch, less, mv, rm, ssh, man, 随時追加中
広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T20:55:17+09:00
【Linuxコマンドまとめ】 コマンド 一覧 【初学者必見】
【Linuxコマンドまとめ】 コマンド 一覧 【初学者必見】
pwdコマンド
現在の作業ディレクトリの場所をフルパスで表示するLinuxコマンドです。
"pwd" は "print working directory"の略です。/home/hoge/test_link$ pwd -L /home/hoge/test_linkmkdirコマンド
ディレクトリを新規作成するLinuxコマンドです。
"mkdir" は "make directory"の略です。/home/hoge$ ls -a hoge.txt .hidden $ mkdir -m 666 test $ ls- a hoge.txt .hidden testcdコマンド
ディレクトリを移動するLinuxコマンドです。
"cd" は "change directory"の略です。/home/hoge/test$ cd ../test2catコマンド
ファイル内容を標準出力するコマンドです。
"cat" は "concatenate"の略です。/home/hoge/test$ cat -n test.txt 1 hoge 2 hogehoge 3 4 hogehogehoge 5 6 7 8 hogehogehogehoge 9cpコマンド
ファイルやディレクトリをコピーする時に使うLinuxコマンドです。
"cp"は"copy"の略です。/home/hoge$ cp -r test /home/hoge/test2lsコマンド
ファイルやディレクトリの情報を表示するためのコマンドです。
"ls" は "list directory contents"の略です。/home/hoge$ ls -lh -rw-r--r-- 1 root root 11B Feb 24 17:11 hoge.txt drwxr-xr-x 2 root root 4.0K Feb 24 17:14 test drwxr-xr-x 2 root root 4.0K Feb 24 17:15 test2touchコマンド
タイムスタンプを変更するためのLinuxコマンドです。
また、存在しないファイル名を指定することで、ファイルを新規作成する機能も持っています。/home/hoge$ ls -lh -rw-r--r-- 1 root root 11B Feb 24 17:11 hoge.txt drwxr-xr-x 2 root root 4.0K Feb 24 17:14 test drwxr-xr-x 2 root root 4.0K Feb 24 17:15 test2 $ touch -d "2020-2-25 18:30" hoge.txt $ ls -lh -rw-r--r-- 1 root root 11B Feb 24 18:30 hoge.txt drwxr-xr-x 2 root root 4.0K Feb 24 17:14 test drwxr-xr-x 2 root root 4.0K Feb 24 17:15 test2lessコマンド
ファイルの中身を確認する為のLinuxコマンドです。
/home/hoge$ less -X hoge.txt hogehoge $mvコマンド
ファイルやディレクトリを移動するためのコマンドです。
"mv" は "move"の略です。/home/hoge/test$ mv -v test.txt ex.txt test.log test2 `test.txt' -> `test2/test.txt' `ex.txt' -> `test2/ex.txt' `test.log' -> `test2/test.log'rmコマンド
ファイルやディレクトリを削除するLinuxコマンドです。
"rm" は "remove"の略です。/home/hoge$ rm -i hoge.txt remove hoge.txt? (y or n) ysshコマンド
sshプロトコルを利用してリモートホストにログイン、もしくはコマンドを実行するためのLinuxコマンドです。
"ssh"は"secure shell"の略です。#rootユーザーでIP192.168.x.xに接続 $ ssh -l root 192.168.x.xmanコマンド
各コマンドのマニュアルを確認する為のLinuxコマンドです。
"man" は "manual"の略です。# cd コマンドのマニュアルをcatを使い表示する $ man -P cat cd BUILTIN(1) BSD General Commands Manual BUILTIN(1) NAME builtin, !, %, ., :, @, {, }, alias, alloc, ... Command External csh(1) sh(1) ! No No Yes % No Yes No . No No Yes : No Yes Yes @ No Yes Yes... AUTHORS This manual page was written by Sheldon Hearn <sheldonh@FreeBSD.org>. BSD February 23, 2005 BSD広告欄
各種開発や構築の請負や初学者向けのメンター業務してます。
ご興味お持ちいただけた方はこちらへどうぞ
- 投稿日:2020-02-24T18:45:00+09:00
Linuxについて
はじめに
デプロイに取りかかる前に、学んだことをoutput致します。
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご教授願います。Linuxについて
- OS(Operating System)の一種
- コンピュータ全体を管理している基本的なプログラム
例)MacOS,Windows10等
特徴
- オープンソースであり、誰でも自由に無償で利用できる
- 品質の高い多くのソフトウェアが利用できる
- 世界中でサーバ用途として広く利用されているため信頼性が高い
- 操作を自動化するための仕組みが用意されており、サーバの運用が行いやすい
ディストリビューション
- LinuxはOSの中核である「カーネル」とOSを構成する他のプログラムからできている。
- しかし、実際はこのカーネルだけでは何も動かないので、様々なソフトウェアを組み合わせて動くようになる。
- その作業は一般ユーザには難しく、時間や労力もかかる。
- そこで、すぐに動かすことができるようカーネルと様々なソフトウェアを最初から組み合わせたものを配布するようになった。
- これをディストリビューションと呼ぶ。
さいごに
日々勉強中ですので、随時更新します。
皆様の復習にご活用頂けますと幸いです。
- 投稿日:2020-02-24T17:40:12+09:00
Linuxのtopコマンドでサーバの稼働状況を確認する
1. topコマンド
top
コマンドで、CPUやメモリの使用率などの詳細情報をプロセスごとに一覧で確認することができるます。
デフォルトでtop
コマンドは現在実行中のプロセスをCPU使用率が高い順に表示します。表示はリアルタイムで更新され、q
を入力すると終了します。topコマンド書式top [オプション]topコマンドの主なオプション
オプション 内容 -d 間隔 更新する間隔を「ss.tt秒」で指定する -n 回数 表示を繰り返す回数を指定する -b バッチモード。キー操作を受け付けず、「-n」で指定された回数または「CTRL+C」などで強制終了(kill)されるまで実行を続ける
topの結果をファイルに保存する際などに役立つ-s セキュアモードで動作(起動中に「d」などを受け付けなくなる) -U ユーザー
-u ユーザー監視するユーザーを名前またはIDで指定 -p プロセスID 監視するプロセスIDを指定。「-p 番号 -p 番号」または「-p 番号, 番号」のように複数指定できる(空白は省略可能) -c COMMAND欄(右端)を、プログラム名の表示とコマンドラインの表示のどちらにするか切り替える(起動後は「c」で切り替え) -i 何も実行していないアイドルプロセスを表示するか、しないかを切り替える(起動後は「i」で切り替え) -S 累積時間モード(起動後は「S」で切り替え) -o 項目 出力の並べ替えに使用する項目(デフォルトはCPU使用率)を指定。指定できる項目名は「top -O」で確認
例えば使用メモリ(物理メモリの占有率)が大きい順に表示したい場合、「top -o %MEM」とする-w 桁数 出力の幅 2. インタラクティブなtopコマンド
top
コマンド実行中に以下のインタラクティブなコマンドを使用できます。
コマンド 詳細 Enter、Space 表示を最新の情報に直ちに更新します。 h インタラクティブコマンドのヘルプ画面を表示します。 h、? ウィンドウおよびフィールドグループのヘルプ画面を表示します。 k プロセスを kill します。プロセス ID およびプロセスに送信するシグナルがプロンプトされます。 n 表示されるプロセス番号を変更します。番号を入力するようプロンプトされます。 u 一覧をユーザー別に並べ替えます。 M 一覧をメモリ使用率で並べ替えます。 P 一覧を CPU 使用率で並べ替えます。 q ユーティリティーを終了して、シェルプロンプトに戻ります。 3. topコマンドの出力結果の見方
top
コマンドで以下のように表示されます。topコマンドの出力結果top - 16:29:43 up 21:14, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1014820 total, 401940 free, 187588 used, 425292 buff/cache KiB Swap: 1679356 total, 1679356 free, 0 used. 676612 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128040 6712 4176 S 0.0 0.7 0:03.53 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 5 root 20 0 0 0 0 S 0.0 0.0 0:00.19 kworker/u2:0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.90 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dra+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.95 watchdog/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 15 root 20 0 0 0 0 S 0.0 0.0 0:00.03 khungtaskd 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
1行目(top~)の表示内容
1行目には「現在時刻」「稼働時間」「ログインユーザー数」「ロードアベレージ」が表示されます。
1行目の表示内容top - 16:29:43 up 21:14, 1 user, load average: 0.00, 0.01, 0.05
項目 内容 16:29:43 現在時刻(16時29分43秒) up 21:14 稼働時間(21時間14分) 1 user ログインユーザー数(1ユーザーがログイン中) load average: 0.00, 0.01, 0.05 過去1、5、15分間のロードアベレージ 2行目(Tasks:~)の表示内容
2行目にはタスクの状態が表示されます。
2行目の表示内容Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
項目 内容 total タスクの合計数 running 稼働中のタスク数 sleeping 待機中のタスク数 stopped 停止タスク数 zombie ゾンビタスク数 3行目(%Cpu(s):~)の表示内容
3行目はCPUの状態が表示されます。
3行目の表示内容%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
項目 内容 us ユーザープロセスの使用時間の割合 sy システムプロセスの使用時間の割合 ni 実行優先度を変更したユーザプロセスの使用時間の割合 id アイドル状態の時間の割合 wa I/Oの終了待をしている時間の割合 hi ハードウェア割込み要求での使用時間の割合 si ソフトウェア割込み要求での使用時間の割合 st OS仮想化利用時に、ほかの仮想CPUの計算で待たされた時間の割合 4行目(KiB Mem :)の表示内容
4行目はメモリの状態が表示されます。
4行目の表示内容KiB Mem : 1014820 total, 401940 free, 187588 used, 425292 buff/cache
項目 内容 total メモリの合計容量 free 未使用のメモリ容量 used 使用中のメモリ容量 buff/cache バッファキャッシュ/ページキャッシュとして割り当てられたメモリ容量 5行目(KiB Swap:)の表示内容
5行目はスワップ領域の状態が表示されます。
5行目の表示内容KiB Swap: 1679356 total, 1679356 free, 0 used. 676612 avail Mem
項目 内容 total スワップ領域の合計容量 free 未使用のスワップ領域の容量 used 使用中のスワップ領域の容量 avail Mem 新しいアプリがスワップせずに使えるメモリ容量 7行目以降の表示内容
7行目以降は、実行中の各プロセスの状態が表示されます。
7行目以降の表示内容PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128040 6712 4176 S 0.0 0.7 0:03.53 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 5 root 20 0 0 0 0 S 0.0 0.0 0:00.19 kworker/u2:0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.90 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dra+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.95 watchdog/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 15 root 20 0 0 0 0 S 0.0 0.0 0:00.03 khungtaskd 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
項目 内容 PID プロセスID USER プロセスの実行ユーザー PR プロセスの静的優先度(数字が低い程優先度は高い) NI プロセスの相対優先度(0を基準とし、-20(優先度高)~19(優先度低)で表している) VIRT プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ容量) RES プロセスが使用しているメモリ容量(物理メモリ容量) SHR プロセスが使用している共有メモリ容量 S プロセスの状態
D:割り込み不可(sleep)
R:実行中
S:スリープ状態
T:停止中(ジョブ制御信号により停止)
t:停止中(トレース中にデバッガーにより停止)
Z:ゾンビ状態%CPU CPU使用率 %MEM 物理メモリ使用率 TIME+ プロセスのCPU使用時間 COMMAND 現在実行中のコマンド名
以上
- 投稿日:2020-02-24T17:28:03+09:00
Manjaro KDE でWOL(Wake On LAN) を有効にする
はじめに
KDEには、GUIのネットワーク設定にWOLの項目が無いので
ethtoolをsystemdで自動実行させます。
手打ちでやるには、ちょっとややこしいので、スクリプトにしました。WOLを有効化するシェルスクリプト
#!/bin/bash # systemd設定ファイル保存フォルダ SYSTEMD_PATH="/etc/systemd/system/" SERVICE_NAME="wol.service" FILE_PATH=${SYSTEMD_PATH}${SERVICE_NAME} # tlpの設定変更 sudo sed -i -e "s/WOL_DISABLE=Y/WOL_DISABLE=N/g" /etc/default/tlp # 設定値確認 echo "tlp設定変更の確認:WOL_DISABLE=N で成功" sudo grep "^WOL_DISABLE" /etc/default/tlp # ethtoolのインストール sudo pacman -S --noconfirm ethtool # インターフェイス名を調べて変数に入れる NIC_LIST=($(for DEV in `find /sys/devices -name net | grep -v virtual`; do ls $DEV/; done)) # 1つ目のインターフェイスを指定 INTERFACE=${NIC_LIST[0]} # 確認 echo "インターフェイス名:"${INTERFACE} echo ${FILE_PATH} # ファイルの上書き確認 if [ -e ${FILE_PATH} ]; then echo "ファイルを上書きしますか? [Y/n]" read -p "answer[y or n]:" ANSWER ANSWER=`echo $ANSWER | tr y Y | tr -d '[\[\]]'` if [ ${ANSWER} != "Y" ]; then exit 0 fi # 設定がある場合は、サービスを止めておく sudo systemctl stop ${FILE_NAME} sudo systemctl disable ${FILE_NAME} fi sudo tee ${FILE_PATH} <<EOF >/dev/null [Unit] Description=Configure Wake-up on LAN Requires=network.target After=network.target [Service] Type=oneshot ExecStart=/usr/bin/ethtool -s ${INTERFACE} wol g [Install] WantedBy=basic.target EOF # 設定のリロード sudo systemctl daemon-reload # サービスのスタート sudo systemctl start ${SERVICE_NAME} # 自動起動の設定 sudo systemctl enable ${SERVICE_NAME} # 最終確認 echo "WOL有効化の確認:Wake-on: g で有効" sudo ethtool ${INTERFACE} | grep Wake-onシェルスクリプトの解説
- Manajroはデフォルトで、TLP(電源管理)が入っていて、WOLが無効にされてるので有効化する
- ethtoolをインストールする
- ネットワークインターフェイス名を調べる
- systemdの設定ファイルを作る
- systemdのサービスを有効化する
注意事項
WOLはバッテーリー消費が多くなるらしいので、ノートPCでは使わないほうがいいです。
このスクリプトはデスクトップPCで、有線LANが一つのみの環境を前提にしてます。動作環境
Manjaro KDE Edition 19.0.0
Linux Kernel 5.5.2-1最後に
おなじKDEのkubuntuも使っていたんですが、あっちはTLPが入っていませんでした。
スクリプト書くのしんどいですが、次から楽できるので頑張って書くようにしてます。
- 投稿日:2020-02-24T16:30:49+09:00
バイナリのダンプを2進数で出力し、またバイナリファイルに戻す
Linuxコマンドだけでなんとかしたい!
バイナリファイルのダンプ結果を2進数で表示させたいときがありました(linuxコマンドのみで)。
その時にやった内容を紹介します。
(他にいい方法があるのかもしれません。)まず、以下のようなシェルスクリプトを用意。
hex2bin.sh#!/bin/bash hexdump -v -e '/1 "%02X\n"' $1 | awk '{print substr($1,1,1) " " substr($1,2,1)}' | awk -f hex2bin.awk説明
まず最初の hexdumpコマンドで1バイト単位で出力します。
hexdump -v -e '/1 "%02X\n"' $1出力例
$ hexdump -v -e '/1 "%02X\n"' file 7F 45 4C 46 02 01 01 00 $で、この出力結果を awkにわたしてあいだに空白を入れます。
$ hexdump -v -e '/1 "%02X\n"' file | awk '{print substr($1,1,1) " " substr($1,2,1)}' 7 F 4 5 4 C 4 6 0 2 0 1 0 1 0 0 $この出力結果をまたawkにわたします。今度は -f オプションで以下のスクリプトを指定します。
hex2bin.awkfunction hex2bin(shex) { bins["0"] = "0000"; bins["1"] = "0001"; bins["2"] = "0010"; bins["3"] = "0011"; bins["4"] = "0100"; bins["5"] = "0101"; bins["6"] = "0110"; bins["7"] = "0111"; bins["8"] = "1000"; bins["9"] = "1001"; bins["A"] = "1010"; bins["B"] = "1011"; bins["C"] = "1100"; bins["D"] = "1101"; bins["E"] = "1110"; bins["F"] = "1111"; return bins[shex]; } { print hex2bin($1) " " hex2bin($2); }これで以下のような出力ができます。
sample.txt0111 1111 0100 0101 0100 1100 0100 0110 0000 0010 0000 0001出力結果を戻してみる
ここまでできたので、せっかくだからlinuxの標準コマンドだけでバイナリ形式に戻してみます。
以下のようなawkスクリプトを用意してみました。bin2hex.awkfunction bin2hex(sbin) { hex["0000"] = "0"; hex["0001"] = "1"; hex["0010"] = "2"; hex["0011"] = "3"; hex["0100"] = "4"; hex["0101"] = "5"; hex["0110"] = "6"; hex["0111"] = "7"; hex["1000"] = "8"; hex["1001"] = "9"; hex["1010"] = "A"; hex["1011"] = "B"; hex["1100"] = "C"; hex["1101"] = "D"; hex["1110"] = "E"; hex["1111"] = "F"; return hex[sbin]; } { printf "echo -en \"\\x%c%c\" >> hoge.bin\n",bin2hex($1),bin2hex($2) }これで
0111 1111という文字列が
echo -en "\x7F" >> hoge.binというechoコマンドに変換されます。
以下のように、てきとうなファイル名にリダイレクトをして、そのファイルを実行するとバイナリファイルが出力されます。$ awk -f bin2hex.awk sample.txt > text2bin.sh $ bash text2bin.sh
- 投稿日:2020-02-24T15:40:33+09:00
macでもLinuxが使いたい
前書き
知り合いにmacでデュアルブートする方法を教えてくれと言われて書いたものです。せっかくなので記事にしました。
手順1:rEFInd のダウンロード
rEFInd をダウンロードし、任意のディレクトリに配置します。
※ここでは~/Downloads/refind-bin-0.11.4/
とします。手順2:rEFInd のインストール
rEFInd をインストールするためにまずは、mac をリカバリーモードで起動します(cmd+R を押しながら起動)
リカバリーモードで起動したら、ターミナルを開き、csrutil disable
を実行します。
- Tips: sudo 権限でできることは制限されており、その制限をなくすコマンドです。
実行すると、
Succesfully disabled System Intergrity Protection.
と表示されます。その後、mac を起動して rEFInd をダウンロードしたディレクトリに移動します。
tikuwa@tikuwanoMacBook-Air ~/Downloads/refind-bin-0.11.4 $ ls -al ~/Downloads/refind-bin-0.11.4 total 472 drwxrwxr-x@ 17 tikuwa staff 544 11 12 2018 ./ drwx------+ 53 tikuwa staff 1696 2 21 12:13 ../ -rw-rw-r--@ 1 tikuwa staff 35147 11 29 2015 COPYING.txt -rw-rw-r--@ 1 tikuwa staff 4891 8 7 2017 CREDITS.txt -rw-rw-r--@ 1 tikuwa staff 2204 11 29 2015 LICENSE.txt -rw-rw-r--@ 1 tikuwa staff 99811 11 12 2018 NEWS.txt -rw-rw-r--@ 1 tikuwa staff 4010 5 25 2017 README.txt drwxr-xr-x@ 5 tikuwa staff 160 11 29 2015 banners/ drwxr-xr-x@ 5 tikuwa staff 160 10 22 2018 docs/ drwxr-xr-x@ 18 tikuwa staff 576 7 22 2018 fonts/ drwxr-xr-x@ 22 tikuwa staff 704 1 20 2016 keys/ -rwxrwxr-x@ 1 tikuwa staff 2436 7 22 2018 mkrlconf* -rwxrwxr-x@ 1 tikuwa staff 2564 8 24 2018 mountesp* -rwxrwxr-x@ 1 tikuwa staff 10362 10 23 2018 mvrEFInd* drwxrwxr-x@ 13 tikuwa staff 416 11 12 2018 rEFInd/ -rwxrwxr-x@ 1 tikuwa staff 56558 11 12 2018 rEFInd-install* -rwxrwxr-x@ 1 tikuwa staff 7173 4 23 2016 rEFInd-mkdefault*そのディレクトリで
sudo ./rEFInd-install
を実行し、再起動します。rEFInd が起動すれば成功です。tikuwa@tikuwanoMacBook-Air ~/Downloads/refind-bin-0.11.4 $ sudo ./refind-install [ruby-2.6.3p62] Password: ShimSource is none Installing rEFInd on OS X.... Installing rEFInd to the partition mounted at /Volumes/ESP Found rEFInd installation in /Volumes/ESP/EFI/rEFInd; upgrading it. Found suspected Linux partition(s); installing ext4fs driver. Installing driver for ext4 (ext4_x64.efi) Copied rEFInd binary files Notice: Backed up existing icons directory as icons-backup. Existing rEFInd.conf file found; copying sample file as rEFInd.conf-sample to avoid overwriting your customizations.手順3:Linux のインストールメディア作成
USB フラッシュメモリを用意してください。インストールする OS にもよりますが、8GB 以上あるものが理想です。
今回は、Ubuntuをインストールします。Ubuntu の DVD イメージをダウンロードします。
ダウンロードが完了したら、わかりやすいところに配置してください。
※ここでは~/Downloads/
に配置します。次に、balenaetcher をダウンロードします。
brew cask install balenaetcher
でインストールできます。balenaetcher を起動し、
Select image
でイメージを選択します。その後、Select target
でインストール先メディアを選択します。最後にFlash!
を選択するとインストールが開始されます。手順4:Linux 用のパーティション作成
Linux をインストールするには、
/
に割り当てるものと Swap 領域に割り当てるものの2つのパーティションが必要です。
/
に使うパーティションの要領は 10GB 以上あれば動きますが、せっかくインストールするので 100GB 以上にしておくのがいいでしょう。
Swap 領域は、RAM の 2 倍ほどあれば問題ありません。手順5:Linux のインストール
手順3で作成したメディアを刺したまま mac を再起動し、rEFInd を起動します。
rEFInd が起動すると、インストールメディアが選択できます。
あとは画面の指示に従ってインストールします。手順6:rEFIndが起動するように設定する
Linuxのインストールが終わると、使用されるブートローダーがLinuxのGRUBに変更されてしまいます。なので、もう一度
refind-install
を実行します。それができたら、リカバリーモードで再起動したあと
csrutil enable
を実行し mac を起動します。
- Tips: このコマンドは実行しなくても問題なく使用することができますが、セキュリティ上の関係で実行しておいた方がよいです。
手順7:GRUBを削除する
この手順はスキップしても問題なく使用できるので、気にならなければ飛ばしてください。
まず、/Volume
に移動し、sudo mkdir efi
を実行します。
次に、sudo mount -t msdos /dev/disk0s1 ./efi
を実行します。
※このとき、Resource busy
と表示される場合はdiskutil unmount /dev/disk0s1
を実行したあと、もう一度sudo mount -t msdos /dev/disk0s1 ./efi
を実行してください。マウントしたら、
efi
の中にあるEFI
に移動して、UBUNTU
を削除します。
その後、再起動して削除されていることを確認してください。おまけ:rEFIndの見た目をかっこよくする
"rEFInd themes"で検索して好みのテーマをダウンロードしてください。今回は、"rEFInd minimal"を使用します。
/Volumes/efi/EFI/refind
に移動して、themes
というディレクトリを作成してください。その中にダウンロードしたテーマを入れ、rEFInd-minimal
という名前にします。次に、
/Volumes/efi/EFI/refind
の中にあるrefind.conf
をテキストエディタで開き、include themes/rEFInd-minimal/theme.conf
を追記します。完了したら、再起動して反映されていることを確認してください。
参考文献
ブートローダrEFIndをmacに導入する
El capitanにrEFIndを導入するとき
ブートローダー「rEFInd」のテーマを変える方法
- 投稿日:2020-02-24T10:36:13+09:00
サーバ攻撃で狙い撃ちされたphpMyAdminのユーザ名とパスワードをランキングしてみた
概要
自前のサーバーでブログを開設した途端、世界中から怪しい攻撃が来た話を読んで、自サーバのログも調べてみたら同様のクラッキング目的と思われるアクセスが来ていたことが確認できました。
その中で、phpMyAdminのユーザ名とパスワードを当てずっぽうで当てにきている攻撃がたくさんあったので、それらについて攻撃された回数をカウントし、ランキングしてみました。
解析
さくらVPSで契約したサーバ(CentOS 6.10)のApache HTTPサーバのログ(/var/log/httpd/access_log)を取得しました。
中身を見てみると下記のようにphpMyAdminに当てずっぽうのユーザ名とパスワードでアクセスが試みられていることがわかります。xxx.xxx.xxx.xxx - - [04/Oct/2018:02:57:44 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz3edc5tgb&server=1 HTTP/1.1" 200 14538 "-" "Mozilla/5.0" xxx.xxx.xxx.xxx - - [04/Oct/2018:02:57:46 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@123&server=1 HTTP/1.1" 200 14546 "-" "Mozilla/5.0" xxx.xxx.xxx.xxx - - [04/Oct/2018:02:57:59 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@2wsx&server=1 HTTP/1.1" 200 14533 "-" "Mozilla/5.0" xxx.xxx.xxx.xxx - - [04/Oct/2018:02:58:03 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@WSX&server=1 HTTP/1.1" 200 14543 "-" "Mozilla/5.0" xxx.xxx.xxx.xxx - - [04/Oct/2018:02:58:06 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@WSX3edc&server=1 HTTP/1.1" 200 14538 "-" "Mozilla/5.0" xxx.xxx.xxx.xxx - - [04/Oct/2018:02:58:09 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@wsx&server=1 HTTP/1.1" 200 14533 "-" "Mozilla/5.0"pythonを用いてこれらの情報を抽出しヒストグラム情報を作りました。
pythonコードは末尾に付録として載せておきます。解析対象ログの基本情報
取得期間:2018/09/26 ~ 2020/01/22
全体の行数:658858行
うちphpMyAdminのパスワードを当てずっぽうで当てにきている攻撃と思われるもの:186499行ユーザ名の攻撃回数(全25種類)
順位 ユーザ名 回数 1 root 185504 2 wordpress 183 3 admin 138 4 wp 47 5 blog 45 6 pma 45 7 shop 43 8 money 42 9 popa3d 40 10 joomla 39 11 http 35 12 ueer 35 13 project 35 14 nginx 33 15 apache 33 16 sql 33 17 db 32 18 nas 32 19 shopdb 31 20 dbs 31 21 web 28 22 backupdb 6 23 wordspress 5 24 backup 2 25 backups 2 パスワードの攻撃回数(全953種類のうち上位30種類)
順位 パスワード 回数 1 pass 408 2 password 372 3 361 4 admin 359 5 123 347 6 root 344 7 123456 326 8 welcome 323 9 r00t 322 10 monkey 322 11 whatever 322 12 abc123 321 13 aa123456 321 14 123123 319 15 mysql 318 16 login 318 17 111111 318 18 password123 318 19 1234567890 317 20 access 317 21 666666 316 22 apache 315 23 oracle 315 24 654321 315 25 root123 315 26 123qwe 314 27 1234567 314 28 12345678 314 29 pass123 314 30 letmein 313 (ついでに)攻撃されたパスとその回数(全2種類)
順位 パス 回数 1 /phpmyadmin/index.php 173687 2 /phpMyAdmin/index.php 12812 考察
全ランキングはこちらにおいておきます。
ユーザ名はrootが圧倒的多数で、ほかはwordpress、blogなどのブログ関連用語、admin、pmaなどデータベース関連用語、apacheなどサーバ関連用語などが並んでいる感じでした。
sshサーバへの攻撃ログを解析した記事と比べるとsshへの攻撃では人名やOS名などが狙い撃ちされているのに対し、phpMyAdminへの攻撃ではブログ関係用語が狙われているなど、微妙に傾向の違いがあって面白いです。パスワードのトップ3は「pass」「password」「」(なし)でした。
突出してどれかが多いということはなくありがちなものが全体的にまんべんなく狙われている感じでした。
こちらで言われているような「最悪なパスワード」の傾向とも一致しているように思えます。
パターンとしては下記のようなものがありました。
- 有名名詞(PC関連) - root、mysql、access、apahe、oracleなど
- 有名名詞(一般) - welcome、monkey、freedom、money、dragonなど
- 数字羅列 - 123456、123123、111111、1234567890、666666など
- 「password」またはその派生 - pass、password、Password、passw0rd、p@$$w0rd123など
- キーボード順番押し - qwerty、qazwsx、qazxcv!@#、zaq1zaq1、qwertなど
- 上記の組み合わせ - abc123、aa123456、password123、123qwe、admin123など
ついでに攻撃対象となったパスも集計しました。
攻撃対象となっていたのは以下の2種類だけでした。
- /phpmyadmin/index.php
- /phpMyAdmin/index.php
不正アクセス防止のための狙われるアクセス先リスト
や
狙われやすいURLについて
の記事で言及されていたパスと比べるとバリエーションが少ないのは、今回が"pma_password="が含まれているという条件で行を抽出したあとの結果であるためと考えられます。実際抽出条件を「"phpMyAdmin"が含まれていること」にしてログを眺めてみると、今回挙げた2種類以外のパスへのアクセスも試みられていることがわかりました。おわりに
僕はセキュリティの知識はほぼないので「どうしたら安全か」はわかりませんが、少なくともデフォルトパスにおいたデータベースにありがちなユーザ名とパスワードをセットで使うのはやめようと思いました。
本文は以上です。
ここまでお読みいただきありがとうございました。
以下は付録です。付録
ログから必要情報を抽出するためのpythonコードです。
今回は下記のような行を解析対象としました。xxx.xxx.xxx.xxx - - [04/Oct/2018:02:58:03 +0900] "GET /phpMyAdmin/index.php?pma_username=root&pma_password=1qaz@WSX&server=1 HTTP/1.1" 200 14543 "-" "Mozilla/5.0""pma_password="が含まれていれば解析対象とみなします。
ここからスペースや特定の文字、キーワードで分割するなどして、情報を抽出します。
情報とその取り出し方の例を示します。
ここはログファイルの書き出しの設定などによって異なる可能性があるので適宜修正してください。
情報 取り出し方 ipアドレス スペースで分割して0番目 タイムスタンプ "["と"]"で囲まれた文字列 Method (GET, POSTなど) スペースで分割して6番目。ただし初めの文字がダブルクオテーションなのでそれは削除する phpMyAdminのパス スペースで分割されたうち7番目の要素から"?"の直前まで ユーザ名 "pma_username="と"&"の間の文字列 パスワード "pma_password="と"&"の間の文字列。(ただしこの部分のqueryでurlが終了している場合があり、そのときは後ろの"&"が存在しないため、スペースの直前までとする) 全部の行がこのやり方で抽出できているとは限らないのですが、多少例外があっても影響は少ないだろうと思って無視しています。そのあたりは適当です。
要素を取り出したあと、注目する情報(今回はphpMyAdminのパス、ユーザ名、パスワード)の回数を数えます。
最後に降順にソートして標準出力に表示します。ソースコード全体は下記のような感じです。
from collections import defaultdict with open('/path/to/access_log','r') as f: logs = f.readlines() #phpMyAdminへの攻撃の抽出 pma_attacks = [log for log in logs if 'pma_password' in log] #ip, time_stamp, method, path, username, passwordを抽出 #ログの形式に合わせて適宜書き換える extracted_pma_infos = [] for pma in pma_attacks: #ipアドレスはスペース区切りの0番目の要素 ip = pma.split(' ')[0] #タイムスタンプは"["から"]"までの文字列 time_stamp = pma.split('[')[1].split(']')[0] #Method(POST、GETなど)はスペース区切りの6番目の要素から1文字目を削除したもの method = pma.split(' ')[5][1:] #pathはスペース区切りの6番目の要素のうち"?"の直前までの文字列 path = pma.split(' ')[6].split('?')[0] #ユーザ名は"pma_username="から直近の"?"までの文字列 username = pma.split('pma_username=')[1].split('&')[0] #パスワードは"pma_password="から直近の"?"までの文字列 password = pma.split('pma_password=')[1].split('&')[0] #パスワードが最後のクエリの場合の例外処理 #このとき、直近の"?"が存在せずログの末尾まで含まれてしまうので、スペースの直前できる if ' ' in password: password = password.split(' ')[0] extracted_pma_infos.append([ip,time_stamp,method,path,username,password]) #攻撃されたパス、ユーザ名、パスワードのヒストグラムを作る pathlist = defaultdict(int) unlist = defaultdict(int) pslist = defaultdict(int) for pma in extracted_pma_infos: path = pma[3] un = pma[4] ps = pma[5] pathlist[path]+=1 unlist[un]+=1 pslist[ps]+=1 #引数のヒストグラムデータ(dict_obj)を解析して降順のリストを作る関数 def orderedlistFromDict(dict_obj): count = list(set([dict_obj[v] for v in dict_obj])) count.sort() orderedlist = [] for c in count[::-1]: for key in dict_obj: if dict_obj[key] == c: orderedlist.append((key,dict_obj[key])) return orderedlist #攻撃されたパス、ユーザ名、パスワードの回数順のリスト ordered_path = orderedlistFromDict(drlist) ordered_un = orderedlistFromDict(unlist) ordered_ps = orderedlistFromDict(pslist) #パスランキングの表示 for val in ordered_path: print(val[0],val[1],sep=',') #ユーザ名ランキングの表示 for val in ordered_un: print(val[0],val[1],sep=',') #パスワードランキングの表示 for val in ordered_ps: print(val[0],val[1],sep=',')
- 投稿日:2020-02-24T10:15:29+09:00
UNIT-V Linux ってナンだ?
https://docs.m5stack.com/#/en/unit/unitv よりはじめに
サイズ 4x2.5cm の UNIT-V 上で、Linux を動かしてみました。
M5Stack社のUNIT-V (AI Camera) は、小さくて良い感じです (4g, 4x2.5x1.5cm)。
メモリは8MB(ちなみに ESP32 は 520KB、Raspberry Pi Zero W は512MB)。
LAN、WiFiはありません。外部接続は USB と GPIO 2本 のみです (UART または I2C)。Linux と Tiny C Compiler は、ベータ版のようです。Shenzhen Sipeed Technology 社製です。
UNIT-V の SoCチップは、注目のK210です。 デュアルコア 64 bit RISC-V CPU で、 Neural Network Processor 付きです。
UNIT-V 比較表
UNIT-V M5StickC Raspberry Pi Zero W Adafruit Feather nRF52840 Express コンセプト RISC-V搭載AIチップ 電池と画面とケース 汎用Linux 電池駆動 SoCチップ/会社 K210
/KendryteESP32
/Espressif SystemsBCM2835
/BroadcomnRF52840
/NordicCPU RISC-V Xtensa LX6/Tensilica ARM11 ARM Cortex-M4 CPU(core数/bit) 2/64 2/32 1/32 1/32 クロック(Mhz) 400 240 1000 64 メモリ(MB) 8 520KB 512 256KB Flash(MB) 16 4 無し 1 ストレージ Micro SD 無し microSD 無し WiFi/BT 無し ○ ○ ○ USB ○ ○ ○ ○ IF(ピン) GROVE4pin GROVE4pin,
拡張8pinGPIO 40pin GPIO 21 言語・OS MicroPython MicroPython, Arduino Raspbian MicroPython, Arduino 電流(mA) ? 100? 150 25 重量(g) 4 15.1 9 6 備考 Neural Network Processor(KPU) 0.8Tops, Camera、 RGB LED 80 mAh Lipo, LCD(0.96), ジャイロ, LED HDMI NFC, IEEE 802.15.4 C言語のコンパイルと実行
/usr/local # uname -a Linux k210 5.6.0-rc1-g9dbcd412b #16 SMP Sun Feb 16 01:45:41 CST 2020 riscv64 GNU/Linux /usr/local # cat main.c int _start() { for(int i = 0; i < 3; i++) { printf("%d hello\n", i); } return 0; }/usr/local # tcc -run -nostdlib main.c main.c:4: warning: implicit declaration of function 'printf' 0 hello 1 hello 2 hello /usr/local #Tiny C Compiler 起動オプション
/usr/local # tcc -v tcc version 0.9.27 ( Linux) /usr/local # tcc Tiny C Compiler 0.9.27 - Copyright (C) 2001-2006 Fabrice Bellard Usage: tcc [options...] [-o outfile] [-c] infile(s)... tcc [options...] -run infile [arguments...] General options: -c compile only - generate an object file -o outfile set output filename -run run compiled source -fflag set or reset (with 'no-' prefix) 'flag' (see tcc -hh) -std=c99 Conform to the ISO 1999 C standard (default). -std=c11 Conform to the ISO 2011 C standard. -Wwarning set or reset (with 'no-' prefix) 'warning' (see tcc -hh) -w disable all warnings -v -vv show version, show search paths or loaded files -h -hh show this, show more help -bench show compilation statistics - use stdin pipe as infile @listfile read arguments from listfile Preprocessor options: -Idir add include path 'dir' -Dsym[=val] define 'sym' with value 'val' -Usym undefine 'sym' -E preprocess only Linker options: -Ldir add library path 'dir' -llib link with dynamic or static library 'lib' -r generate (relocatable) object file -shared generate a shared library/dll -rdynamic export all global symbols to dynamic linker -soname set name for shared library to be used at runtime -Wl,-opt[=val] set linker option (see tcc -hh) Debugger options: -g generate runtime debug info -bt[N] link with backtrace (stack dump) support [show max N callers] Misc. options: -x[c|a|b|n] specify type of the next infile (C,ASM,BIN,NONE) -nostdinc do not use standard system include paths -nostdlib do not link with standard crt and libraries -Bdir set tcc's private include/library dir -MD generate dependency file for make -MF file specify dependency file name -m32/64 defer to i386/x86_64 cross compiler Tools: create library : tcc -ar [rcsv] lib.a files /usr/local #Linux 起動時メッセージ
[ 0.000000] Linux version 5.6.0-rc1-g9dbcd412b (vowstar@ryzen) (gcc version 9.2.0 (Buildroot 2020.02-git-g2ceb6f4a3f)) #16 SMP Sun Feb 16 01:45:41 CST 2020 [ 0.000000] earlycon: sifive0 at MMIO 0x0000000038000000 (options '') [ 0.000000] printk: bootconsole [sifive0] enabled [ 0.000000] initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080000000-0x00000000807fffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080000000-0x00000000807fffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff] [ 0.000000] elf_hwcap is 0x112d [ 0.000000] percpu: max_distance=0x18000 too large for vmalloc space 0x0 [ 0.000000] percpu: Embedded 12 pages/cpu s18272 r0 d30880 u49152 [ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2020 [ 0.000000] Kernel command line: earlycon console=ttySIF0 [ 0.000000] Dentry cache hash table entries: 1024 (order: 1, 8192 bytes, linear) [ 0.000000] Inode-cache hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.000000] Sorting __ex_table... [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 4936K/8192K available (918K kernel code, 110K rwdata, 166K rodata, 1717K init, 91K bss, 3256K reserved, 0K cma-reserved) [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0 [ 0.000000] plic: mapped 65 interrupts with 2 handlers for 4 contexts. [ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x3990be68b, max_idle_ns: 881590404272 ns [ 0.000014] sched_clock: 64 bits at 7MHz, resolution 128ns, wraps every 4398046511054ns [ 0.008238] Console: colour dummy device 80x25 [ 0.012472] Calibrating delay loop (skipped), value calculated using timer frequency.. 15.60 BogoMIPS (lpj=31200) [ 0.022677] pid_max: default: 4096 minimum: 301 [ 0.027290] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.034415] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.044822] rcu: Hierarchical SRCU implementation. [ 0.049619] smp: Bringing up secondary CPUs ... [ 0.054772] smp: Brought up 1 node, 2 CPUs [ 0.059152] devtmpfs: initialized [ 0.065758] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.074778] futex hash table entries: 16 (order: -2, 1024 bytes, linear) [ 0.082792] Kendryte K210 SoC sysctl [ 0.096502] clocksource: Switched to clocksource riscv_clocksource [ 0.213963] workingset: timestamp_bits=62 max_order=11 bucket_order=0 [ 0.221326] 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1, base_baud = 0) is a SiFive UART v0 [ 0.229801] printk: console [ttySIF0] enabled [ 0.229801] printk: console [ttySIF0] enabled [ 0.238411] printk: bootconsole [sifive0] disabled [ 0.238411] printk: bootconsole [sifive0] disabled [ 0.250662] random: get_random_bytes called from 0x00000000801b2128 with crng_init=0 [ 0.259387] devtmpfs: mounted [ 0.266032] Freeing unused kernel memory: 1716K [ 0.269822] This architecture does not have kernel memory protection. [ 0.276234] Run /sbin/init as init process [ 0.280428] Run /etc/init as init process [ 0.284708] Run /bin/init as init process -------------------------------------- | Kendryte K210 Linux mod by vowstar | -------------------------------------- Mounting /proc Starting shell BusyBox v1.32.0.git (2020-02-15 12:47:51 CST) hush - the humble shell Enter 'help' for a list of built-in commands. / # help Built-in commands: ------------------ . Run commands in file bg Resume job in background break Exit loop cd Change directory continue Start new loop iteration eval Construct and run shell command exec Execute command, don't return to shell export Set environment variables fg Bring job to foreground history Show history jobs List jobs kill Send signals to processes local Set local variables read Input into variable readonly Make variables read-only return Return from function set Set positional parameters shift Shift positional parameters trap Trap signals type Show command type ulimit Control resource limits umask Set file creation mask unset Unset variables wait Wait for process to finish / #Linux 環境
/ # uname -a Linux k210 5.6.0-rc1-g9dbcd412b #16 SMP Sun Feb 16 01:45:41 CST 2020 riscv64 GNU/Linux / # cat /proc/cpuinfo processor.: 0 hart..: 0 isa..: rv64imafdc processor.: 1 hart..: 1 isa..: rv64imafdc / # env HOME=/ TERM=linux PWD=/ HUSH_VERSION=1.32.0.git / # ps -l S UID PID PPID VSZ RSS TTY STIME TIME CMD S 0 1 0 480 0 0:0 23:59 00:00:00 /bin/sh S 0 2 0 0 0 0:0 23:59 00:00:00 [kthreadd] I 0 3 2 0 0 0:0 23:59 00:00:00 [rcu_gp] I 0 4 2 0 0 0:0 23:59 00:00:00 [rcu_par_gp] I 0 5 2 0 0 0:0 23:59 00:00:00 [kworker/0:0-eve] I 0 6 2 0 0 0:0 23:59 00:00:00 [kworker/0:0H] I 0 7 2 0 0 0:0 23:59 00:00:00 [kworker/u4:0-ev] I 0 8 2 0 0 0:0 23:59 00:00:00 [mm_percpu_wq] S 0 9 2 0 0 0:0 23:59 00:00:00 [ksoftirqd/0] I 0 10 2 0 0 0:0 23:59 00:00:00 [rcu_sched] S 0 11 2 0 0 0:0 23:59 00:00:00 [migration/0] S 0 12 2 0 0 0:0 23:59 00:00:00 [cpuhp/0] S 0 13 2 0 0 0:0 23:59 00:00:00 [cpuhp/1] S 0 14 2 0 0 0:0 23:59 00:00:00 [migration/1] S 0 15 2 0 0 0:0 23:59 00:00:00 [ksoftirqd/1] I 0 16 2 0 0 0:0 23:59 00:00:00 [kworker/1:0-eve] I 0 17 2 0 0 0:0 23:59 00:00:00 [kworker/1:0H] S 0 18 2 0 0 0:0 23:59 00:00:00 [kdevtmpfs] I 0 19 2 0 0 0:0 23:59 00:00:00 [writeback] I 0 20 2 0 0 0:0 23:59 00:00:00 [kworker/0:1-eve] S 0 21 2 0 0 0:0 23:59 00:00:00 [kswapd0] I 0 22 2 0 0 0:0 23:59 00:00:00 [kworker/1:1-mm_] I 0 24 2 0 0 0:0 00:00 00:00:00 [kworker/u4:1] R 0 38 1 316 0 0:0 00:03 00:00:00 ps -l / # ps -e ps: invalid option -- e# ls / bin dev etc proc root sbin sys tmp usr / # ls /bin arch chown grep ls printenv setserial umount bash cp hush mkdir ps sh uname busybox date init mknod pwd sleep usleep cat dmesg kill more rm stty vi chgrp echo link mount rmdir touch chmod false ln mv sed true / # ls /dev console tty20 tty4 tty59 cpu_dma_latency tty21 tty40 tty6 full tty22 tty41 tty60 kmsg tty23 tty42 tty61 null tty24 tty43 tty62 ptmx tty25 tty44 tty63 random tty26 tty45 tty7 tty tty27 tty46 tty8 tty0 tty28 tty47 tty9 tty1 tty29 tty48 ttySIF0 tty10 tty3 tty49 urandom tty11 tty30 tty5 vcs tty12 tty31 tty50 vcs1 tty13 tty32 tty51 vcsa tty14 tty33 tty52 vcsa1 tty15 tty34 tty53 vcsu tty16 tty35 tty54 vcsu1 tty17 tty36 tty55 zero tty18 tty37 tty56 tty19 tty38 tty57 tty2 tty39 tty58 / # ls /etc / # ls /proc 1 20 buddyinfo iomem softirqs 10 21 bus ioports stat 11 23 cmdline irq sys 12 24 consoles kmsg thread-self 13 3 cpuinfo loadavg timer_list 14 31 device-tree locks tty 15 4 devices maps uptime 16 5 driver meminfo version 17 6 execdomains misc vmstat 18 7 filesystems mounts zoneinfo 19 8 fs pagetypeinfo 2 9 interrupts self / # ls /root / # ls /sbin runlevel / # ls /sys / # ls /tmp / # ls /usr bin include lib sbin / # ls /usr/bin [ env id seq tty wall [[ expr last tail uniq wc awk find printf tcc unlink who basename head readlink tee users yes dirname hostid realpath test w / # ls /usr/include libtcc.h / # ls /usr/lib crt1.o libtcc.a tcc / # ls /usr/sbin chroot readahead / #/ # who / # df sh: can't execute 'df': No such file or directory / # tty /dev/console / #参考資料
Try Maix Linux image with Tiny C Compiler:
https://twitter.com/SipeedIO/status/1228881079236362240MAIX/MaixLinux/Firmware
http://dl.sipeed.com/MAIX/MaixLinux/Firmware
Maix-linux-5.6-rc1_tcc.bin 3.1 MB
Maix-linux-5.6-rc1_preview0.1.bin 1.7 MBsipeed/kflash.py
https://github.com/sipeed/kflash.py鳥なき里のマイコン屋(71) Kendryte K210、RISC-V搭載AIチップ
https://jhalfmoon.com/dbc/2019/10/23/鳥なき里のマイコン屋71-kendryte-k210、risc-v搭載aiチップ/
- 投稿日:2020-02-24T08:57:22+09:00
(メモ)ゲートウェイとデフォルトゲートウェイの違い
違うとも言えるし、違いはないとも言える。
ゲートウェイは別のネットワークへの出口(ルータ)のことを言う。
デフォルトゲートウェイは未知のルート(デフォルトルート)の場合に使用するゲートウェイを言う。サーバサイドの設定と言う意味ではゲートウェイを指定するのは、通常、デフォルトゲートウェイのみのためゲートウェイの指定はデフォルトゲートウェイを指定していることと同義となることが多い(はず)。
デフォルトゲートウェイを複数持たせてあるゲートウェイに障害が発生した時に切り替える代替パスとしての指定をするOSもあるとのこと。
- 投稿日:2020-02-24T08:37:40+09:00
Apache Tomcatの違いを簡単に整理
■Apache Tomcatの違い
(1)ApacheはWebサーバソフト
(2)Tomcatはサーブレットコンテナ(=Java Servletを動かすソフト)
⇒Java Servletはサーバ上で動くJavaのプログラム(動的なページが生成可能)■共通点
Tomcatも簡易的なWebサーバソフトの機能を持っている。■纏め
一般的に、Java Servletを利用する時はApacheとTomcatを連携させる。
WebサーバはApacheが、サーブレットコンテナはTomcatが役割を担う。■参考にしたサイト
https://wa3.i-3-i.info/diff184web.html
- 投稿日:2020-02-24T02:12:56+09:00
バイナリファイルをcatやtailしてしまいターミナルが文字化けしたときの対処法
バイナリファイルをcatで見てみようとしたら、文字化けしてしまい冷や汗をかきました。
Webに転がってる情報をまとめた対処法とaliasの設定を書いていきます。文字化けした状態
対処法その1
resetresetコマンドで端末をリセットします。これで直らない場合もあるみたいです。
その場合はresetコマンドより強力な方法でリセットします。対処法その2
echo ^[cecho「スペース」「Ctrl+v」「Esc」「c」「Enter」と入力する。
aliasの設定
alias clearbin="echo -e '\ec'"バイナリになったものをクリアするので、単純にclearbinとしました。
echo -eでエスケープ文字を解釈するようにしています。
eが「Esc」になり、cはそのままですね。豆知識(なぜ直るのか)
対処法その2でなぜなおるのか、全然わかんなかったので調べました。
echoecho「スペース」「Ctrl+v」を押すとこんな感じになりますね。
「Ctrl+v」は「Esc」を入力するための準備的なもので単体だとなにも表示が出ません。
「Esc」をただ押しても入力できないので、この準備がいるみたいです。echo ^[続いて「Esc」を押すと、こうなります。
echo ^[cそれに付け加えて「c」を入力
「Esc」と「c」でresetコマンドより強力な端末のリセットが行えるようです。
最後に「Enter」を押して終了ですね。「Esc」の表し方
aliasに設定するときに、「Esc」を8進数や16進数で表すことができるようです。
8進数の場合
alias clearbin="echo -e '\033c'"16進数の場合
alias clearbin="echo -e '\0x1bc'"参考になった記事