lsはstraceで異なる動作をします。

lsはstraceで異なる動作をします。

この状況をデバッグする方法がわかりません。

1) 以下を実行しようとします。

ls /home/user

2) lsは何もブロックし、印刷しません。これは/home/userにsshfsマウントディレクトリである/home/user/sshfs_filesが含まれていますが、私のコンピュータでネットワークがダウンしているためと思います(ネットワークは再接続されましたが、SSHは切断されているようです)。

3) sshfs マウントディレクトリを停止原因として特定したかったので、straceで同じコマンドを試しました。

strace -o /tmp/log ls /home/user

4)lsは動作します!したがって、現在の状況は、lsがstraceで動作しますが、それ自体がブロックされていることです。

これがどのように可能ですか?この状況をどのように説明するのですか? lsがstraceでブロックされていない場合、どこでブロックされているかどうかはどうすればわかりますか?

ありがとうございます!

ベストアンサー1

〜のようにjw13ほぼ」と指摘した。lsは小さなディレクトリで長い時間がかかります- 少なくとも説明に関する限り。そこにあるコメントを必ず読んでください!

簡単に言えば、lsいくつかの一般的なコマンドラインプログラムは、出力が端末に直接送信されないときに異なる動作をします。これは、色付けのために各ディレクトリエントリの種類を検出しようとするエイリアスlsです。ls --color=autoこの時点では動作が中断され、statsshfsインストールディレクトリで操作を実行できません。

に追加する上記の質問に対するMadScientistの回答strace: 'アクションをデバッグする方法やgdb役に立つかどうか疑問に思う場合は、ls次のような実行をお勧めします。

 strace -o /tmp/log ls --color=always /home/user

おすすめ記事