标签: process

从进程表中删除僵尸进程

我有一个烦人的僵尸进程,它被 init 采用,它不会消失。我读过有一种方法可以创建一个虚拟进程,将僵尸附加为该新进程的子进程,然后杀死它,将其从进程表中删除。

我将如何做到这一点,准确地说?

是的,我已经阅读了大部分内容:

僵尸进程已经死了,所以它不能被杀死。

或者

你应该重启你的系统

僵尸进程不使用任何资源,您应该让它们使用

不幸的是,许多程序检查进程表以查看实例是否已经在运行,如果进程表中有条目,则将拒绝启动新的实例。

每次我的 SSHFS 连接断开时重新启动,带着 Sublime,有点傻。

linux kill process zombie

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

应用程序池不遵守内存限制

我正在处理具有内存泄漏的旧版 .NET 应用程序。为了尝试缓解内存溢出情况,我将应用程序池内存限制设置为 500KB 到 500000KB (500MB) 之间的任何位置,但是应用程序池似乎不尊重设置,因为我可以登录并查看物理内存(5GB 及以上,无论值如何)。这个应用程序正在杀死服务器,我似乎无法确定如何调整应用程序池。为了确保此应用程序池不超过大约 500 MB 的内存,您建议进行哪些设置。

这是一个示例,应用程序池正在使用 3.5GB 的

进程列表

应用程序池

因此,服务器再次崩溃,原因如下:

在此处输入图片说明

具有低内存限制的相同应用程序池,1000 个回收请求,每两到三分钟会导致一个回收事件,但有时它会跑掉。

我也对任何可以监视此过程的工具持开放态度(作为任务或服务每 30 秒运行一次),并且可以在超过某个限制时将其终止。

iis application-pools process iis-7.5 kill-process

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

在 Windows 上识别未知进程的最佳方法是什么?

在对有问题的系统进行故障排除时,您通常如何识别 Windows 任务管理器中的进程?

通过任务管理器获取任务列表很容易,但您如何确定哪些应该保留,哪些是删除的候选?

windows task-manager process

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

如何判断进程打开了哪些文件?

我有一个守护进程,我想知道它打开了哪些文件(理想情况下它的 CWD 是什么)。有什么shell命令可以告诉我吗?

linux files ubuntu process

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

如何重定向已经运行的进程的 stdout/stderr?

(在 Ubuntu 10.04 64 位服务器上运行)

昨天,我犯了一个错误,即在没有使用 screen 的情况下通过 SSH 启动一个进程(我没有意识到这需要几天的时间才能运行)。我今天花了一整天的时间试图找出某种方法,我可以从 SSH 的铁腕中撬出进程的输出,以便我可以重新启动我的客户端机器,但没有任何进展。

我尝试使用 gdb 并按照本页底部的说明进行操作,但是当我运行第一个 gdb 命令来创建文件时,我收到一条错误消息,指出No symbol table is loaded. Use the "file" command. 根据我收集的内容,这意味着我必须重新编译其输出的程序我正在尝试重定向,这当然对我来说绝对没有帮助,因为它已经在运行。

我还认为我可以使用 retty 将输出重定向到另一个终端,但显然它不能在 64 位平台上编译。

如何将此进程的输出重定向到另一个终端或文件?

ubuntu process redirect stdout

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

如何保护 shell 脚本免于失控?

我最近有一次编写 shell 脚本的经历,该脚本通过消耗所有资源使服务器崩溃(并损坏了分区)。它连接到一个 cron 作业,运行时间似乎比执行之间的间隔时间更长,随着时间的推移,滚雪球失控。

现在,我已经修改了它以记录其运行状态,并且不会同时运行多次。我的问题是:还有其他简单的方法可以保护脚本免受伤害吗?是否有一个标准的脚本应该做的事情列表,以确保正常运行、不消耗太多资源、优雅地失败、提醒正确的人等?

基本上:我应该避免哪些其他陷阱?

scripting resources bash process

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

