Some areas where the script could go wrong:
1) If is run from cron too frequently runs could overlap.
2)
Quote:
who -u | /usr/xpg4/bin/grep -i -f $SELECTUSERS|/usr/xpg4/bin/awk '{print $1 "," $2 "," $6 "," $7}' > $USERSLOG
If one username is contained in another user name you could get a false match. e.g. "fred" and "alfred" . Depends on what your usernames are like.
3)
Quote:
PID=`ps -ef | /usr/xpg4/bin/grep "$PTS" | /usr/xpg4/bin/grep "pronto" | /usr/xpg4/bin/awk '{print $2}' | head -1`
Lots of scope for false mismatches. Consider similar PTS values "pts/aa" and "pts/aab" .
No point in running "ps -ef" because we already know $PTS. Try "ps -ft"${PTS}". This will make the script faster and reduce the chance of false matches.
Also the the second "grep" in the pipeline could find the first "grep" in the pipeline.
Could be better with something like this which allows for the user to log out since we started our script. Also reduces chance of false matches. I don't know whether the "head -1" is needed as I know nothing about your process table.
Quote:
ps -ft"${PTS}" 2>/dev/null | /usr/xpg4/bin/grep "pronto" | /usr/xpg4/bin/grep -v "grep" | /usr/xpg4/bin/awk '{print $2}' | head -1 | while read PID
do
echo "PID is $PID" >>$KILLIDLELOG
echo "name is $NAME" >>$KILLIDLELOG
echo "Idle time is $TIME hrs" >>$KILLIDLELOG
echo "kill $PID" >>$KILLIDLELOG
echo "" >>$KILLIDLELOG
kill -5 $PID
done
I have never issued a "kill -5" but I assume that it means something to "pronto"?