mknodコマンドは何に使用されますか?


52

私はメインOSとしてUbuntuを使い始めたばかりで、やってはいけないことについて学び、人々が過去にした悪いことから学びたかった。UNIXとLinuxのシステム管理者が新しい場所で自分のシステムで行った恐ろしい話についてのメールに出会いました。それらの多くは、mknodコマンドを使用して、問題の解決と修正の両方を行いました。このコマンドについて聞いたことがありませんし、Ubuntuのmanページはあまり役に立ちません。だから私の質問は、このコマンドは何のために使われ、日々の使用に役立ついくつかの例ですか?

回答:


48

mknod元々はキャラクターを作成し、人口を占めるデバイスをブロックするために使用されました/dev/。現在udev、対応するハードウェアがカーネルによって検出されると、仮想ファイルシステム上でデバイスノードが自動的に作成および削除されますが、元々/dev/インストール中に作成されたディレクトリのみでした。

そのため、ほぼ完全な災害が発生して/dev仮想ファイルシステムがロードされない、および/またはudev壮観に失敗する場合、mknod少なくとも初歩的なデバイスツリーを苦労して再投入して何かをバックアップすることができます...しかし、そう、それはシステム管理者の恐怖ですストーリータイム。個人的には、レスキューUSBスティックまたはCDをお勧めします。

名前付きパイプを作成することを別にすれば、エンドユーザーが気にする必要のある日常的な使用を考えることはできません。さらに、それが「日常使用」の定義を拡張しています。


だから、それは、ドライバーを通してデバイスと通信する方法を学ぶ必要なく、システムと通信する方法として、システムに接続されたデバイスによって実際に使用される仮想ファイルを作成する非常に特殊な方法ですか?
マークトムリン

1
しかしudev、Linux固有ですか?おそらく他のUnixライクなシステムがまだ手動でデバイスを作成しているのでしょうか?
ファヒームミサ

2
@mark Er、いいえ。仮想デバイスファイルを作成すると、ソフトウェアがされる方法であるはずのドライバを介してデバイスと通信します。ドライバーはカーネルにフックを作成します。mknodは、ソフトウェアが後で接続できるデバイスファイルにフックをリンクするデバイスファイルを作成します。
シャドゥール

@Faheemわからない。FreeBSDは使用しているようだdevfs、および/またはdevdが、私はどちらかとは個人的な経験を持っていません。しかし、他の大学もデバイスノードの作成プロセスを自動化する独自の方法を考え出したと思われます。
シャドゥール

@markたとえば、Alsaは、/dev/snd検出およびサポートするサウンドハードウェアの各ビットのさまざまな要素に対応する一連のノードを生成します。サウンドを使用するソフトウェアは、これらのデバイスを使用して、どの種類のサウンドカードと通信しているかを正確に知る必要なく、サウンドを生成できます。
シャドゥール

7

名前付きパイプを作成できます。

あるプログラムでそれを使用して読み取り、別のプログラムで書き込みます。

プロセス間の通信を簡単にします。

それ以外の場合は、存在しないデバイス用のデバイスファイルを作成できます。

また、http//publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic = / com.ibm.aix.cmds / doc / aixcmds3 / mknod.htm


あなたの答えは正しかったが、Shadurはすべてのレベルの読者に明確な答えを提供したので、この質問の答えを探している人には最適だと思う。
マークトムリン

私は知っている、私はちょうどそれを行うように実用的なアプローチから説明しようとした。mknod名前付きパイプを作成する以外の用途に使用することは、まれです。
ポールモン

5

Oracle ASMは、RAWデバイスでOracle ASMディスクグループを作成するために作業するOracle DBAとして、mknodデバイスのリンクに定期的に使用します。

私たちはシステム管理者ではないので、上記の返信は私にとって非常に役に立ちました。ストレージ管理者の観点からはまれであるmknodが、Oracle ASMの観点からは一般的な用途であることを指摘したかっただけです。(誰かが私たちのためにもっと良い方法を思いつくかもしれませんか?)


1
LinuxでASMを実行していますが、mknodを実行する理由はありません。シンボリックリンクを作成するudevスクリプトがいくつかありますが、mknodが何のために必要なのかわかりません... Linuxを使用していない場合を除きます。もちろん。
デロバート

