Re: Ksh output garbled/out-of-sync



On May 10, 1:17 pm, govindrjuj...@xxxxxxxxx wrote:
On May 10, 9:00 am, Janis <janis_papanag...@xxxxxxxxxxx> wrote:





On 10 Mai, 11:54, Bill Marcum <marcumb...@xxxxxxxxxxxxx> wrote:

On 9 May 2007 19:20:15 -0700, govindrjuj...@xxxxxxxxx

<govindrjuj...@xxxxxxxxx> wrote:

On May 9, 8:28 pm, govindrjuj...@xxxxxxxxx wrote:
Can somebody explain this ? -- thx

/tmp> cat ./1.sh
#!/bin/ksh

for name in 1 2 3 4 5 6 7 8 9 10
do
/bin/echo "<$name>"
/bin/cat /etc/passwd | head -1 | tail
done

/tmp> ./1.sh
<1>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<2>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<3>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<4>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<5>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<6>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<7>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<8>
<9>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh
<10>
root:x:0:1:HOSTNAME Super-User:/:/usr/bin/ksh

Looks like problem with "head". Happening on Solaris 5.8.

Try adding "wait" before "done". What version ofkshis this?
What happens if you use the builtin echo instead of /bin/echo?

--
Heard that the next Space Shuttle is supposed to carry several Guernsey cows?
It's gonna be the herd shot 'round the world.

And while experimenting; what's the result if you remove all
superfluous processs from

/bin/cat /etc/passwd | head -1 | tail

head -1 </etc/passwd

Does this also produce the disorderedoutput?

Janis- Hide quoted text -

- Show quoted text -

That suggestion worked. No more garbledoutput.

I ran the original script as-is on couple of more other systems with
Solaris 5.8. On some theoutputseems ok
and on some others, it gets unordered. I guess it varies with cpu
load. Whenever I am not able to reproduce the
problem, I just add few more "head -1" commands and theoutputgets
unordered.

I am leaning towards the possibilities that there is something wrong
with the configuration of our systems or
"head" is doing something mysterious with STDIN.- Hide quoted text -

- Show quoted text -

Did I mention that the behaviour is not consistent for each run ? I
modified the script to check for
several iterations. Here is what worked and what did not.

========================================
#!/bin/ksh

integer i=0
while [[ $i -lt 1000 ]]
do
echo "marker"

# unordered
# /bin/cat /etc/passwd | /bin/head -1 | /bin/tail

# ordered
# /bin/head -1 </etc/passwd | /bin/tail

# ordered
# /bin/head -1 /etc/passwd | /bin/tail

# ordered
# /bin/cat /etc/passwd | /bin/head -1 | /bin/tail
# wait

i=$i+1
done
========================================

When you open one of the commented blocks and run the script as ---

../1.sh | uniq | wc -l

It should print 2000. For the "unordered" block, it hardly prints
about 1600.




.



Relevant Pages

  • Re: Ksh output garbled/out-of-sync
    ... When you open one of the commented blocks and run the script as --- ... For the "unordered" block, it hardly prints ... I am able to reproduce the problem on several Solaris 5.8 systems now. ...
    (comp.unix.shell)
  • Re: Ksh output garbled/out-of-sync
    ... On some theoutputseems ok ... is starting to look like a problem withksh. ... affected systems and running the test script). ... It turned out to be a bug in ksh. ...
    (comp.unix.shell)