Solaris ps 输出解释

Solaris ps 输出解释

我有一个程序,它定期派生并执行其他程序。有时,它启动的程序在处理过程中会卡住,而新程序似乎永远无法开始处理。我们最终杀死了一堆卡住的程序,并重新启动派生/执行它们的程序,问题似乎就解决了。旧的/卡住的程序(杀死前)和新的/正在运行的程序(重新启动后)的 ps 输出不同。我们可以从“-ksh -c”和 perl 进程(pid 6212)之间的差异中解释什么?它们的调用方式完全相同;为什么 ps 输出不同?我们可能用完了某些资源吗?虚拟终端?

[me@unixbox1:~]> ps -ef | grep app_bld_rfh2
  appadm 23926     1  0 14:19:34 ?        0:00 -ksh -c /home2/app/eai/app_bld_rfh2.pl  APP.DOC.SERVICE
      me  9232  5237  0 14:38:09 pts/28   0:00 grep app_bld_rfh2
  appadm  2975     1  0 14:30:04 ?        0:00 -ksh -c /home2/app/eai/app_bld_rfh2.pl  APP.DOC.SERVICE
  appadm 17697     1  0 14:14:31 ?        0:00 -ksh -c /home2/app/eai/app_bld_rfh2.pl  APP.DOC.SERVICE
  appadm 11820     1  0 14:09:30 ?        0:00 -ksh -c /home2/app/eai/app_bld_rfh2.pl  APP.DOC.SERVICE
  appadm 29658     1  0 14:25:00 ?        0:00 -ksh -c /home2/app/eai/app_bld_rfh2.pl  APP.DOC.SERVICE
  appadm  6212     1  1 14:35:15 pts/2    0:47 /usr/local/bin/perl /home2/app/eai/app_bld_rfh2.pl APP.DOC.SERVICE

答案1

当它作为登录 shell 调用时,你会看到-ksh,我猜你的 perl 脚本/home2/app/eai/app_bld_rfh2.pl以该行开头

#!/usr/local/bin/perl

或者

#!/usr/bin/env perl

调用将根据上述内容ksh -c /home2/app/eai/app_bld_rfh2.pl APP.DOC.SERVICE依次执行perl哈希爆炸。这就是差异的原因。

至于它为什么会挂起,我猜是它需要一个伪tty才能运行,所以如果你通过ssh使用-t选项强制伪tty分配来启动它。

相关内容