私はコンピューティング クラスタに取り組んでいますが、非常に奇妙な /usr/bin/env の動作をしています...つまり、動作が非常に遅いのです。ヘッド ノード:
$ time /usr/bin/env which
<which output>
real 0m0.025s
user 0m0.001s
sys 0m0.001s
計算ノードで:
$ qsub -I
qsub: waiting for job 176620.scyld.localdomain to start
qsub: job 176620.scyld.localdomain ready
-bash-3.2$ time which
<which output>
real 0m0.003s
user 0m0.000s
sys 0m0.003s
-bash-3.2$ time /usr/bin/env /usr/bin/which
<which output>
real 0m0.003s
user 0m0.000s
sys 0m0.003s
-bash-3.2$ time /usr/bin/env which
<which output>
real 5m0.003s
user 0m0.001s
sys 0m0.001s
ps axはこれを報告します:
12884 pts/3 S+ 0:00 /usr/bin/env which
使用状況バナーを印刷するのに 5 分かかります。なぜこれが起こるのでしょうか?
編集1:
追加情報:
-bash-3.2$ type -a which
which is /usr/bin/which
-bash-3.2$ file /usr/bin/which
/usr/bin/which: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped
-bash-3.2$ echo $PATH
/bin:/usr/bin:/home/gusev/.rvm/bin:/home/gusev/bin
編集 2
私はしたstrace
のです/usr/bin/env which
が、それは行き詰まります
execve("/bin/which", ["which"], [/* 47 vars */]
今平野を走っている
/bin/which
もスタックしますが、このファイルは存在しません:
-bash-3.2$ ls /bin/which
ls: /bin/which: No such file or directory
/bin
NFS 経由でマウントされます。
-bash-3.2$ mount | grep bin
10.54.0.1:/bin on /bin type nfs (nolock,nonfatal)
10.54.0.1:/usr/bin on /usr/bin type nfs (nolock,nonfatal)
したがって、これはネットワークの問題かもしれません...
編集3:
which which
完全に正常に動作します:
-bash-3.2$ time which which
/usr/bin/which
real 0m0.002s
user 0m0.000s
sys 0m0.002s
の出力strace -e trace=execve /usr/bin/env which
は
execve("/usr/bin/env", ["/usr/bin/env", "which"], [/* 47 vars */]) = 0
execve("/bin/which", ["which"], [/* 47 vars */]) = -1 ENOENT (No such file or directory)
execve("/usr/bin/which", ["which"], [/* 47 vars */]) = 0
<which output>
編集4:
ハング時間は常に正確に 5 分です。ある種のデフォルト値のタイムアウトのようです。