Perl:处理nohup的模块,以及一般的进程处理

Perl:处理nohup的模块,以及一般的进程处理,perl,ps,kill-process,grep,Perl,Ps,Kill Process,Grep,我有一个包含大量系统命令的程序,用于处理搜索、检查和终止过程: system qq(kill $pid); 及 及 这不仅是特定于系统的,而且我还依赖于用户以正确的方式在其路径中使用这些特定命令,这给我留下了一个系统安全问题(比如一些小丑设置alias ps=“rm-rf*”) 我想用一种很好的Perl方式来做这件事,这种方式不太依赖于所有这些系统命令,并且更加独立于平台1 有Perl模块吗?对于一个以良好的面向对象方式进行操作并且不依赖于外部命令的人来说,这是一个额外的优点 一,。其中很多

我有一个包含大量
系统
命令的程序,用于处理搜索、检查和终止过程:

system qq(kill $pid);

这不仅是特定于系统的,而且我还依赖于用户以正确的方式在其路径中使用这些特定命令,这给我留下了一个系统安全问题(比如一些小丑设置
alias ps=“rm-rf*”

我想用一种很好的Perl方式来做这件事,这种方式不太依赖于所有这些系统命令,并且更加独立于平台1

有Perl模块吗?对于一个以良好的面向对象方式进行操作并且不依赖于外部命令的人来说,这是一个额外的优点


一,。其中很多都涉及使用
ssh
和设置隧道,因此,由于Windows没有将
ssh
作为本机命令,我愿意排除它,只要它对其他Unix/Linux系统运行良好。

  • kill:使用内置kill(perldoc-f kill)
  • ps:使用search.cpan.org,这里有UNIX::Process。在linux中,您还可以通过/proc进行扫描/
  • pgrep:将ps与perl模式匹配结合起来

对抗别名的
ps
完整路径?至于win/ssh,上次我检查Net::ssh::Any worked(需要Net::SSH2)时忘记了Perl有一个
kill
命令。我看到了UNIX::进程,但它所做的只是自动加载“/bin/ps-o”$field=”的
“。不会比我做的更多。您可以尝试Proc::ProcessTable。但是,这不是一个只使用perl的模块,需要编译,因此不清楚它是否适合您。
Proc::ProcessTable
看起来更像我要找的。对于可选模块,我通常检查模块是否已安装,如果未安装,请像现在一样使用系统命令。评级机构抱怨命令没有得到维护,但源代码上一次更改是在几个月前。那些不受支持的评论可能有点过时。谢谢
for my $pid ( qx( pgrep -f "$pgrep_re") ) {
    chomp $pid;
    ...
}
my $command_line = qx(ps -o command="" $pid);
chomp $command_line;
....