@JayJee最新のLinuxシステムでは、/devwith を変更または追加するとmknod、次にシステムを再起動したときにそれらの変更が消えてしまうことに注意してください。udevブート時に変更/追加を行うスクリプトまたはルールファイルを作成して、それらを永続的にする必要があります。
telcoM

3

私見、名前付きパイプを作成する場合でも、mkfifoコマンドはmknodよりも優れています。1つ目は、その名前が自己記述的であること、2つ目は、-mオプションでumask設定を上書きできることです。


1
...そして、名前付きパイプの10年後まで存在しませんでした。私たちの多くはmknod foo p、それが唯一の方法だったときに学びました。

最近、coreutilsを調べていたときまで、mknodについて聞いたこともありませんでした。私はいつもちょうど...はmkfifo使用してきました
シックス・

0

コマンド「mknod」は、AT&TによってUnix(tm)バージョン4のライセンシーにリリースされました。時間とお金をかけてコピーを取得する価値があることをお勧めします

ベルシステムテクニカルジャーナル、57:6. 1978年7月〜8月、pp 1905-1929。UNIXタイムシェアリングシステム。(リッチー、DM;トンプソン、K)

その問題、特にその記事は、Unix(tm)がそうであったエレガントで、コンパクトで、高速で、安定で、安全で、多用途のオペレーティングシステムの構築を可能にするいくつかの基本概念の理解につながります。現在利用可能なさまざまなシステムは、まだ非常に多用途です;-)

ここでそれらのいくつかについて言及しようとします。

1)setuidおよびsetgidビットと、これらのビットの使用により、ユーザーを信頼できる特権ドメインと信頼できない特権ドメインに分離する方法。ホップは永遠に続き、信頼できるユーザーがシステムに「#cd /; rm -rf * .o」、特権の不適切な使用と「破壊の空間」の両方に注意してください。また、引用符で囲まれた文の最後は、フルストップと閉じ引用符の順序を指示することに注意してください。英語の文法は吸う(fm)。dmrとkenは、semnal特許を一般に寄付し、彼らを祝福します。

2)ファイルと同じ名前空間を介したデバイスアクセス。創始者が考えていない活動を実行するために、他のシンプルなツールと組み合わせた小さなツールのシンプルなエレガンスが強力になります。

3)データスペース内のファイルは文字列です。構造はプログラム空間のプログラムによって課せられ、複雑なSwiss-Army-Knifeプログラムと密接に結びついていません。Apple(R)、Microsoft(R)、およびIBM(R)は、BSTJを読んだほうが良い製品があったかもしれません。

4)stdin、stdout、stderr。

5)シェル、解釈可能なコマンドプロセッサ、簡単なツールを簡単に組み合わせることができます。

6)内側のループのコードのみを最適化し、限られた時間とお金を大切な場所に費やす。

7)言語翻訳プロセッサにI / O構文を埋め込まないでください。

C. <FORTRAN

8)キッス。

9)「他の方法よりも優れたリアルタイムシステムへのマルチユーザータイムシェアリングayaeemシステム拡張を実装し、実装するのが簡単です」私、RSX-11Dのタイムシェアリング拡張、MACROで書かれた小さなツールを使用して実装回避できない場合は11、それ以外の場合はより高レベルの言語prスクリプトはかなり良好で、248kバイトのPDP-11 // 45(16kソリッドステートメモリの残りのコア)で16ユーザー。FOCAL、BASIC、FORTRAN IV、C、MACRO-11、リンク編集、プログラム実行、バッチ、インタラクティブ、およびLAB-11とA / Dへの創造的なカスタマイズされたインターフェースを使用した複数の科学実験の制御/データ取得による同時プログラム開発、 D / A、高解像度クロック、...

9600ボーCRTまたは120cpsプリンター、30cps DECwriterを使用した観察可能な刺激的な遅延編集はありません。300 lpmプリンターを備えた少しぎくしゃくしたスタッカート。RJE用のUT200および2780。RSX-11M、RSX-11M +、IAS、およびVMSの初期バージョンよりもFastesrプログラムの開発。

デキューとして実装された優先度リンクATLのハッピーな特性を使用して、リアルタイムタスクとして実装された非常にシンプルなタイムシェアリングスケジューラ。

最近、Unixの種類は非常に速くなっていますが、それはCPUが3秒で無限ループを実行できるからです。TFC。


入力ミスを許してください。iPhoneとパーキンソンは一緒にうまく機能しません。C <FORTRAN <COBOL <PL / 1、左が良い。
k6mrm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.