我正在尝试找到一种方法来在执行之前检查 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 变量上?
另外,有没有更简单的方法来完成我想做的事情?
一直有应用程序被杀死的问题。这是运行 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) 我试图找出为什么这个过程出现在 2 个引导场合。Autoruns 不会在任何地方显示它。当我卸载谷歌浏览器和恶意软件字节时出现。
makecab.exe 的预取文件(makecab 是微软官方进程)显示它是昨天创建的,今天修改了(今天和昨天运行了一次非常短暂,启动时不超过 10 秒。我之前卸载了 2 个程序同时在过去多次,从未见过这个过程。
但是,通常我会在卸载这些程序时删除与这些程序关联的每个文件,包括注册表。makecab.exe 会运行有什么原因吗?我使用过进程资源管理器,但是进程开始和结束的速度很快,我可以看到是什么启动了它,但是我只看到它出现两次,那是在卸载 chrome 和 mbam 之后;两次我都没有准备好流程浏览器。
我应该担心这个吗?或者它有跑步的正当理由吗?除非我卸载了任何东西,否则它似乎不会运行(但是当我这样做时它不会一直发生。)
除了下载我之前下载的恶意软件字节之外,我没有对我的电脑做任何更改。
我发布的其他区域说它可以清理 msi 安装包。
我注意到它与 Windows 模块安装程序大约在同一时间开始(将预取文件与事件查看器进行比较)。
我没有添加任何程序,卸载这些程序后才看到这个,但正如我所说,我通常手动删除文件。我已经将 makecab 的版本上传到了virustotal 并且它们都是干净的。
除了列出各种系统进程的值之外,我在注册表中找不到任何其他内容,但是将其导出为文本文件显示它多年来没有被编辑。
我怎样才能找出是什么启动它?我用进程资源管理器重新启动了多次,但什么也没发生,我安装了恶意软件字节进行扫描,我进行了全面扫描并没有发现任何东西,然后再次安装了 chrome。扫描后,我卸载了 2,然后虽然没有使用进程资源管理器,而是使用普通的任务管理器,但我在重新启动后再次看到它。
有没有办法让进程浏览器延长它显示杀死进程的时间?上面给出的解释可能是真的吗?
我有一个我一直在开发的 php 脚本,它在循环中调用外部 api。它正在 Debian 上运行 LAMP 的 VPS 上进行测试。我今天早上注意到 api 没有响应我的脚本。当我打电话给供应商时,他们告诉我我的服务器在过去 10 个小时里每小时调用 api 1000 次。我假设一个 php 脚本(我前一天一直在工作并在我的 VPS 上测试)在其中一次执行过程中进入了一个无限循环,并且从未出现过(我一直在命令提示符下对其进行测试,并且不是通过网络。)我试图停止和启动 Apache,但 api 支持人员说呼叫仍然来自我的服务器地址。我怎样才能找到并停止这个过程?另外,Apache停止/启动是否有可能解决问题,
请原谅我没有正确使用我的本地测试环境。
编辑:我不知道进程名称,我需要根据行为发现名称(或 pid)。
有一个特定的进程困扰着我,它在通过命令提示符或任务管理器杀死它后大约一分钟内持续启动。
目前我正在使用让批处理文件每 15 秒循环一次的方法,如果它在那里就将其杀死。但是,我更希望能够阻止它的启动。
是否有适用于 Windows 7 的任何方法来跟踪进程的启动方式?
如何找到所有进程(包括子进程)的总内存使用情况,PPID为 1。对于像 nginx/httpd 这样分叉多个子进程的程序,ps/ 分别top给出每个进程的内存使用情况。我想知道nginx/apache而不是单个子进程的总内存使用量。
是否有软件或方法可以根据 CPU 温度暂停进程?有时当我渲染视频时,CPU 温度会升高很多,所以我必须在 Windows 的资源监视器中暂停该进程,但我想用软件自动执行此操作。
我很好奇为什么 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 位平台上也是如此。接受的答案提到了它,但没有解释原因。
我可以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 命令是否容易获得?
当浏览我公司内的网站时,浏览器的标题似乎是一条错误消息。
在任务栏中,我可以看到以下内容:
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窗口的标题。
提前致谢
process ×10
linux ×3
64-bit ×2
windows ×2
windows-7 ×2
32-bit ×1
api ×1
automation ×1
boot ×1
centos-6 ×1
command-line ×1
cpu ×1
kill ×1
memory ×1
memory-limit ×1
php ×1
python ×1
shell ×1
suspend ×1
temperature ×1
title ×1
unix ×1
windows-10 ×1