Carpe Diem

備忘録

Unix・Linux

cgroupsでリソース制限

概要 cgroups (control groups)は、プロセスグループのリソース(CPU、メモリ、ディスクI/O、ネットワークなど)を制限、考慮、分離するLinuxカーネル機能です。 これを使ってプロセスのリソース制限を行ってみます。 環境 Ubuntu 18.04.3 cgroupsの構成 cgr…

PAM (Pluggable Authentication Modules)

概要 LinuxにはPAMという認証システムとアプリケーションを分離するための仕組みが用意されています。 ref: https://docs.oracle.com/cd/E19253-01/819-0396/ch3pam-01/index.html プラガブルという名前の通り、モジュールによって認証方法を簡単に切り替え…

inodeから見たmvやcpの動き

背景 実行中のファイルに対してcpで上書きする場合だとText file busyで置き換えられず、mvだと何も聞かれず置き換えられる理由を深掘ってみました。 データ構造 mvやcpの動きを確認する前に必要な前提知識を説明します。 プロセスとinodeとの関係 プロセス…

リダイレクトの仕組みを深掘る

背景 $ コマンド > outfile 2>&1 と $ コマンド 2>&1 > outfile は結果が異なります。 前者は標準出力、標準エラーともにoutfileに出力されるのに対し、後者は標準出力はoutfileに、標準エラーはターミナルに出力されます。 この違いを理解するためにUnixの…

I/O Multiplexing(I/O多重化)

概要 christina04.hatenablog.com で一度まとめましたが、まだ理解があやふやなところがありました。 その後 Working With TCP Sockets (English Edition)作者:Jesse Storimer発売日: 2012/10/24メディア: Kindle版 を読んでようやくストンと理解できたので…

pipeエラーのハンドリング

概要 write: broken pipeといったクライアント側の強制的なコネクション切断でのエラーハンドリングをする際の知見まとめ。 環境 go 1.13.3 事前知識 知っておくと良い知識を先に説明します。 そもそもpipeとは pipeはプロセス間通信をするための単方向のデ…

UnionFS で Docker のレイヤ構造を理解する

概要 DockerではAUFSという技術が使われています。 こちらはUnionFS(ディレクトリを重ね合わせることができる)の一つで、親のファイルシステムをすべてReadOnlyにして、その上に書き込み可能なレイヤを重ねて1つのファイルシステムのように扱います。 Docker…

tty と pts

◆tty(Tele-TYpewriter) キーボードと出力です。 LinuxではPCに直接つながっているコンソールターミナルで、 Alt+1、Alt+2、Alt+3 などで端末を切り替えられますが、それがそれぞれ tty1、tty2、tty3 に対応しています。 ◆pts(pesudo-tty) ttysの仮想化で…

パスワード生成コマンド【pwgen】

ランダムなパスワードを作りたい時や誰かに初期パスワードを配布するときとかに使えると思います。 ◆インストール $ sudo aptitude install pwgen ◆基本的な使い方 例えば10文字のパスワードを生成したいときは以下 $ pwgen 10

ImageMagick で画像の編集

「画像のサイズを変更したい」「2つの画像をくっつけたい」 といった簡単な画像の編集をする場合わざわざソフトを使うよりもImageMagickを使った方が簡単だったりします。 ◆インストール $ sudo aptitude install imagemagick 元の画像はこちらとします。40…

scriptコマンドでコマンドの記録・再生

scriptコマンドを使うと、自分がシェル上で実行したコマンドの入力や出力をファイルに書き出すことができます。 ◆コマンドの記録 script で記録を開始し、exit で終了します。 $ script スクリプトを開始しました、ファイルは typescript です $ ps PID TTY …

SysRqキーを使ってフリーズしたシステムを復旧する

マジックSysRqキーと呼ばれるコマンドです。 場所はPrintScreenのところにあります。 Xサーバのフリーズ状態から復帰する場合や、ファイルシステムを破壊することなくコンピュータを再起動する際によく使われます。 Linuxカーネル自身がカーネルパニックを起…

cronで自動更新

以前アクセスログのとき用いたcronの使い方です。 前回は/cron.d/にファイルを置く形で更新させていましたが、今回はcrontabを用います。 まず $ crontab -l で現在のcron設定が表示されます。

tarコマンド

圧縮・解凍系コマンドで一番覚えづらいのがtarコマンドだと思います。Linux系では一番使うのに。 ググってたら覚えやすそうなものがあったので紹介を。ほぼコピペ。 まず、必須のオプション(機能指定文字)を選ぶ。 ・c : Create アーカイブの作成 ・x : eX…

覚えておくと便利なコマンド[locate]

Ubuntuでファイルの検索をしたいときはfind、locateの2つがあります。 findは実際にファイルを探し、locateはファイルのインデックスをあらかじめ作成しておいて、それを元に検索します。 なので速度の面から言えばlocate、新しいファイルへの対応はfindで…