CUBE SUGAR CONTAINER

技術系のこと書きます。

Unix

色々な Unix 系 OS の crypt(3) について調べたら面白かった話

今回は、色々な Unix 系 OS の crypt(3) について調べたら、過去の経緯などが分かって面白かったという話について。 crypt(3) というのは、標準 C ライブラリの libc ないし libcrypt で実装されている関数のこと。 調査した Unix 系 OS というのは、具体的…

続: Docker コンテナ内で Docker ホストと同じユーザを使う

以前、Docker コンテナ内で Docker ホストと同じユーザを使う方法として、以下のような記事を書いた。 ちょっと強引だけど /etc/passwd と /etc/group をコンテナからマウントすることで不整合をなくしてしまう、というもの。 blog.amedama.jp ただ、上記の…

OpenSSH の秘密鍵から公開鍵を復元する

OpenSSH だと公開鍵がなくなっても秘密鍵から復元できることを知った。 今回はそれを試してみる。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 L…

Docker コンテナ内で Docker ホストと同じユーザを使う

Docker コンテナで Docker ホストのボリュームをマウントすると、パーミッションの問題が生じることがある。 これは、ホストで使っているユーザとコンテナで使っているユーザで UID と GID の不一致が起こるため。 今回は、それらの問題を解決する方法の一つ…

dd コマンドの進捗を確認する

dd コマンドの進捗を確認したいときは macOS であれば SIGINFO を、Linux (GNU Coreutils) であれば SIGUSR1 を送れば良い。 また、GNU Coreutils の dd には status=progress というオプションもある。 macOS まずは macOS から。 使った環境は次の通り。 $…

インターネットに疎通のないマシンに SSH Remote Port Forwarding + Squid で Web にアクセスさせる

インターネットに直接つながっていないマシンというのは意外とよくある。 とはいえ、そういったマシンでも当然のことながらセットアップ等の作業は必要になる。 その際、作業に必要なファイルは大抵の場合に SCP などで転送することになると思う。 とはいえ…

Ubuntu 18.04 LTS に OpenCL (NVIDIA CUDA Runtime) をインストールする

OpenCL は、CPU や GPU など様々なプラットフォームを抽象化して並列計算に用いるためのフレームワーク。 今回は Ubuntu 18.04 LTS + NVIDIA Tesla T4 の環境に OpenCL の NVIDIA CUDA ランタイムをインストールしてみる。 使った環境は次の通り。 $ cat /et…

Ubuntu 16.04 LTS に OpenCL (Intel CPU Runtime) をインストールする

OpenCL は、CPU や GPU など様々なプラットフォームを抽象化して並列計算に用いるためのフレームワーク。 今回は Ubuntu 16.04 LTS の環境に Intel の CPU ランタイムをインストールしてみる。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ub…

Ubuntu 18.04 LTS で NVIDIA-Docker2 を使ってみる

(2019-09-22 追記) NVIDIA-Docker2 は現在では非推奨 (Deprecated) な方法となっています。 代わりに NVIDIA Container Toolkit を使ってください。 blog.amedama.jp ニューラルネットワークに代表される機械学習の一部のアルゴリズムでは、学習する上で大量…

coreutils の *sum を使ってワンライナーでハッシュ値を検証する

何処からかファイルをダウンロードしたときは、念のためハッシュ値が合っているか確認する場合があると思う。 今回は、そんなハッシュ値の検証をワンライナーでやる方法について。 シェルスクリプトとかで使うと便利だと思う。 動作確認に使った環境は次の通…

Python: Unix における python* コマンドと処理系のバージョンについて (PEP394)

今回は Unix ライクなシステムにおける python* コマンドの振る舞いと、処理系のバージョンについて色々と書いてみる。 きっかけは、以下のブログ記事を目にしたため。 rheb.hatenablog.com 上記のブログでは Red Hat Enterprise Linux 8 に搭載される予定の…

Linux の UNIX パスワード認証について調べた

ふと Linux ディストリビューションのユーザ認証周りについて気になって、その中でも特に UNIX パスワード認証について調べてみた。 UNIX パスワード認証というのは、Linux に限らず Unix 系のディストリビューションで広く採用されているパスワードを使った…

リモートサーバ上の Docker コンテナで Jupyter Notebook を使う

今回は、以下のエントリの続き。 blog.amedama.jp 上記の記事でやったことを Docker コンテナにしてみる。 使った環境は次の通り。 まずは Docker ホストとして使う Ubuntu 18.04 のマシンから。 こちらも前回と同じように Vagrant で構築している。 vagrant…

Python: グローバルスコープにあるオブジェクトの __del__() でインポートしたときの挙動について

今回は Python の __del__() メソッドでちょっと不思議な挙動を目にしてから色々と調べてみた話。 具体的には、グローバルスコープにあるオブジェクトの __del__() で別のモジュールをインポートしてるとき、そのオブジェクトがプロセス終了時に破棄されると…

ソースコードから Python をインストールするときにビルドされないモジュールを確認する

ソースコードから Python をインストールするとき、環境によってはビルドされないモジュールが出てくる。 今回は、どんなモジュールがビルドされなかったかを確認する方法について。 先に結論から書くと、ビルドされなかったモジュールがあるときはログにメ…

inode (アイノード) を枯渇させてみる

inode (アイノード) は Unix 系のファイルシステムに登場する概念の一つ。 これはファイルシステム上に保存しているファイルなどのメタデータを格納するデータ構造になっている。 本のメタファーで説明すると、本文が実際に保存されているデータなら inode …

head コマンドの不思議な挙動と標準入出力のバッファリング

今回は Unix における標準入出力のバッファリングモードについて扱う。 普段あまり意識していなかったけど head コマンドの挙動をきっかけに気になって調べていったらなかなか面白かった。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductV…