标签: process

Python:在执行之前检查shell命令是否存在

我正在尝试找到一种方法来在执行之前检查 shell 命令是否存在。

例如,我将执行命令 ack-grep。所以,我正在尝试这样做:

导入子流程
from subprocess import PIPE

cmd_grep = subprocess.Popen(["ack-grep", "--no-color", "--max-count=1", "--no-group", "def run_main", “../cgedit/”],stdout=PIPE,stderr=PIPE)

比,如果我执行

cmd_grep.stderr.read()

我收到像输出一样的“”。但我的路径上没有 ack-grep 命令。那么,为什么 Popen 没有将错误消息放在我的 .stderr 变量上?

另外,有没有更简单的方法来完成我想做的事情?

shell python process

7
推荐指数
1
解决办法
1万
查看次数

是什么杀死了我的进程?

一直有应用程序被杀死的问题。这是运行 RHEL5 服务器。我们对进程运行了 strace,在跟踪文件的末尾,我得到了一堆被 SIGKILL +++消息杀死的 +++。SIGKILL 无法被捕获,所以我试图找到一种方法来追踪进程被杀死的原因。

我尝试使用 Red Hat 的一些建议,例如

auditctl -a exit,always -S kill 
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。我在audit.log 中没有看到任何kill 条目。

Red Hat 的另一个建议是使用 systemtap。我通过 yum 安装它并尝试使用提供的 sigmon.stp 脚本运行 stap。sigmon.stp 在这个页面上:Sigmon.stp 我使用了评论部分提供的命令,这里是输出:

# stap sigmon.stp -x 12647 SIGKILL -v
Pass 1: parsed user script and 85 library script(s) using 146868virt/23716res/3024shr/21404data kb, in 110usr/10sys/116real ms.
semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/signal.stp:60:37
        source: probe __signal.send.send_sigqueue = kernel.function("send_sigqueue")
                                                    ^
semantic error: missing x86_64 kernel/module debuginfo …
Run Code Online (Sandbox Code Playgroud)

linux kill process redhat-enterprise-linux

7
推荐指数
1
解决办法
7549
查看次数

为什么 makecab.exe 在启动时启动?

我试图找出为什么这个过程出现在 2 个引导场合。Autoruns 不会在任何地方显示它。当我卸载谷歌浏览器和恶意软件字节时出现。

