質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Linux

    3882questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

/dev/nullについて

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 2,156

kinpirans

score 13

初歩的な質問すみません。
今回、とある問題の解決策を探した所
「< /dev/null > /dev/null 2> /dev/null」を使用し、出力を捨てる事によって問題を解決できました。

ちなみにこれが実際に解決したfabricの処理です。
「run(nohup mono hello.exe < /dev/null > /dev/null 2> /dev/null &)」
こちらが、参考にしたサイトです。
http://treeapps.hatenablog.com/entry/2014/02/04/002323

/dev/nullは出力を捨てると言うのは、調べて分かったのですが、
この様に「< /dev/null > /dev/null 2> /dev/null」ここまでネストする意味が理解できません。
どなたかご教授お願いできないでしょうか?

宜しくお願い致します。


  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

それぞれ、
< /dev/null:標準入力(STDIN)を/dev/nullから入力(EOFになる)
> /dev/null:標準出力(STDOUT)を/dev/nullに出力
2> /dev/null:標準エラー出力(STDERR)を/dev/nullに出力
となっています。
ネストという訳ではありません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/11 00:48

    非常に分かりやい回答ありがとうございます!
    それぞれ独立したコマンドとして考えれば良かったんですね><
    すごく理解できました、ありがとうございます!!

    キャンセル

checkベストアンサー

+1

こちらのサイトを確認したところ、標準出力がされていない点が後々気になっていたようです。
そのため、よくサイトを拝見すると下記の記述が書かれていることがわかりました。

上記のように /dev/null など他のファイルを指定することにより、子プロセスが入出力ストリームの参照を持たないため、期待通りの実行結果となります。

他のファイル?
では下記のように出力先をファイルに変えてみるのはいかがでしょうか?
/dev/nullもファイルなので、ファイルに出す形に変えるということで・・・。
/etc/init.d/tomcat start < /dev/null > /tmp/redirect_output_`date '+%H%M%S'`.log 2> /tmp/redirect_error_`date '+%H%M%S'`.log'

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/08 21:20

    補足です。間にdateコマンドを入れていますが、日時つきファイル名をログファイルとして出すときに利用していたTipです。date '+%Y%m%d%H%M%S'でもいいですね。
    この場合、YYYYMMDDHHMIDDの形を想定です・・・。

    キャンセル

  • 2015/05/11 00:54

    /dev/nullもファイルなんですね!
    そこから理解できていなかったです><
    単純に捨てているだけかと思ってました。。。
    コマンドの例が非常に分かりやすく理解しやすかったです。
    ありがとうございます!

    キャンセル

+1

nohup mono hello.exe < /dev/null > /dev/null 2> /dev/null

nohup は実行するシェルから切り離されて,非同期に独立して動作する,ということです.
monoかhello.exeは,何かキーボードからの入力を受け付けるプログラムだったりしませんか?

そういうプログラムに対して < /dev/null としないと
nohupで独立して動作したまま,ずーっと入力待ちしてしまいます.

そこで,< /dev/null とすることで,入力が必要なプログラムの箇所を無事,
入力なしということで処理を継続できてプログラムの最後まで到達することができます.

 > dev/null 2> /dev/null は 通常のリダイレクト出力ですね.
nohup でシェルから切り離されてしまうので,
標準出力もエラー出力もターミナル画面上に出すことができません.なので,
nohup する場合は,こうやって出力を捨てるか,
lib さんのおっしゃるように,他のファイルに内容を書き出すようにするのがセオリーです.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/11 00:52

    今回使用していたhello.exeは入力は必要ない処理なので、「< /dev/nul」自体いらなかったんですね><
    nohup の場合にファイルに出力する事はセオリーなんですね。
    ググってみても、当たり前の用に書かれている記事ばかりだったので、ようやく合点がいきました!
    非常に分かりやすい回答ありがとうございます!

    キャンセル

0

こんな初歩的な質問に、みなさん非常に分かりやすく丁寧な回答ありがとうございました!
みなさんのおかげで正確に理解する事ができました。
みなさんベストアンサーにしたい位なのですが、今回はコマンド例を書いてくださったlibさんをベストアンサーにさせていただきました><



投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3882questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。