有没有任何方式python本地,或通过一些在线可用的代码(最好是在GPL下),能够进行流程管理.目标类似于ps的功能,但最好是在数组,列表和/或dicts中.
我想创建一个bash别名,它给我从我正在使用的当前bash会话的进程树,直到init.
用例是知道我是否使用bash或vi的:shell命令.
我正在使用MacOS X.我听说过pstree,但它似乎只显示孩子,而不是init和当前进程之间的关系.
Linux:RedHat/Fedora
这些内存值有什么区别:
我知道[1]。通过几行代码,我只想从CPU使用率最高的前n个进程中提取当前的CPU使用率。或多或少都是前5排的顶部。使用github.com/shirou/gopsutil/process这很简单:
// file: gotop.go
package main
import (
"log"
"time"
"sort"
"github.com/shirou/gopsutil/process"
)
type ProcInfo struct{
Name string
Usage float64
}
type ByUsage []ProcInfo
func (a ByUsage) Len() int { return len(a) }
func (a ByUsage) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByUsage) Less(i, j int) bool {
return a[i].Usage > a[j].Usage
}
func main() {
for {
processes, _ := process.Processes()
var procinfos []ProcInfo
for _, p …Run Code Online (Sandbox Code Playgroud) 请指教,如何验证执行该过程的程序?
\n\n例如
\n\n以下命令 ( ps -ef ) 将查看 sendmail 进程是否正在运行
\n\n ps \xe2\x80\x93ef | grep sendmail\n root 9558 9544 019:05? 00:00:00/usr/sbin/sendmail-FCronDaemon-i-odi-oem-oi-t\nRun Code Online (Sandbox Code Playgroud)\n\n我想找到的是执行二进制文件/usr/sbin/sendmail的脚本
\n\n所以我的问题 \xe2\x80\x93 我需要将哪些标志添加到语法“ps \xe2\x80\x93ef”中,以便从 ps \xe2\x80\x93ef 获取完整的详细信息,包括运行该进程的程序
\n\n是否可以 ?
\n\n如果\n /etc/rc3.d/sendmail运行二进制文件/usr/sbin/sendmail
\n\n然后我期望从命令 ps \xe2\x80\x93ef \xe2\x80\xa6\xe2\x80\xa6看到/etc/rc3.d/sendmail路径。
\n我正在开发一个 Clojure 应用程序。我正在服务器上测试它,主要是进入“屏幕”会话并输入:
java -jar lo_login_service-0.2-standalone.jar
然后我按 Control-C 杀死它。然后我做一些改变。然后我再测试一下。
我假设只有 1 个 PID 正在使用。如果我做:
ps aux
Run Code Online (Sandbox Code Playgroud)
我只看到 1 个 PID 正在使用:
das 15028 0.2 22.1 1185300 133520 pts/5 Sl+ Jul26 3:19 java -jar lo_login_service-0.2-standalone.jar
Run Code Online (Sandbox Code Playgroud)
但是如果我运行“htop”,那么我会看到:
15029 das 20 0 1157M 130M 9960 S 0.0 22.2 0:25.85 java -jar lo_login_service-0.2-standalone.jar
15030 das 20 0 1157M 130M 9960 S 0.0 22.2 0:07.29 java -jar lo_login_service-0.2-standalone.jar
15031 das 20 0 1157M 130M 9960 S 0.0 22.2 0:00.02 java -jar lo_login_service-0.2-standalone.jar
15032 das 20 …Run Code Online (Sandbox Code Playgroud) 如果我知道进程的 pid,如何找到进程的 euid 我尝试使用以下方法获取进程 id:
ps -f -u user1
Run Code Online (Sandbox Code Playgroud)
然后我尝试ps aux , ps -ef了grep pid但看不到 euid
我总是尝试从手册页获取信息,但man ps 对于像我这样的新手来说似乎太混乱了。
我想用一个简单的命令来杀死一个进程/脚本.目前我做了以下事情
ps -ef | grep myscriptname
kill 123456
Run Code Online (Sandbox Code Playgroud)
但有没有办法可以将2命令组合在一起,所以我不需要查看并手动编写pid,这样的东西kill grep myscriptname?
我们在 swarm 环境中使用 docker。一切都很好......但是对于几天前出现的一个名为“exe”的奇怪进程:
14126 root 20 0 446836 33648 184 R 49.0 0.2 0:05.98 exe
1 root 20 0 52356 532 332 S 34.3 0.0 2750:22 systemd
13789 root 20 0 5424660 49784 0 S 5.6 0.3 2381:57 dockerd
Run Code Online (Sandbox Code Playgroud)
它确实占用了 100% 的 CPU。
我们试图了解它来自哪里,但它非常不稳定,它的 pid 每 3-4 秒就会改变一次。你可以猜想,这样的行为引发了一些警报。
最终,我们设置了一些监控工具(使用auditd)来拍摄它的快照,并看到:
Syscall event curl /usr/bin/curl 24242 24234
Syscall event 4 / 24240 24234
Syscall event exe /usr/bin/runc 24240 24234
Syscall event runc /usr/bin/runc 24234 10444
Run Code Online (Sandbox Code Playgroud)
“main”runc 的父进程是:
root 10444 2621 0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解内存和页面错误,因此我编写了下面的代码来检查我的理解。我不明白为什么调用 malloc 会导致 MINFL 增加,因为 malloc() 不应该影响物理内存(据我所知)。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
void main() {
printf("Before malloc\n");
getchar();
malloc(1 << 20);
printf("After malloc\n");
getchar();
}
Run Code Online (Sandbox Code Playgroud)
这些是 ps 命令的最终结果。
在进行 malloc 之前:

malloc 之后:

有两件事我不明白:
请帮忙并谢谢。