makecab.exe 的预取文件(makecab 是微软官方进程)显示它是昨天创建的,今天修改了(今天和昨天运行了一次非常短暂,启动时不超过 10 秒。我之前卸载了 2 个程序同时在过去多次,从未见过这个过程。

但是,通常我会在卸载这些程序时删除与这些程序关联的每个文件,包括注册表。makecab.exe 会运行有什么原因吗?我使用过进程资源管理器,但是进程开始和结束的速度很快,我可以看到是什么启动了它,但是我只看到它出现两次,那是在卸载 chrome 和 mbam 之后;两次我都没有准备好流程浏览器。

我应该担心这个吗?或者它有跑步的正当理由吗?除非我卸载了任何东西,否则它似乎不会运行(但是当我这样做时它不会一直发生。)

除了下载我之前下载的恶意软件字节之外,我没有对我的电脑做任何更改。

我发布的其他区域说它可以清理 msi 安装包。

我注意到它与 Windows 模块安装程序大约在同一时间开始(将预取文件与事件查看器进行比较)。

我没有添加任何程序,卸载这些程序后才看到这个,但正如我所说,我通常手动删除文件。我已经将 makecab 的版本上传到了virustotal 并且它们都是干净的。

除了列出各种系统进程的值之外,我在注册表中找不到任何其他内容,但是将其导出为文本文件显示它多年来没有被编辑。

我怎样才能找出是什么启动它?我用进程资源管理器重新启动了多次,但什么也没发生,我安装了恶意软件字节进行扫描,我进行了全面扫描并没有发现任何东西,然后再次安装了 chrome。扫描后,我卸载了 2,然后虽然没有使用进程资源管理器,而是使用普通的任务管理器,但我在重新启动后再次看到它。

有没有办法让进程浏览器延长它显示杀死进程的时间?上面给出的解释可能是真的吗?

boot windows-7 64-bit process

7
推荐指数
1
解决办法
8万
查看次数

如何查找并终止 php 循环(进程)?

我有一个我一直在开发的 php 脚本,它在循环中调用外部 api。它正在 Debian 上运行 LAMP 的 VPS 上进行测试。我今天早上注意到 api 没有响应我的脚本。当我打电话给供应商时,他们告诉我我的服务器在过去 10 个小时里每小时调用 api 1000 次。我假设一个 php 脚本(我前一天一直在工作并在我的 VPS 上测试)在其中一次执行过程中进入了一个无限循环,并且从未出现过(我一直在命令提示符下对其进行测试,并且不是通过网络。)我试图停止和启动 Apache,但 api 支持人员说呼叫仍然来自我的服务器地址。我怎样才能找到并停止这个过程?另外,Apache停止/启动是否有可能解决问题,

请原谅我没有正确使用我的本地测试环境。

编辑:我不知道进程名称,我需要根据行为发现名称(或 pid)。

apache-http-server command-line process php api

7
推荐指数
1
解决办法
6万
查看次数

跟踪哪个程序启动了某个进程?

有一个特定的进程困扰着我,它在通过命令提示符或任务管理器杀死它后大约一分钟内持续启动。

目前我正在使用让批处理文件每 15 秒循环一次的方法,如果它在那里就将其杀死。但是,我更希望能够阻止它的启动。

是否有适用于 Windows 7 的任何方法来跟踪进程的启动方式?

windows-7 process

7
推荐指数
1
解决办法
1万
查看次数

按父进程分组的内存使用情况

如何找到所有进程(包括子进程)的总内存使用情况,PPID为 1。对于像 nginx/httpd 这样分叉多个子进程的程序,ps/ 分别top给出每个进程的内存使用情况。我想知道nginx/apache而不是单个子进程的总内存使用量。

memory linux process centos-6

7
推荐指数
2
解决办法
5561
查看次数

在 Windows 8 中根据 CPU 温度暂停进程

是否有软件或方法可以根据 CPU 温度暂停进程?有时当我渲染视频时,CPU 温度会升高很多,所以我必须在 Windows 的资源监视器中暂停该进程,但我想用软件自动执行此操作。

cpu temperature automation process suspend

7
推荐指数
1
解决办法
377
查看次数

为什么 32 位进程有 2 GB 的 RAM 限制?

我很好奇为什么 32 位操作系统上的 32 位进程有 2 GB 的限制。根据博客文章聊天问题:32 位和 64 位进程的内存限制,限制可以扩展到 3 GB,但问题仍然存在。

我看到物理限制是 4 GB,那么 2 或 3 GB 只是在 Windows 中硬编码吗?为什么 4 GB 作为 32 位进程在 64 位操作系统上可能没有?

注意:此问题被标记为重复,但引用的问题是指 32 位地址空间的 4 GB 限制。这不是我要问的。我特别问为什么 Windows 将进程限制为2 GB——即使在 32 位平台上也是如此。接受的答案提到了它,但没有解释原因。

windows 64-bit memory-limit process 32-bit

7
推荐指数
1
解决办法
1万
查看次数

如何找到进程的祖先链?

我可以ps -o "pid,ppid,args" -p my_pid找到my_pid.

我可以继续ps -o "pid,ppid,args" -p previously_found_ppid循环直到到达ppid=1.

但是,我敢打赌,有一个单一的调用解决方案可以从my_pid它的所有祖先开始并列出它。pstree与此相反的事情从父项开始并列出其所有后代。你能说出这样的 Unix/Linux 命令是否容易获得?

linux unix process

7
推荐指数
1
解决办法
3953
查看次数

是否可以看到整个窗口标题?

当浏览我公司内的网站时,浏览器的标题似乎是一条错误消息。

在任务栏中,我可以看到以下内容:

TF400813: The user 'e387ba6a-0...
Run Code Online (Sandbox Code Playgroud)

在使用时tasklist /V | findstr "TF",我可以看到以下内容:

TF400813: The user 'e387ba6a-09a6-4c12-8c76-6492ea8f582d\dominique.xxxxx
Run Code Online (Sandbox Code Playgroud)

(出于隐私原因,我已经模糊了我姓氏的字母,但我可以告诉你,只显示了五个字母,似乎最多有72个字符。)

您可以清楚地看到,并不是整个错误消息都是可见的。

有谁知道如何(如果可能)我可以看到完整的窗口标题?

我的操作系统是Windows-10。

经过更多调查后进行编辑
以下 PowerShell 命令不起作用:

Get-Process | format-table id,name,mainwindowtitle -AutoSize
Run Code Online (Sandbox Code Playgroud)

很可能是因为提到的浏览器窗口只是几个浏览器窗口之一,并且该命令仅显示Powershell窗口的标题。

提前致谢

windows process title windows-10

7
推荐指数
2
解决办法
4667
查看次数