首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:获取命令的LINUX PID

PHP:获取命令的LINUX PID
EN

Stack Overflow用户
提问于 2011-10-20 06:30:22
回答 5查看 13.8K关注 0票数 1

我在我的linux服务器(Ubuntu)上运行一个命令。例如:

代码语言:javascript
复制
screen -A -h 1500 -m -dmS test_command_one /home/SKY-users/SKY-001/./script

有没有办法控制这个后台进程的PID,这个进程的屏幕名是:test_command_one

ps aux | grep test_command_one:

代码语言:javascript
复制
root      6573  8.1  2.4 271688 123804 pts/4   Ss+  Oct19   3:04 /home/SKY-users/SKY-001/./ ...

我想找回这个PID:6573

PHP:(简单)

代码语言:javascript
复制
<?php 
$output = shell_exec('sudo ps aux | grep test_command_one');
$array = explode("\n", $output);
echo '<pre>'.print_r($array, true).'</pre>';
?>

感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-20 06:38:03

编辑:

通过与@WagnerVaz的代码相结合

代码语言:javascript
复制
$mystring = "test_command_one";
exec("ps aux | grep 'screen .* $mystring' | grep -v grep | awk '{ print $2 }' | head -1", $out);
print "The PID is: " . $out[0];

解释

  • ps aux -显示所有用户的进程和隐藏进程太多
  • grep-只过滤同一行中包含"screen“和"test_command_one”的行
  • grep -v -从输出中删除我们正在执行的完全相同的行,因为它也将被匹配
  • awk '{ print $2 }‘-awk将输入拆分为多个列,并使用多个空格作为分隔符。此print contents of limits
  • head -1 -将输出限制在第一行。这是在运行多个屏幕的情况下,仅返回第一个ID。
票数 16
EN

Stack Overflow用户

发布于 2011-10-20 06:44:34

试试这个:

代码语言:javascript
复制
<?php
    $mystring = "test_command_one";
    exec("ps aux | grep \"${mystring}\" | grep -v grep | awk '{ print $2 }' | head -1", $out);
    print "The PID is: " . $out[0];
?>

编辑:与@romaninsh的shell exec相结合

票数 2
EN

Stack Overflow用户

发布于 2012-04-03 19:07:30

你也可以尝试这样做:

代码语言:javascript
复制
echo exec('pidof test_command_one');

它更短;)

另请参阅:pidof manpage

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7829005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档