- 投稿日:2020-08-14T23:55:14+09:00
Windows ServerとフリーのLinuxと商用Linuxの比較
サーバーOSである「Windowsサーバー」、「フリーのLinux」、「商用Linux」の3つを比較してみた。
Windows Server 商用Linux フリーのLinux 初期費用 × △ 〇 運用の手間 〇 △ × ネットでの情報の探しやすさ △ △ 〇 初期費用について
Windows ServerはOSのライセンス料に加えて、クライアントまたはユーザー数分のCAL(Client Access Licenseの略で、クライアントからWindows Serverの利用を許可するためのライセンスのこと)の費用が重くのしかかってしまう。
商用Linuxは、サーバーライセンスの料金が必要とはいえ、年間サポートの保守料金を加えてもWindowsほどではないことが多い。
フリーのLinuxは、初期投資は必要なく自分の力で始められることが魅力である。
運用の手間について
初期費用とほぼ反比例する。
Windows Serverは使い慣れたWindowsベースで作業できるので、運用が比較的簡単であることが多い。
商用Linuxは有償サポートの契約をしていれば、運用にそれほど困ることはない。
フリーのLinuxは自己責任で利用するOSなので、基本的には何が起きても自力で解決することが求められる。運用にはそれなりの手間やコストがかかる。
ネットでの情報の探しやすさについて
Windows ServerはMSDNやTech NETというドキュメントライブラリを参照できるので、フリーのLinuxほどではないが、それなりの情報量を確保できる。
商用Linuxは、OSの提供元であるディストリビューターの情報がそれほど多くないので、フリーのLinuxユーザーの知見もある程度参考になることから、Windows Serverと同じ程度という評価である。
フリーのLinuxが強みを発揮する。無償で利用できるので様々なユーザーが活用しており、それぞれの知見を簡単に探し出せるというメリットがある。
- 投稿日:2020-08-14T23:09:06+09:00
【学習メモ】Linux標準教科書(第1章〜第6章)
はじめに
初学者が何より理解すべき、Linuxについて、『Linux標準教科書(PDF)』を読んだ要約をアウトプットします。今回は前半の第1章〜第6章まで。
第1章 Linuxとは
・基本ソフトウェア:コンピュータシステム全般を管理するソフトウェア
・応用ソフトウェア:特定の目的に応じて開発されたソフトウェアの総称(表計算ソフト、ワープロソフトなど)
・広義のLinux=[ハードウェア]+[カーネル]+[応用ソフトウェア]
・狭義のLinux=[カーネル]
・カーネル:OSの中核で、ハードウェアと直接やりとりする機能を持つ部分
・ユーザランド:OSが動作するのに必要なカーネル以外の部分
・シェル(殻):対話型のコマンド入力環境。入力されたコマンドを理解→実行
・応用ソフトウェア導入には、複数の応用ソフトウェアや、動作を補足するライブラリが必要な場合がある。依存するプログラムがさらに別のプログラムに依存しているとなると、正しい場所に正しい順序でインストールしないといけない。第2章 Linuxのインストール
macOSでデフォルトでインストールされているので、省略
第3章 基本的なコマンド
・目的に応じた基本コマンドとオプションの紹介
※実際のコマンドは他Qiitaでたくさん出るため、オプション中心に紹介一覧の確認
ls [オプション] [ファイル名]:一覧取得 -a:.で始まる隠しファイルも全て(All)出力 -l:長(Long)形式で出力 -t:最終更新時間(Time)でソートして出力 -r:逆順(Reverse)にソートして出力 # ソートとは、一定の基準で並べ替えること・lsコマンドの結果からさらに絞り込む場合、ワイルドカード(=全てのパターンにマッチする文字列)を使用可能。例えば、.etcディレクトリ内の「conf」ファイルを絞り込んで表示させるにはこのように記述
・なお、文字数が明確である場合、「?」を使用$ cd /etc $ ls *.conf Trolltech.conf ntp.conf (※あくまで一例です) $ ls hosts.* hosts.allow hosts.deny $ ls hosts.???? hosts.denyファイルのコピー
cp [オプション] コピー元 コピー先 -i:処理を行う時に確認をする。コンピュータが確認のための問い合わせをする。誤って上書きコピーされるのを防ぐ目的で使用 -r:ディレクトリをコピー。基本cpはファイルをコピーする機能のみだが、-rをつけるとディレクトリ内の全てのファイル・ディレクトリに対してコピー可能 -p:元ファイルの情報を保存。古い情報を保持したままコピーを作成したい場合につける。ファイルの移動
mv 移動元ファイル 移動先ファイル -i:処理を行う時に確認をする。コンピュータが確認のための問い合わせをする。誤って移動されるのを防ぐ目的で使用 -f:強制的に実行。一部の処理では、確認の問い合わせがあるが、それを無視して実行するというもの ▶️チーム開発で無闇に処理しないよう注意ファイルの削除
rm ファイル名 -i:確認の問い合わせ ▶️informationの略ですね? -f:強制実行 -r:ディレクトリ+ディレクトリ内のファイルやディレクトリを対象に削除ディレクトリの操作(pwd,cd,mkdir,rmdir)
pwd:現在どの位置にいるか表示する(Print Working Directoryの略) cd [ディレクトリ名]:移動 mkdir [ディレクトリ名]:作成 オプション -p:指定されたディレクトリの上位ディレクトリも作成 $ mkdir dir1/dir2/dir3 rmdir [ディレクトリ名]:削除 -p:指定された階層までのディレクトリを一括削除 (オプション付けなかった場合、最下層のディレクトリのみ削除) **※対象とするディレクトリ内は空でないといけない** $ rmdir directory/ rmdir: failed to remove 'directory/': ディレクトリは空ではありません $ rmdir -r directory/ (rm -rを実行)で削除可能特別なディレクトリ
名称 機能 カレントディレクトリ(.) 現在いるディレクトリ 親ディレクトリ(..) 1階層上のディレクトリ ホームディレクトリ (~) ユーザの作業開始位置となるディレクトリ ルートディレクトリ(/) ディレクトリ階層の最上位階層 絶対(パス)指定と相対(パス)指定
カレントディレクトリが/usr/localであるとする、この時、/usr/bin/xxxのファイルを指定するには2通りの方法がある。
- /usr/bin/xxx
- ../bin/xxx
1.は最上位のディレクトリ(/)からディレクトリ・ファイル名を指定している。この方法を絶対(パス)指定という
2.は「自分がいる位置から見て」指定。この方法を相対(パス)指定というファイルの内容を表示(cat)
cat [ファイル名] -n:行番号を付加して表示ページャを使った表示
catコマンドでファイルの中身を表示する際、行数がたくさんあると表示が流れてしまう。たくさんの行があっても画面制御を行いスクロールを途中で止めてくれる機能をページングといい、それを表現するのをページャという。
more [ファイル名] less [ファイル名]できることかなり多いのと、実務ではless多めならしいので参考記事のみ紹介。
参考記事:Linux コマンド2 (cat,grep)その他知った方が良さそうなこと
find パス -name [ファイル名]:ファイルの検索 man [cpやlsなど]:[]内のコマンドに対するマニュアルを表示する第4章 正規表現とパイプ
・標準入出力:Linuxのプログラム(=コマンド)には、「1つの入り口と2つの出口」がある・。それぞれ標準入力、標準出力・標準エラー出力という。特にコマンドを実行した結果が画面上に表示されることを「標準出力に出力された」と表現する。
ファイルの中からデータを検索(grep)
grep [オプション名] 検索条件 [指定ファイル] オプション -e:文字列を検索パターンとして扱う -i:検索パターンと入力ファイルの双方で、英大文字と小文字の区別をしない -v:検索パターンとマッチしなかった行を選択する
記号 意味 ^ 行頭を表す $ 行末を表す . 任意の一字を意味する * 直前文字の0回以上の繰り返し処理を意味する [...] ..のなかの任意の一字を意味する [^...] ..の文字が含まれないことを意味する ¥ 正規表現の記号をエスケープする 第5章 基本的なコマンド2(テキストファイルの処理で便利)
ファイルのタイムスタンプの変更(touch)&ファイルの作成
・タイムスタンプ:ある時刻にその電子データが存在していたことと、それ以降改ざんされていないことを証明する技術。タイムスタンプに記載されている情報とオリジナルの電子データから得られる情報を比較することで、タイムスタンプの付された時刻から改ざんされていないことを確実かつ簡単に確認できる。
$ ls -l total 8 -rw-r--r-- 1 user staff 81 8 10 23:01 dockerfile $ touch -t dockerfile usage:touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... # -tオプションつけて、日付、時間、対象ファイルの順番でコマンド打ってね $ touch -t 08142033 dockerfile $ ls -t dockerfile $ ls -l total 8 -rw-r--r-- 1 user staff 81 8 14 2020 dockerfile $ touch test.md # 新規ファイルが作成される $ ls dockerfile test.mdファイルの一部を取得(head,tail)
head [オプション名] ファイル名 tail [オプション名] ファイル名 -n(行):先頭から指定した行を標準出力 -c(バイト):先頭から指定したバイト分を標準出力テキストファイルのソート(sort)
sort [オプション] ファイル名 オプション名 -r:逆順でソートする -k n:n列目のデータをソートする -n:数値としてソートするファイルの比較(diff)
diff [オプション] ファイル1 ファイル2 オプション -c:context diff形式で差分を出力 -u:unified diff形式で差分を出力第6章 vi エディタ
・vi:ページャであり、エディタでもある。ファイルの開閉とファイルの保存と終了その他操作可能。
コマンド 処理内容 vi [ファイル名] ファイルを開く :q ファイルを閉じる ESC+:w 変更内容が書き込まれる ESC+:wq 変更内容の書き込み+保存して終了 ESC+:q! 保存せず強制終了 イメージ
$ vi test.rb ken ryu 80 keiko oka 40 hajime chan 100 ~ ~インサートモードとコマンドモード
・viエディタを起動すると、コマンド入力するコマンドモードでファイルが開かれる。文字列を打ち込むには、iコマンドもしくはaコマンドなどでインサートモードに切り替える必要がある。
カーソル移動
行番号指定した行番号へ移動
Gファイルの末尾
h左へ1文字
j下へ1文字
k上へ1文字
l右へ1文字
w次の単語へ
0行の先頭
$行の末尾文字のカット・アンド・ペースト
x1文字削除
dd1行削除
yy1行コピー
nyyn行コピー
pカーソルの文字の次または次の行にペースト
Pカーソルの文字の前または前の行にペースト
uカット、ペーストを1回取り消し置換と検索
/検索文字列文字列の検索
n下方向へ再検索
N上方向へ再検索
:対象の行 s/検索文字列/置換文字列/オプション文字列を置換する文字列の置換
:ns/old/newn行目の最初のoldをnewに置換して終了
:ns/old/new/gn行目の全てのoldをnewに置換して終了
:%/old/new/gファイル全体の検索語句を置換
:%/old/new/gc置換の度に確認を求める参考資料
Linux標準教科書
ブクマ必至!Linuxコマンド一覧表【全33種】
viコマンド
なぜ、IDEじゃなくてVimを使うか。
- 投稿日:2020-08-14T23:09:06+09:00
【読書メモ】Linux標準教科書(第1章〜第6章)
はじめに
初学者が何より理解すべき、Linuxについて、『Linux標準教科書(PDF)』を読んだ要約をアウトプットします。今回は前半の第1章〜第6章まで。
第1章 Linuxとは
・基本ソフトウェア:コンピュータシステム全般を管理するソフトウェア
・応用ソフトウェア:特定の目的に応じて開発されたソフトウェアの総称(表計算ソフト、ワープロソフトなど)
・広義のLinux=[ハードウェア]+[カーネル]+[応用ソフトウェア]
・狭義のLinux=[カーネル]
・カーネル:OSの中核で、ハードウェアと直接やりとりする機能を持つ部分
・ユーザランド:OSが動作するのに必要なカーネル以外の部分
・シェル(殻):対話型のコマンド入力環境。入力されたコマンドを理解→実行
・応用ソフトウェア導入には、複数の応用ソフトウェアや、動作を補足するライブラリが必要な場合がある。依存するプログラムがさらに別のプログラムに依存しているとなると、正しい場所に正しい順序でインストールしないといけない。第2章 Linuxのインストール
macOSでデフォルトでインストールされているので、省略
第3章 基本的なコマンド
・目的に応じた基本コマンドとオプションの紹介
※実際のコマンドは他Qiitaでたくさん出るため、オプション中心に紹介一覧の確認
ls [オプション] [ファイル名]:一覧取得 -a:.で始まる隠しファイルも全て(All)出力 -l:長(Long)形式で出力 -t:最終更新時間(Time)でソートして出力 -r:逆順(Reverse)にソートして出力 # ソートとは、一定の基準で並べ替えること・lsコマンドの結果からさらに絞り込む場合、ワイルドカード(=全てのパターンにマッチする文字列)を使用可能。例えば、.etcディレクトリ内の「conf」ファイルを絞り込んで表示させるにはこのように記述
・なお、文字数が明確である場合、「?」を使用$ cd /etc $ ls *.conf Trolltech.conf ntp.conf (※あくまで一例です) $ ls hosts.* hosts.allow hosts.deny $ ls hosts.???? hosts.denyファイルのコピー
cp [オプション] コピー元 コピー先 -i:処理を行う時に確認をする。コンピュータが確認のための問い合わせをする。誤って上書きコピーされるのを防ぐ目的で使用 -r:ディレクトリをコピー。基本cpはファイルをコピーする機能のみだが、-rをつけるとディレクトリ内の全てのファイル・ディレクトリに対してコピー可能 -p:元ファイルの情報を保存。古い情報を保持したままコピーを作成したい場合につける。ファイルの移動
mv 移動元ファイル 移動先ファイル -i:処理を行う時に確認をする。コンピュータが確認のための問い合わせをする。誤って移動されるのを防ぐ目的で使用 -f:強制的に実行。一部の処理では、確認の問い合わせがあるが、それを無視して実行するというもの ▶️チーム開発で無闇に処理しないよう注意ファイルの削除
rm ファイル名 -i:確認の問い合わせ ▶️informationの略ですね? -f:強制実行 -r:ディレクトリ+ディレクトリ内のファイルやディレクトリを対象に削除ディレクトリの操作(pwd,cd,mkdir,rmdir)
pwd:現在どの位置にいるか表示する(Print Working Directoryの略) cd [ディレクトリ名]:移動 mkdir [ディレクトリ名]:作成 オプション -p:指定されたディレクトリの上位ディレクトリも作成 $ mkdir dir1/dir2/dir3 rmdir [ディレクトリ名]:削除 -p:指定された階層までのディレクトリを一括削除 (オプション付けなかった場合、最下層のディレクトリのみ削除) **※対象とするディレクトリ内は空でないといけない** $ rmdir directory/ rmdir: failed to remove 'directory/': ディレクトリは空ではありません $ rmdir -r directory/ (rm -rを実行)で削除可能特別なディレクトリ
名称 機能 カレントディレクトリ(.) 現在いるディレクトリ 親ディレクトリ(..) 1階層上のディレクトリ ホームディレクトリ (~) ユーザの作業開始位置となるディレクトリ ルートディレクトリ(/) ディレクトリ階層の最上位階層 絶対(パス)指定と相対(パス)指定
カレントディレクトリが/usr/localであるとする、この時、/usr/bin/xxxのファイルを指定するには2通りの方法がある。
- /usr/bin/xxx
- ../bin/xxx
1.は最上位のディレクトリ(/)からディレクトリ・ファイル名を指定している。この方法を絶対(パス)指定という
2.は「自分がいる位置から見て」指定。この方法を相対(パス)指定というファイルの内容を表示(cat)
cat [ファイル名] -n:行番号を付加して表示ページャを使った表示
catコマンドでファイルの中身を表示する際、行数がたくさんあると表示が流れてしまう。たくさんの行があっても画面制御を行いスクロールを途中で止めてくれる機能をページングといい、それを表現するのをページャという。
more [ファイル名] less [ファイル名]できることかなり多いのと、実務ではless多めならしいので参考記事のみ紹介。
参考記事:Linux コマンド2 (cat,grep)その他知った方が良さそうなこと
find パス -name [ファイル名]:ファイルの検索 man [cpやlsなど]:[]内のコマンドに対するマニュアルを表示する第4章 正規表現とパイプ
・標準入出力:Linuxのプログラム(=コマンド)には、「1つの入り口と2つの出口」がある・。それぞれ標準入力、標準出力・標準エラー出力という。特にコマンドを実行した結果が画面上に表示されることを「標準出力に出力された」と表現する。
ファイルの中からデータを検索(grep)
grep [オプション名] 検索条件 [指定ファイル] オプション -e:文字列を検索パターンとして扱う -i:検索パターンと入力ファイルの双方で、英大文字と小文字の区別をしない -v:検索パターンとマッチしなかった行を選択する
記号 意味 ^ 行頭を表す $ 行末を表す . 任意の一字を意味する * 直前文字の0回以上の繰り返し処理を意味する [...] ..のなかの任意の一字を意味する [^...] ..の文字が含まれないことを意味する ¥ 正規表現の記号をエスケープする 第5章 基本的なコマンド2(テキストファイルの処理で便利)
ファイルのタイムスタンプの変更(touch)&ファイルの作成
・タイムスタンプ:ある時刻にその電子データが存在していたことと、それ以降改ざんされていないことを証明する技術。タイムスタンプに記載されている情報とオリジナルの電子データから得られる情報を比較することで、タイムスタンプの付された時刻から改ざんされていないことを確実かつ簡単に確認できる。
$ ls -l total 8 -rw-r--r-- 1 user staff 81 8 10 23:01 dockerfile $ touch -t dockerfile usage:touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... # -tオプションつけて、日付、時間、対象ファイルの順番でコマンド打ってね $ touch -t 08142033 dockerfile $ ls -t dockerfile $ ls -l total 8 -rw-r--r-- 1 user staff 81 8 14 2020 dockerfile $ touch test.md # 新規ファイルが作成される $ ls dockerfile test.mdファイルの一部を取得(head,tail)
head [オプション名] ファイル名 tail [オプション名] ファイル名 -n(行):先頭から指定した行を標準出力 -c(バイト):先頭から指定したバイト分を標準出力テキストファイルのソート(sort)
sort [オプション] ファイル名 オプション名 -r:逆順でソートする -k n:n列目のデータをソートする -n:数値としてソートするファイルの比較(diff)
diff [オプション] ファイル1 ファイル2 オプション -c:context diff形式で差分を出力 -u:unified diff形式で差分を出力第6章 vi エディタ
・vi:ページャであり、エディタでもある。ファイルの開閉とファイルの保存と終了その他操作可能。
コマンド 処理内容 vi [ファイル名] ファイルを開く :q ファイルを閉じる ESC+:w 変更内容が書き込まれる ESC+:wq 変更内容の書き込み+保存して終了 ESC+:q! 保存せず強制終了 イメージ
$ vi test.rb ken ryu 80 keiko oka 40 hajime chan 100 ~ ~インサートモードとコマンドモード
・viエディタを起動すると、コマンド入力するコマンドモードでファイルが開かれる。文字列を打ち込むには、iコマンドもしくはaコマンドなどでインサートモードに切り替える必要がある。
カーソル移動
行番号指定した行番号へ移動
Gファイルの末尾
h左へ1文字
j下へ1文字
k上へ1文字
l右へ1文字
w次の単語へ
0行の先頭
$行の末尾文字のカット・アンド・ペースト
x1文字削除
dd1行削除
yy1行コピー
nyyn行コピー
pカーソルの文字の次または次の行にペースト
Pカーソルの文字の前または前の行にペースト
uカット、ペーストを1回取り消し置換と検索
/検索文字列文字列の検索
n下方向へ再検索
N上方向へ再検索
:対象の行 s/検索文字列/置換文字列/オプション文字列を置換する文字列の置換
:ns/old/newn行目の最初のoldをnewに置換して終了
:ns/old/new/gn行目の全てのoldをnewに置換して終了
:%/old/new/gファイル全体の検索語句を置換
:%/old/new/gc置換の度に確認を求める参考資料
Linux標準教科書
ブクマ必至!Linuxコマンド一覧表【全33種】
viコマンド
なぜ、IDEじゃなくてVimを使うか。
- 投稿日:2020-08-14T18:07:34+09:00
cronの使い方(自分用メモ)
仕事でサーバーにcronを設定した。
自分に必要だった情報を最小限に書く。やりたいこと: Perlで作ったスクリプト
/foo/bar/baz.plを毎朝5時に実行する
前提条件:OSはLinux、シェルはbashやったことは以下の通り(試行錯誤は除く)。
EDITORの確認と設定
サーバー(Linux)にログインする。
EDITOR環境変数を確認する。$ echo $EDITOR空だった。
ここでcrontab編集をしようとするとviが起動してしまう。
ぼくはEmacsしか使い方が分からない。
Emacsを起動してみる。$ emacs そんなコマンドありません的なエラーメッセージダメだった。
Emacsをインストールしてもいいが、ここはnanoを使うことにする。
nanoはたいていLinuxにインストールされてて、使い方が分からなくても何とかなるエディターなの。$ EDITOR=nano $ export EDITOR $ echo $EDITOR nano無事nanoが設定できた。
タイムゾーンの確認
現在時刻を知るコマンド
dateを使ってみる。$ date Fri Aug 14 08:43:43 UTC 2020UTC(世界協定時、ロンドン時刻と同じ)であることが分かる。
時差を調べるサイトで日本の朝5時がUTCで何時か調べる。20:00と分かった。
crontabの一覧表示
ようやくcrontabの設定。
-lオプションで現在設定されているcronの一覧表示(List)。$ crontab -l何も出なかったので誰も何も設定していないと分かった。
crontabの編集
編集は
-eオプション(Edit)。
自分自身(ログインしたユーザー)で実行する場合は-uオプションは設定しなくて良い。$ crontab -eさっき$EDITORに設定したnanoが起動するなの。
crontabの設定
毎朝5時に/foo/bar/baz.plを実行するにはこうする。
0 20 * * * /foo/bar/baz.plnanoの使い方になるが、Ctrl+Oでファイルを書き出し(write Out)、Ctrl+Xでnanoを終了(eXit)する。
nanoの使い方は画面の下端に表示されるから覚えなくても平気なの。以上。
参考資料
cronの設定方法
https://qiita.com/hikouki/items/e744b3a4d356d2af12cfcrontab ファイルの作成と編集
https://docs.oracle.com/cd/E19253-01/819-0379/sysrescron-24589/index.html(この項終わり)
- 投稿日:2020-08-14T14:17:30+09:00
Linux mkdir コマンド
- 投稿日:2020-08-14T10:54:31+09:00
ChromeboxにLinuxをインストールする
準備物
- +/-ドライバー
- クリップ
- 小袋
- キーボード
手順[平均時間][待ち時間]
- ネジを外す[146s][0m]
- デベロッパモード有効化[0m][300s]
- FWインストールスクリプト実行[51s][0m]
OSインストールスクリプト実行[0][558s]
合計[17.5分][14.3分]
詳細手順
STEP1
ネジを外す
デベロッパーモードに入る
リセットスイッチを数秒押し続けながら電源ON
「復元用のUSBメモリまたはSDカードを挿入してください」の画面でCtrl+Dを押す。
「OSの確認機能をオフにするにはリカバリボタンを押してください」の画面で再度リセットスイッチを押す。
再起動し、「OSの確認機能はオフになっています」の画面が表示される。(Ctrl+Dでスキップ可)
「システムをデベロッパーモードに移行しています」の画面が表示される。
一定時間後、「ようこそ」の画面へ切り替わる
FWインストールスクリプト実行
「ようこそ」の画面でCtrl+Alt+F2を押す。
インターネットに繋がるようにする。
CUIログイン画面に切り替わるので、chronosでログインする。以下のコマンドを実行する。sudo su curl -O www.webproj.jp/chromescripts/CN60.sh; bash CN60.sh または sudo su curl -O www.webproj.jp/fw.sh; bash fw.shSUCCESSと表示されたらOK
USBメモリを挿して再起動、次のステップへSTEP2
USBからインストール用OS起動
起動時にEscを押して、起動デバイス一覧からUSBを選択
青い画面(grub)で一番上のエントリが選択されているので、Enterを押す
OSインストールスクリプト実行
起動後、[Give Root password for maintainance]と表示されたら、パスワードを入力してログイン、以下のコマンドを実行中括弧内はデバイスに応じたものを選択してください
cd /clonescripts/ bash [CN60/62/65]copyos.sh完了したら再起動します。次に座席番号を設定します。
sudo setup.sh座席番号フォーマットは[A-Z][1-9]{0,1}-[0-9]{2}
ex. A-01URL
ねじ位置
https://kodi.wiki/view/Chromebox
このページ
https://qiita.com/mitsuya99/private/b76bc02a2320f6ab2daeTroble Shooting
デバイスの所有者がこのデバイスのデベロッパーモードを無効にしました
ねじ抜いてない
Hardware write-protect enabled. cannot set Boot Options / GBB Flags.
ねじ抜いてない場合は抜いて解決しますが、ねじを抜いているにかかわらず出ることがあります。
ねじの周りの接触の問題です。テスタがあれば、扇型の金属間でショートしているところがないか確かめてください。Ctrl+Dが効かない?
キーボードをキーボード配列の異なるものに変えてみてください。
- 投稿日:2020-08-14T08:39:09+09:00
自作マニュアルを作る。【linux】【man】
環境
- ubuntu20.04 LTS
やろう
Ctrl+Alt+tで端末を起動します。
以下のコマンドを入力してください。(manlは何でもいい)$ mkdir man $ cd man $ mkdir manl $ cd manlそうしたらテキストエディターでmanの中身を書きます。qiitaのマークダウンみたいに書式があります。
自作コマンドの作り方
自作コマンドのmanを書きます。
自作コマンドの中身:
lock.sh#!/bin/sh #chmod=アクセス権限を変更する #a-rwx=すべての人に読み込み・書き込み・実行の権限を削除する #$1=引数の取得(引数=a-rwxするファイル名) chmod a-rwx $1lock.l.\"この行はコメントです。 .TH lOCK .SH 名前 .\"名前と一言で言う説明を書きます。 lock \- ファイルの読み込み・書き込みのアクセス権を削除する .SH 書式 .B lock [ ファイル名 ] .SH 説明 .\"説明を書きます。 lockはテキストファイルや画像ファイル,などのアクセス権限を削除します。 .\"作者と著作権を書きます。 .SH 作者 作者 ichiri sato. .SH 著作権 (c) 2020 ichiri sato.
-M引数を使って自作manを表示します。$ man -M ~/man lock.l表示結果lOCK() lOCK() 名前 lock - ファイルの読み込み・書き込みのアクセス権を削除する 書式 lock [ ファイル名 ] 説明 lockはテキストファイルや画像ファイル,などのアクセス権限を削除します。 作者 作者 ichiri sato. 著作権 (c) 2020 ichiri sato. lOCK() ~ ~ ~ ~ ~ (省略)参考記事
- 投稿日:2020-08-14T02:03:16+09:00
tcコマンドでNetworkの帯域と遅延を制御してみてみた
■ 目的
tcコマンド(Traffic Control)は、Networkの遅延(Latency)と帯域(Throughput)を制御することができます。
コンピューターの距離により遅延、帯域が変わり、データ転送などの時間がかわることがあります。
ということで、tcコマンドで、遅延、帯域が制御できるか確認してみてみます。■ 構成
Oracle Cloud上にComputeインスタンスを2台設置して、その間のNetworkパフォーマンスをTCコマンドで制御してみてみます■ 現環境確認
Client --> Server へのレイテンシ、スループット、TPSを確認
● 遅延(RTT)確認
pingを実行してRTT確認
今回は、平均0.166msであることを確認[opc@client-inst01 ~]$ sudo ping 10.0.0.2 -c 5 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.178 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.182 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.135 ms 64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.177 ms 64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=0.160 ms --- 10.0.0.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4110ms rtt min/avg/max/mdev = 0.135/0.166/0.182/0.020 ms● 帯域確認
iperf3を実行してスループット確認
今回は、約2 Gbits/secであることを確認[opc@client-inst01 ~]$ sudo iperf3 -c 10.0.0.2 Connecting to host 10.0.0.2, port 5201 [ 4] local 10.0.0.5 port 33750 connected to 10.0.0.2 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 377 MBytes 3.17 Gbits/sec 1165 2.06 MBytes [ 4] 1.00-2.00 sec 254 MBytes 2.13 Gbits/sec 2338 323 KBytes [ 4] 2.00-3.00 sec 231 MBytes 1.94 Gbits/sec 1480 1.31 MBytes [ 4] 3.00-4.00 sec 244 MBytes 2.04 Gbits/sec 2127 61.2 KBytes [ 4] 4.00-5.00 sec 229 MBytes 1.92 Gbits/sec 953 166 KBytes [ 4] 5.00-6.00 sec 239 MBytes 2.00 Gbits/sec 2055 629 KBytes [ 4] 6.00-7.00 sec 205 MBytes 1.72 Gbits/sec 1336 1.77 MBytes [ 4] 7.00-8.00 sec 274 MBytes 2.30 Gbits/sec 2216 96.1 KBytes [ 4] 8.00-9.00 sec 238 MBytes 1.99 Gbits/sec 1198 891 KBytes [ 4] 9.00-10.00 sec 232 MBytes 1.95 Gbits/sec 1486 638 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 2.46 GBytes 2.12 Gbits/sec 16354 sender [ 4] 0.00-10.00 sec 2.46 GBytes 2.11 Gbits/sec receiver iperf Done.■ tcコマンドで遅延と帯域制御
Client側からパケットを送信するので、clientコンピューターで遅延と帯域を制御してみてみます
① 設定するNetwork Interface確認
ClientでServerへ接続するNetwork Interfece名確認
今回 Interface名はens3であることを確認[root@client-inst01 ~]# ifconfig ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000 inet 10.0.0.5 netmask 255.255.255.0 broadcast 10.0.0.255 ether 02:00:23:17:3a txqueuelen 1000 (Ethernet) RX packets 454466 bytes 165785003 (158.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 503382 bytes 277089862 (264.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0② 100ms 遅延制御 tcコマンド実行
今回、100msへ制御してみてみます
100msは、だいたい日本から米国程度の距離です[opc@client-inst01 ~]$ sudo tc qdisc add dev ens3 root handle 1:0 netem delay 100ms③ 50Mbps 帯域制御 tcコマンド実行
今回、50Mbpsへ制御してみてみます
その時、以下値を使用してみます・rate = 50mbit ・CONFIG_HZ = 1000 ・burst = rate/CONFIG_HZ = 50kb ・limit = burst x 10 = 500kb※CONFIG_HZ値確認
[opc@client-inst01 ~]$ sudo cat /boot/config-`uname -r` | grep CONFIG_HZ= CONFIG_HZ=1000・50Mbps 帯域制御 tcコマンド実行
[opc@client-inst01 ~]$ sudo tc qdisc add dev ens3 parent 1:1 handle 10:0 tbf rate 50mbit burst 50kb limit 500kb④ tcコマンド設定確認
[opc@client-inst01 ~]$ sudo tc -s qdisc show dev ens3 qdisc netem 1: root refcnt 17 limit 1000 delay 100.0ms Sent 288635914 bytes 38521 pkt (dropped 0, overlimits 0 requeues 14) backlog 102b 1p requeues 14 qdisc tbf 10: parent 1:1 rate 50Mbit burst 25Kb lat 36.9ms Sent 35582 bytes 73 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0⑤ 遅延(RTT)確認
pingを実行してRTT確認
平均100 msへ制御できていることを確認[opc@client-inst01 ~]$ ping 10.0.0.2 -c 5 PING 10.0.0.101 (10.0.0.101) 56(84) bytes of data. 64 bytes from 10.0.0.101: icmp_seq=1 ttl=64 time=100 ms 64 bytes from 10.0.0.101: icmp_seq=2 ttl=64 time=100 ms 64 bytes from 10.0.0.101: icmp_seq=3 ttl=64 time=100 ms 64 bytes from 10.0.0.101: icmp_seq=4 ttl=64 time=100 ms 64 bytes from 10.0.0.101: icmp_seq=5 ttl=64 time=100 ms --- 10.0.0.101 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 100.160/100.192/100.218/0.283 ms⑥ 帯域確認
iperf3を実行してRTT確認
50Mbits/secへ制御できていることを確認[opc@client-inst01 ~]$ sudo iperf3 -c 10.0.0.2 Connecting to host 10.0.0.2, port 5201 [ 4] local 10.0.0.5 port 44108 connected to 10.0.0.2 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 6.18 MBytes 51.8 Mbits/sec 44 743 KBytes [ 4] 1.00-2.00 sec 6.25 MBytes 52.4 Mbits/sec 5 638 KBytes [ 4] 2.00-3.00 sec 5.00 MBytes 41.9 Mbits/sec 0 725 KBytes [ 4] 3.00-4.00 sec 6.25 MBytes 52.4 Mbits/sec 0 751 KBytes [ 4] 4.00-5.00 sec 6.25 MBytes 52.4 Mbits/sec 0 751 KBytes [ 4] 5.00-6.00 sec 6.25 MBytes 52.4 Mbits/sec 0 778 KBytes [ 4] 6.00-7.00 sec 5.00 MBytes 41.9 Mbits/sec 0 813 KBytes [ 4] 7.00-8.00 sec 6.25 MBytes 52.4 Mbits/sec 0 848 KBytes [ 4] 8.00-9.00 sec 6.25 MBytes 52.4 Mbits/sec 3 664 KBytes [ 4] 9.00-10.00 sec 6.25 MBytes 52.4 Mbits/sec 0 786 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 59.9 MBytes 50.3 Mbits/sec 52 sender [ 4] 0.00-10.00 sec 56.9 MBytes 47.7 Mbits/sec receiver iperf Done. --- 10.0.0.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 100.160/100.192/100.218/0.283 ms⑦ tcコマンド設定解除
[opc@tokyo-inst01 ~]$ sudo tc qdisc del dev ens3 root



