Hi All
I am being trained in unix and am tryin to write a script for listing the user Processes by user's names exactly the following manner WITHOUT USING A TEMPORARY FILE or SED OR AWK! The format of the output I want is:
James Hallan
PID TTY TIME CMD
31799 pts/3 00:00:00 vim
31866 pts/3 00:00:00 vim
2495 pts/7 00:00:00 vim
8368 pts/0 00:00:00 vim
9544 pts/2 00:00:00 ps
Peter Anderson
PID TTY TIME CMD
8368 pts/0 00:00:00 vim
9544 pts/2 00:00:00 ps
So far, I have written this code and a part of the output is also shown.
echo -n > processes;
for x in $user
do
LOGID=$x
while IFS=: read userID junk junk junk Name junk
do
if [ $LOGID = $userID ];
then
echo "LOGID:$LOGID Name:$Name" >> processes;
w -s ${LOGID}|cut -c'10-200' >> processes;
echo >> processes;
fi
done < /etc/passwd
done
more processes;
OUTPUT:
LOGID:james.hallan Name:James Hallan
up 5 days, 23:34, 46 users, load average: 0.22, 0.28, 0.26
TTY FROM IDLE WHAT
pts/45 172.21.2.109 3:46 vim checking
LOGID:peter.anderson Name:Peter Anderson
up 5 days, 23:34, 46 users, load average: 0.22, 0.28, 0.26
TTY FROM IDLE WHAT
pts/6 86.132.86.129 3:53 -bash
LOGID:laura.stewart Name:Laura Stewart
up 5 days, 23:34, 46 users, load average: 0.22, 0.28, 0.26
TTY FROM IDLE WHAT
pts/8 172.16.1.163 52.00s vim hangman
My trainer says its not the exact same output and as you see I have used a temporary file. How can I get rid of the temporary file and get the exact same output without using SED or AWK.
The main problem I am facing is that when I use the "users" command, if a particular user is logged in from two different terminals, the output has 2 entries for that user. For eg; if james is logged in on 2 terminals, the "users" command will give print james.hallan twice on standard output. Now how do i get rid of one james.hallan entry without using sed and awk.
Secondly, how do i get the output in exactly the same format. This is very frustrating for me as I am almost there and I feel kind of helpless. Any help would be appreciated.