top 只显示当前用户进程

最近有一台运行 CentOS 6.7 的专用服务器,我们运行了更新并注意到 top 仅显示当前用户的进程。

[myuser@server2 ~]$ top -b -n1 
top - 20:19:20 up 1 day, 10:09,  3 users,  load average: 0.80, 0.50, 0.41
Tasks:  11 total,   1 running,  10 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32880988k total, 26893324k used,  5987664k free,   140872k buffers
Swap:  1046520k total,        0k used,  1046520k free, 19532120k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND               
 1648 myuser  20   0 98.8m …
Run Code Online (Sandbox Code Playgroud)

linux centos users top process

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

无法删除文件、设备或资源繁忙

我尝试删除文件。最相关的答案可以在这里找到,但我没有找到运气。这是原来的问题:

maxgitt@mgpc:~$ sudo rm -rf /var/lib/docker/
rm: cannot remove '/var/lib/docker/aufs': Device or resource busy
Run Code Online (Sandbox Code Playgroud)

为了找到该过程,我尝试了以下操作:

maxgitt@mgpc:~$ sudo lsof +D /var/lib/docker/
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Run Code Online (Sandbox Code Playgroud)

所以我尝试在上述答案的评论中找到但一无所获,

maxgitt@mgpc:~$ /sbin/fuser -m /var/lib/docker/
bash: /sbin/fuser: No such file or directory
Run Code Online (Sandbox Code Playgroud)

ps进程都找不到

maxgitt@mgpc:~$ ps aux | grep docker
maxgitt   5349  0.0  0.0  14224  1024 pts/18   S+   15:21   0:00 grep --color=auto docker
maxgitt@mgpc:~$ 
Run Code Online (Sandbox Code Playgroud)

关于如何终止这个神秘过程的任何帮助都会很棒。

kill process rm

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

将基于进程的 IP 流量路由到不同的默认路由/接口

我试图确定是否可以通过特定接口有选择地从进程或进程组路由 IP 数据包,而所有其他数据包都通过另一个接口路由。也就是说,我希望所有流量/usr/bin/testapp都通过,eth1而所有其他数据包通过eth0。这种情况下的数据包可以是 TCP、UDP、ICMP 等,并且可以由最终用户配置为使用各种端口。

因为我无法轻松地强制相关进程绑定到特定接口,所以我试图通过路由实现相同的结果。这可能吗?

- - 编辑 - -

通过这里和其他许多地方的一个有用建议,是基于 UID 标记数据包;这并不是真正的目标。目标是基于 process 标记/过滤/路由,而不管 user。也就是说,如果说了,alicebobcharlie所有运行自己的实例/usr/bin/testapp; 来自所有三个实例的所有数据包都应该通过,eth1而来自系统的所有其他数据包都应该通过eth0

请注意,通过源/目标端口、用户名/UID 等进行标记是不够的,因为不同的用户可能会运行testapp并且他们可能会自行设置不同的端口~/.config/testapp.conf或其他任何内容。问题是关于按流程过滤。

一个可用的选项,尽管我不知道它有多大帮助,是/bin/(ba|z)?sh在本机二进制文件周围使用基于 -based 的包装器。

- - 编辑 - -

我指的是在运行现代 Linux 内核(例如 4.0 或更高版本)的系统上进行路由。如果有软件依赖性超越iproute2nftablesconntrack和类似的工具,我愿意探索开源解决方案,但基本工具是优选的。

linux routing iptables process conntrack

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

如何查找过去一次正在运行的进程?

我被要求调查今天早上发生的高 CPU 使用率警报。我使用sar -p并看到当时出现的高CPU使用率

接下来我曾经ps -eo pcpu,pid,user,args | sort -r -k1 | less列出了这个时间前 10 名的内存猪

现在我如何找出早上那个特定时间导致瓶颈的进程。我是一名 Java 开发人员,而不是 Linux 专家。

甚至有可能吗?

linux process cpu-usage sar

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