有没有人做过如何监视Unix下某个进程的状态,如占用的内存情况,cpu情况等等啊?
高手帮帮忙呢,急用啊!!!

解决方案 »

  1.   

    起一线程,定时运行UNIX命令如下,再解析显示结果.           Process p = Runtime.getRuntime().exec(
                         new String[]{"/bin/sh","-c","top ?????"});
                   InputStream is = p.getInputStream();
                   int r;
                   while( (r=is.read()) != -1)
                      System.out.print((char)r);
      

  2.   

    晕,不是吧,top不是Unix自身带的命令吧,是额外装的软件啊!这怎么行啊?
      

  3.   

    不用top, 你准备用什么呢?
      

  4.   

    我的意思是说能不能直接写程序读取机器的这些信息,java有这方面的功能吗?高手们帮帮忙。
      

  5.   

    好象没有. Java的最大特点是平台无关,没有听说可以看Window的,所以UNIX也...
      

  6.   

    纯java的好像不行,至少我不知道
      

  7.   

    监视进程管理
      程序是一个可执行文件(Process)是正在运行程序一个实例。 SCO UNIX System V支持许多进程同时运行,各种系统通过调 用可用进程去创建新进程,与其他进程通讯,以及终止其他进程。
      进程族系
      新进程创建时,内核会分配一个进程标识号(PID)给它,并对进程表中添加说明讯息。
      由一个进程创建另一新进程,老进程为父进程,新进程为子进程。 用户Shell执行的大多数指令又是它的子进程,子进程则运行指令。 而父进程允许有多个子进程来实现任务等,待子进程完成。一个 父进程可以有多个子进程,但是,一个子进程只有一个父进程。
      前台及後台进程
      在Shell提示处打入指令後,创建一子进程运行命令,Shell等待命令退出,然回到对用户提出提示符,这道指令与Shell同步运行, 即在前台运行。
      在Shell提示 处打入的指令,若随一个&,Shell创建的子进程运行此指令,但不等待指令退出,而直接返回到对用户提出提示。这道指令与Shell同步运行,即在台运行。例如:
      $ tar cvf test /usr/imsnow&
      精灵进程
      精灵进程是一个进程,它与终端和用户都无联系,也有人喜欢称他为管家婆。精灵完成一些周期性的事,平时它睡眠。用ps 指令可看到精灵,它在tty区域中带有问号(?)。
      -Sched:PID 0,它完成进程的程序在存储局和盘交换局之间交换工作。
      -init:PID 1,系统自动建的第一用户进程,它负责初始化引 导和注册过程,也就是所有非系统进程的祖先。它会在终端口上, 启动getty 进程。
      -vhand:PID 2,页面精灵,它频繁地把储页面内容送往交换区。
      -bdfush:PID 3,定期刷新高速缓到盘(默认情况,每13秒刷 新一次)
      -logger:归档系统出错讯息。
      -cron:在调度时运行作业。
      -Ipsched:脱机打印精灵。
      孩儿进程
      孤儿进程在父进程终止仍旧活动,由init 认它为乾儿子。 僵□进程则是进程已终止,但进程还未撤消,因为父进程并未「 等待」它,进程表仍保留著这僵体,进程表的实体是僵体进程所消耗的资源。
      随著新进程的创建,出现大量僵体,但总数是有限制的,因此影 响新进程的产生。而孩儿进程与僵体进程不同,并不会影响系统 效率。
      通常,在父进程死去时,才会移去僵体进程。若他们还未移去, 应由init 继承并移去它。
      监视进程
      监视进程监注册户的数量,用以记系统的性能;亦会监视用户进程,包括挂起进程;以及装载均值等系统性能问题。
      要显示进程信息,可以利ps 指令报告,进程状态。在默认 情况下,仅会报告与当前终端有联系的有关讯息。若用户没有root权 限,ps仅限以说明运行进程,报告用户的进程讯息。若用户有root权 限,则会报告在所有终端上所有用户的进程讯息,例如:
      $ ps -u joana
      -u 〈username〉选项显示指定用户的讯息。
      -t 〈ttynamt〉选项显示指定终端有关的进程讯息。
      而ps -elf指令则提供了需有F、S、C、PRI、NI、TIME字段的 使用讯息。
      F是标记,指示进程位置,20表示在内存,0表示交换在盘上, 31是系统进程。
       S是状态讯息,指示进程状态,睡眠还是正在运行。
      C是进程占有CPU的百分率
      TIME是花费CPU的总时间。
      PRI是进程当前优先数
      NI是进程的nice (ADM)菜单
      如何创建进程
      当进程分岔一个子进程,自己就会进入睡眠状态。开始时,子进 程运行父进程的同一程序,由内核分配一个新的PID。当子进程 再去执行新的程序,保持新分配的PDI,新程序就会替代子进程 的原先程序。
      当子进程完成後,内核会把它从系统中移去,再唤醒父进程,子进程就会退出。
      监视系统装载
      uptime 指令显示装载均值(一分钟、五分钟和十五分钟), 即在预定时间上,排队运行进程的平均数:$uptime
      w 指令产生如uptime一样的装载均值讯息,并显示谁在 系统上做甚麽,若用户拥有root权限,W报告所有用户的有关讯 息。 若没有,仅显示与用户进程有关竹的讯息。
      PCPU(Process CPU,进程CPU时间 )显示某道特定指令已运行多久了。对控制不了的进程,这种检查是很有用的。
      JCPU( Joint CPU,连合CPI时间),显示一个终端所涉的所有进程的 总时间。
      sar (ADM)指令是一个系统活动报告程序,显示系统资源累积 利用率。为指示系统瓶颈(Bottleneck),sar 是非常好的实 用程序,指令语法如下:
        $sar〔参数〕 〔 PID号〕 例如:
         $sar-u 20
        -u选项显示CPU利用情况。如果%idle一致地低,使用效能是上升, 不过,运行的进程偷不到未用的CPU周期。
        又例如使用-q选项显示进程吞吐量。假若%swpocc大於20,就发生 交换(Swapping),可以使用大内存能减少交换