みなさんこんにちは。私は梁旭です。 ご存知のとおり、Linux ではデバイス ファイルも含めすべてがファイルです。仕事で /dev/null をよく見かけますが、これは何でしょうか? 技術的に言えば、/dev/null は仮想デバイス ファイルです。プログラムでは、これらの仮想デバイス ファイルは実際のファイルとして扱われます。プログラムはこのデータ ソースからデータを要求することができ、結果のデータはオペレーティング システムによって提供されます。ただし、このデータはディスクから読み取られるのではなく、オペレーティング システムによって動的に生成されます。仮想デバイス ファイルの典型的な例は /dev/zero です。 ただし、/dev/null にデータを書き込む場合、/dev/null に書き込んだデータは、ブラックホールに投げ込まれたのと同じように、最終的には破棄されます。 この場合、/dev/null は何の役に立つのでしょうか?この質問を理解するには、まず Linux システムまたは Unix および Unix ライクなシステムの標準出力と標準エラー出力について基本的な理解が必要です。 標準出力ファイルと標準エラー出力ファイル コマンドライン プログラムは、標準出力と標準エラーの 2 種類の出力を生成できます。標準出力は標準出力ファイル stdout に記録され、標準エラー出力は標準エラー出力ファイル stderr に記録されます。 デフォルトでは、標準出力ファイルと標準エラー ファイルはターミナル ウィンドウ (またはコンソール) に関連付けられます。つまり、標準出力または標準エラーに送信されたものはすべて画面に表示されます。 ただし、シェルでのリダイレクトを通じて、この動作を変更することができます。たとえば、標準出力をファイルにリダイレクトできます。この方法では、標準出力情報は画面に表示されず、後で表示できるようにそのファイルに保存されるか、標準出力情報をデジタル LED や LCD ディスプレイなどの別の物理デバイスにリダイレクトすることができます。 一般的なリダイレクト方法は次のとおりです。
不要な出力をクリアするには/dev/nullを使用する 出力には標準出力と標準エラーの 2 種類があるため、/dev/null の最初の使用法は、これらの出力のいずれかをフィルター処理することです。上記の使用法は、次の実際の例を見るとより簡単に理解できます。 /sys フォルダーの下のファイル名に「power」という文字列が含まれるファイルを探して、電源設定に関連するファイルを検索する場合は、次のようにコマンドを記述します。
/sys フォルダには非ルートユーザーがアクセスできないファイルが多数あるため、多くの Permission denied エラーが発生し、画面に出力されます。 これらのエラー メッセージにより画面が乱雑になり、重要な情報がわかりにくくなる可能性があります。 Permission denied エラー メッセージは標準エラー出力の一部であるため、/dev/null にリダイレクトできます。
この方法により、表示される情報がより明確になります。 場合によっては、標準出力の内容ではなく、標準エラーの内容を表示したいことがあります。その場合は、標準出力を /dev/null にリダイレクトできます。
上記のスクリーンショットは、出力をリダイレクトせずに、パケットが宛先ホストに到達できる場合に ping コマンドが通常の出力を表示することを示しています。最初のコマンドについては、ネットワークが接続されているときは画面に何も表示されませんが、ターゲットマシンから切断されると、画面にはエラーメッセージのみが表示されます。もちろん、標準出力と標準エラー出力を 2 つの異なるファイルにリダイレクトすることもできます。
この例では、標準出力は表示されず、エラー メッセージは error.log というファイルに保存されます。 すべての出力を/dev/nullにリダイレクトする 場合によっては、出力を表示したくないことがありますが、そのためには 2 つの方法があります。
文字列 >/dev/null は標準出力を /dev/null にリダイレクトすることを意味し、2 番目の部分 2>&1 は標準エラーを標準出力ファイルにリダイレクトすることを意味します。ここでは、標準出力ファイルを単に 1 と書くのではなく、&1 と書く必要があります。2>1 と書くと、標準出力は 1 という名前のファイルにのみリダイレクトされます。 ここで注目すべき重要な点は、順序も非常に重要であるということです。リダイレクトパラメータを次のように入れ替えると、
期待通りには動作しません。これは、2>&1 が最初にインタープリターによって解釈されると、標準エラー出力がデフォルトの標準出力ファイル stdout にリダイレクトされ、画面に表示されるためです。次に、標準出力が /dev/null にリダイレクトされると、標準出力情報がクリアされます。最終結果として、画面にエラー メッセージが表示されます。正しい順序を忘れてしまった場合は、もっと簡単な方法があります:
この例では、&>/dev/null は標準出力と標準エラーを /dev/null にリダイレクトすることと同じです。 出力を/dev/nullにリダイレクトするその他の実用的な例 ディスクが連続データを読み取る速度を知りたい場合は、dd コマンドを使用してテストできます。ただし、dd コマンドは標準出力ファイルに出力するか、ファイルへの出力を指定します。書き込まれたデータが結果に与える影響を排除するために、of=/dev/null パラメータを使用して、dd 出力を実際のディスクではなくこの仮想ファイルに書き込むことができるようにします。ここでこれを行うには、シェルのリダイレクトを使用する必要さえありません。 次のコマンドでは、パラメータ if= は入力用のファイル名を指定します。パラメータ of= は出力ファイル名、つまり出力が書き込まれる場所を指定します。 次のテストはあまり正確ではありませんが、問題を説明するには十分です。
マークダウン 上記は実際のシナリオです。ここに別のシナリオがあります。 ある時点で、特定のサーバーから何かをダウンロードできる速度を知りたいと思うことがあるかもしれません。しかし、ディスクに不要なものを書き込みたくないので、この時点では、内容を /dev/null に書き込むことができます。
結論は この記事では、/dev/null ファイルのいくつかの実用的な使用法を紹介します。あなたの仕事に役立つことを願っています。この特殊なデバイス ファイルのその他の興味深い使用方法をご存知ですか?コメントで教えてください! この記事は、公開アカウント「Liang Xu Linux」から転載することを許可されています。 Liang Xu 氏は、Fortune 500 外資系企業の Linux 開発エンジニアです。彼は WeChat の公開アカウントで多くの Linux の知識を共有しています。ぜひフォローしてください! |
>>: クラウド コンピューティングのサービス レベル契約を交渉する方法
通常、ウェブサイトのトピックに関して特に豊富な経験を持つウェブマスターだけが、優れたオリジナル作品を...
zvps は 2005 年に設立され、チェコ共和国に登録されています (会社登録番号: 290 37...
ウェブサイト構築のプロセスにおいて、ウェブサイト構造の配置は非常に重要です。あなたが新人ウェブマスタ...
Kazila は、米国テキサス州に登録され、XEN と KVM ベースの VPS を提供する、数年の...
北京時間2月7日遅く、オンライン人材紹介大手のモンスター・ワールドワイド(NYSE:MWW)は木曜日...
iposcoopウェブサイトのスクリーンショット5月8日、米国の金融ウェブサイトiposcoopによ...
[51CTO.com クイック翻訳] クラウドファイル共有とは、ユーザーにサーバー上のストレージスペ...
少し前に、A5 ウェブマスターのウェブサイトで「インターネット ローカリゼーション需要の次のトレンド...
私が持っている計画を例に挙げると、主な問題は次のとおりです。 1. 通信コストは依然として高いままで...
現在、インターネットの大火事は伝統的なIT産業に「影響」を及ぼしているだけでなく、国民経済や国民生活...
なぜ起業家は、ユーザーにイノベーションに費やした時間と労力に対して支払いを求めるべきなのでしょうか?...
会議を主導した張氏は相変わらず元気いっぱいで、IT業界での20年以上の経験がその禿げた頭に刻み込まれ...
現在、インターネット企業の買収が相次いでおり、自社のエコシステム内の隙間を埋めるものであれ、上場への...
今週、OpenStack は 14 番目のバージョンである Newton を正式にリリースしました。...
ピーター・ドラッカーは近代経営の父として知られ、企業経営に関する有名な洞察力で有名です。彼は著作の中...