これは少し奇妙です。次のコマンドを使用してiSCSIデバイスをスキャンしようとします。
echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
# Doesn't work. The rescan won't recognize the new available disk space.
echo 1 > /sys/block/sda/device/rescan
# Works: recognizes the new available disk space.
/dev/null
画面が複雑になりたくないのですが、どのようにすべてのstdoutとstderrを画面に送信できますか?
ベストアンサー1
echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
^ ^
これには2つの出力リダイレクトがあります。後者が適用されるので、これは次のようになります。
echo 1 >/dev/null 2>&1
ファイルには何も書きません/sys
。
ここで実行されているコマンドは、echo
コマンドラインから印刷するように要求された内容のみを標準出力として印刷するため、そこには「素晴らしい」内容は印刷されません。また、最初のリダイレクトを開くことができない場合はエラーが発生する可能性がありますが、リダイレクトが処理されている間、つまりコマンド自体ではなくシェルに表示される可能性が高いため、リダイレクトも何もしない可能性が2>
あります。
一方、再スキャンを実行すると、どこかに出力が発生した場合、一般的なロギングメカニズムを介してカーネルから出力される可能性が高くなります。したがって、これを制御するには、ログ設定が何であるかを確認する必要があります。
Linux 仮想端末を使用している場合、一部のカーネルメッセージがアクティブな仮想端末に印刷されます。あなたはそれを使用することができますdmesg -n<level>
コンソールに送信されるメッセージの優先順位を設定します。