Mengapa perintah bash terkadang tidak mengembalikan output?

6

Dalam bash shell, jika saya menjalankan perintah apa pun (mis. "Siapa"), berkali-kali itu tidak akan menampilkan hasil apa pun, tetapi ketika saya selanjutnya menjalankan perintah lain, output dari perintah sebelumnya akan disertakan.

misalnya.:

    > who
    > ls -l
    u811217  pts/0        Jul  7 10:36 (pcp830738pcs.ny.abc.com)
    f122260  pts/1        Jun 29 18:07 (wnnypbh82bqjl1.ny.abc.com)
    hpmonpd  pts/2        Jul  6 15:17 (vsin0vw342.svr.us.abc.net)
    total 10536
    -rwxr--r-x  1 e252642 pbdvdp      75 Jul  6 12:26 runboth.sh
    -rwxr--r-x  1 e252642 pbdvdp      19 Jul  6 12:28 runtop.sh
    -rwxr--r-x  1 e252642 pbdvdp     108 Jul  6 12:29 runvmstat.sh

Pada awalnya sepertinya masalah "not flushing the buffer", tapi kadang-kadang hasilnya diterima rusak: misalnya.:

    > who
    > ls -l
    total 10536
    -rwxr--r-x  1 e252642 pbdvdp      75 Jul  6 12:26 runboth.sh
    -rwxr--r-x  1 e252642 pbdvdp      19 Jul  6 12:28 runtop.sh
    -rwxr--r-x  1 e252642 pbdvdp     108 Jul  6 12:29 runvmstat.sh
    u811217  pts/0        Jul  7 10:36 (pcp830738pcs.ny.abc.com)
    f122260  pts/1        Jun 29 18:07 (wnnypbh82bqjl1.ny.abc.com)
    hpmonpd  pts/2        Jul  6 15:17 (vsin0vw342.svr.us.abc.net)

Catatan menarik lainnya adalah:

  • Saya tidak bisa membuat perilaku ini terjadi untuk perintah bash bawaan, seperti 'histori' atau 'dir'.
  • Saya tidak bisa mendapatkan perilaku ini terjadi menggunakan 'ksh'.

Kasus sederhana ini diberikan sebagai contoh. Masalah terjadi dengan pengalihan file, dll., Dan menyebabkan masalah besar ketika terjadi di dalam skrip kritis yang dieksekusi.

Detail OS: redhat linux 2.6.9-67.0.4.ellargesmp

Setiap bantuan atau saran akan sangat dihargai. Terima kasih.

Bruce
sumber
1
Bagaimana Anda membuka shell? (konsol, xterm atau emulator terminal lainnya, SSH, telnet ...) tty dan readlink /proc/self/fd/0 keluaran?
grawity
Kami membuka terminal menggunakan Putty (SSH). tty mengembalikan "/ dev / pts / 5". Juga, banyak pengguna telah mengalami masalah ini, kemungkinan besar semuanya menggunakan Putty (SSH).
Bruce
Saya pikir Anda memiliki dua proses membaca dari stdin.
Soren
Fakta bahwa itu adalah default bash $PS2 prompt adalah sedikit petunjuk, kataku.
JdeBP
@ JdeBP: Harap abaikan prompt. Pada saat saya menambahkan pertanyaan ini masalahnya tidak terjadi, jadi saya mengetikkan contoh. Masalahnya tidak akan muncul selama berjam-jam, kemudian berfungsi dengan benar selama berjam-jam, kemudian muncul kembali selama berjam-jam. (Bagi saya, saya secara manual mengatur prompt PS1 karena saya tidak memiliki direktori home pada server produksi ini.)
Bruce

Jawaban:

1

Terima kasih untuk bantuannya. Sepertinya pelakunya adalah proses yang memiliki kebocoran ingatan, dengan jumlah mencapai 25.000+. Begitu banyak hal aneh tentang masalah ini sehingga saya tidak tahu harus mulai dari mana. misalnya 'ksh' bekerja dengan baik ...

Ngomong-ngomong, sebuah tambalan dirilis, jumlah utasnya kembali dalam pasangan ratusan, dan sejauh ini tidak ada perilaku aneh.

Terima kasih, Bruce

Bruce
sumber