- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个系统脚本,它运行并将“ps aux | grep utilities”的结果通过管道传输到一个文本文件,并对文本文件进行 chown,以便网络服务可以读取该文件并在我的网络应用程序中显示结果。
这是原始结果的示例:
user 12052 0.2 0.1 137184 13056 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust1 cron
user 12054 0.2 0.1 137184 13064 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust3 cron
user 12055 0.6 0.1 137844 14220 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust4 cron
user 12057 0.2 0.1 137184 13052 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust89 cron
user 12058 0.2 0.1 137184 13052 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust435 cron
user 12059 0.3 0.1 135112 13000 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust16 cron
root 12068 0.0 0.0 106088 1164 pts/1 S+ 10:00 0:00 sh -c ps aux | grep utilities > /home/user/public_html/logs/dashboard/currentlyPosting.txt
root 12070 0.0 0.0 103240 828 pts/1 R+ 10:00 0:00 grep utilities
当我的 php 脚本解析这个文本文件时,我只需要提取以下内容(仅作为示例):
cust1
cust3
cust4
cust89
cust435
cust16
我已经尝试了很多不同的笨拙方法,但似乎没有什么效果很好。我在下面列出的方法有效,但有时也会抓取垃圾,因为一行中的“空格”数量会随着变化而爆炸。
public function showProcesses() {
$lines = file(DIR_LOGGER_ROOT . "dashboard/currentlyPosting.txt");
$results = array();
$i = 0;
foreach($lines as $line) {
if (preg_match("/php/i", $line)) {
$userProcess = explode(" ", $line);
if($userProcess[29] != "0:00" && strlen($userProcess[29]) < 20) {
$results[$i] = $userProcess[29];
$i++;
}
}
}
return $results;
}
你们中的一些人可以为此发布优雅的解决方案吗?我正在努力学习更好的做事方式,希望得到指导。
最佳答案
你可以使用 preg_split
而不是 explode
并在 [ ]+
上拆分(一个或多个空格)。但我认为在这种情况下你可以选择 preg_match_all
和 capturing :
preg_match_all('/[ ]php[ ]+\S+[ ]+(\S+)/', $input, $matches);
$result = $matches[1];
模式匹配一个空格,php
,更多的空格,一串非空格(路径),更多的空格,然后捕获下一个非空格的字符串。第一个空格主要是为了确保您不会将 php
作为用户名的一部分进行匹配,而实际上只是作为命令。
捕获的替代方法是 PCRE 的“保留”功能。如果你在模式中使用 \K
,它之前的所有内容都会在匹配中被丢弃:
preg_match_all('/[ ]php[ ]+\S+[ ]+\K\S+/', $input, $matches);
$result = $matches[0];
关于php解析ps aux | grep ...结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14125319/
我正在尝试从 Windows 7 上的 JDK 7u25 中使用 jar.exe 提取包含名为 aux.class 的文件的 .jar 的内容。 jar.exe xf C:\Path\to\file.
这似乎是一个愚蠢的问题,但我一直无法找到明确的答案。 This website指出破折号是可选的 ps aux 然而,ps aux有效但 ps -aux出现错误 no user named 'x' .
我有一个 bash 脚本 (ScreamDaemon.sh),在其中添加了检查它的示例是否已经运行的检查。 numscr=`ps aux | grep ScreamDaemon.sh | wc -l`
我有一个 bash 脚本 (ScreamDaemon.sh),在其中添加了检查它的示例是否已经运行的检查。 numscr=`ps aux | grep ScreamDaemon.sh | wc -l`
我刚刚在 Windows 8.1 上遇到了一个非常奇怪的错误。 我似乎无法创建名为 Aux 的文件夹或从 Aux. 开始. 我在每个磁盘上都尝试过,但每次都收到以下消息:Le nom du périp
在Windows上Cygwin制作一些程序给出 libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'. libto
这是一个源自 AUX 的问题模式。 这样定义特征有什么好处: trait Unwrap[T[_], R] { type Out def apply(tr: T[R]): Out } 反对这
我很确定我在这里遗漏了一些东西,因为我对 Shapeless 还很陌生并且我正在学习,但是 Aux 技术实际上什么时候开始需要 ?我看到它是用来暴露一个 type通过将其提升为另一个“同伴”的签名来声
运行 ps aux返回: USER 131 2.1 0.1 23423 423 FFF/5 R 10:12 0:00 -bash USER 131 2.1 0.
我想了解如何 Generic有效(还有 TypeClass)。 github wiki 在示例和文档上非常稀少。是否有规范的博客文章/文档页面描述 Generic和 TypeClass详细? 具体来说
在 VS2012 中似乎无法创建名为“Aux”的项目文件夹。如果您尝试在项目中添加一个文件夹并将其命名为“Aux”,则会出现一条错误消息,指出该文件夹名称不能包含 ;*?|"<>哦 你遇到过同样的情况
for i in `ps aux | grep /usr/bin/x2goruncommand | awk '{print $1,$13;}'`; do server=`echo $i | cut -
我有一个系统脚本,它运行并将“ps aux | grep utilities”的结果通过管道传输到一个文本文件,并对文本文件进行 chown,以便网络服务可以读取该文件并在我的网络应用程序中显示结果。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
这个问题在这里已经有了答案: Windows and renaming folders, the 'con' issue [closed] (5 个答案) 关闭 6 年前。 在尝试写入文件名为“au
我想知道这种将 ps aux 放入数组然后在网络上显示的安全方法吗?或者可以做些什么来改进它? 例子: PID CPU Mem
所以我试图找到其中包含“控制”一词的任何进程的 PID。我在 Linux 上使用 ruby 。这是目前为止的基本代码 `ps aux | grep control` 如果我在 ruby 中运行它,
当我执行“ps aux”时,很多行都比我的终端宽度长,而且没有换行到下一行。起初我以为这是我的 stty 设置,但我注意到 netstat 等其他命令在我的终端中换行。我宁愿不要被迫使用 less 或
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我对 Aux 模式(在 shapeless 和其他地方使用)有一些了解,其中将类型成员提取到类型参数中,并且我知道这是一种解决方法,即同一参数列表中的参数不能依赖彼此 - 但我一般不清楚它的用途和解决
我是一名优秀的程序员,十分优秀!