私が使用する出力はfuser
次のとおりです。
$ fuser /
/: 1354rc 1362r 1370rc 1371rc 1395rc 1399rc 1403rc 1410rc 1414rc 1428r 1451rc 1458rc 1470rc 1472rc 1477rc 1480rc 1487rc 1492rc 1500rc 1504rc 1508r 1513r 1516rc 1551r 1563rc 1567rc 1569rc 1586rc 1592rc 1629r 1630r 1633r 1645r 1660r 1695rc 1712rc 1728rc 1885r 2262rc 2273r 2585r 2602r 3342r 3799r
わかりますが、パイプを接続したり問題が発生した場合、wc
出力nl
は次のようになります。誰でも理由を教えてもらえますか?
$ fuser / | nl
/: rcrrcrcrcrcrcrcrcrrcrcrcrcrcrcrcrcrcrcrrrcrrcrcrcrcrcrrrrrrcrcrcrrcrrrrrr
1 1354 1362 1370 1371 1395 1399 1403 1410 1414 1428 1451 1458 1470 1472 1477 1480 1487 1492 1500 1504 1508 1513 1516 1551 1563 1567 1569 1586 1592 1629 1630 1633 1645 1660 1695 1712 1728 1885 2262 2273 2585 2602 3342 3799 4618
ベストアンサー1
fusionrはいくつかを標準出力に送信し、一部は標準エラーとして送信します。
出力はどのように分割されますか?
パイプメカニズムは標準出力のみをキャプチャします。
一般フューザー
mybox $ fuser /
/: 350r 356r 357r 364r 10484rc 10485r
次に、リダイレクトしてpidがaにあり、ファイル形式(cまたはr)がstderrにあることを確認します。
mybox $ fuser / > a
/: rrrrrcr
ファイル 'a' は新しい行で終わりません。
mybox $ cat a
350 356 357 364 10484 10485mybox $
今両方リダイレクトします。
mybox $ fuser / > aa 2> bb
mybox $ cat aa
350 356 357 364 10484 10485mybox $
mybox $ cat bb
/: rrrrrcr
2>
リダイレクトstderr
1 つのコマンドで両方送信
mybox $ fuser / > cc 2>&1
mybox $ fuser / 2>&1 | wc
1 8 71
mybox $ fuser / 2>&1 | nl
1 /: 350r 356r 357r 364r 10484rc 10485r 11761r
2>&1
「マージ」stdout
とstderr
出力が分割されるのはなぜですか?
fusionrの主な用途の1つは、マウントポイントを「保持」するプロセスを終了することです。
上記のコマンドに基づいて、ファイルの内容を使用してすべてのプロセスを終了できます。
mybox $ fuser /foo/bar > a
/foo/bar: rrrrrcr
mybox $ cat a
350 356 357 364 10484 10485mybox $
mybox $ kill $(<a)
- $( ) 構文 意味: 'a' ファイルの内容