#!/usr/bin/perl

# $hostlist = "a01, a02, a03";

$user = $ENV{'USER'};
open(IN, "ps -eo user,tty,pid,%cpu,%mem,etime,comm | grep anapaw | grep -v listanapaw|");
@ps = <IN>;
close(IN);

open(IN, "w -sh $user |");
@w = <IN>;
close(IN);

$n = $#ps + 1;

foreach $line (@w){
  $line =~ s/\n//;
  $line =~ s/ +/ /g;

  ($usrw,$ttyw,$fromw,$idlew,$tmp) = split(/ /, $line);

  $ttyfrom{$ttyw} = $fromw;
  $idle{$ttyw} = $idlew;
}

if($n > 0){
printf(" %-7s %-7s %-15s %-5s %-4s  %-7s %-7s %-3s\n","PID", "TTY","FROM","CPU","MEM","TIME", "IDLE", "PROC");
}
for($i=0;$i<$n;$i++){
  $ps[$i] =~ s/\n//;
  $ps[$i] =~ s/ +/ /g;
  
  ($usr[$i],$tty[$i],$pid[$i],$cpu[$i],$mem[$i],$etime[$i],$proc[$i])
   = split(/ /, $ps[$i]);

  $day = 0;
  if($etime[$i] =~ /-/){
    ($day, $t) = split(/-/, $etime[$i]);
  }else{
    $t = $etime[$i];
  }
  $hour = 0;
  ($hour, $min, $sec) = split(/:/, $t);

  if($sec == ''){
    $sec = $min;
    $min = $hour;
    $hour = 0;
  }

  if($day > 1){
    $ctime = "${day}days";
  }elsif($day == 1){
    $hour = $hour + 24;
    $cime = "${hour}:${min}m";
  }elsif($hour > 0){
    $ctime = "${hour}:${min}m";
  }elsif($min == '00'){
    $ctime = "${sec}.00s";
  }else{
    $ctime = "${min}:${sec}";
  }

  printf(" %-7s %-7s %-15s %-5s %-4s  %-7s %-7s %-3s\n",
	 $pid[$i], $tty[$i],$ttyfrom{$tty[$i]},
	 $cpu[$i],$mem[$i],$ctime, $idle{$tty[$i]}, $proc[$i]);
}

print("\n");
if($n > 1){
  print " $n anapaw are running on $ENV{'HOST'}\n";
  if($n > 2 && $hostlist ne ''){
    print " anapaw is avalable on $hostlist\n";
  }
}else{
  print " $n anapaw is running on $ENV{'HOST'}\n";
}

