当通过终端登录到我的 Ubuntu 9.10 服务器时,我看到以下消息:
=> There is 1 zombie process.
Run Code Online (Sandbox Code Playgroud)
如何识别这个僵尸进程?
我正在使用 Windows 7 Ultimate。我遇到两个进程的问题:explorer.exe有时dwm.exe.
这两个进程的 CPU 使用率往往在 20-30% 之间。它仅在我在 PC 上玩游戏时发生 - 否则 PC 工作正常。
这些进程本身不消耗 CPU,只有在我尝试刷新桌面时才真正消耗 CPU 时间。当我右键单击桌面时,刷新需要明显的秒数。
我没有病毒问题。
我尝试了以下几件事:
explorer.exe从任务管理器杀死并重新启动:问题仍然存在dwm.exe,它再次重新启动:问题仍然存在任何人都可以建议一些快速解决此问题的方法吗?
可能的重复:
查找在 Linux 中使用某个端口的进程
如何找出哪个进程正在侦听 Linux 上的端口?
如何找到进程标识号 (PID) 以及如何删除 PID。我试过“显示进程/全部”,但它只会显示我的进程。我有管理权限。
在像 那样的交互式控制台中irb,有时会出现问题并且控制台变得无响应。一种解决方案是暂停进程,然后终止它。
要暂停该过程,我可以按Control+Z。要终止该进程,我可以运行ps -ef | grep 'irb'以列出所有进程并仅显示包含“irb”的进程,然后从该列表中获取进程 ID 并键入kill [insert PID here].
那很麻烦。我知道有一种方法可以暂停进程,然后键入kill [some symbol here],符号代表“最后一个暂停的进程”。
“最后一个挂起进程的 PID”的命令行符号是什么?
像记事本或浏览器这样的进程有正当理由在短时间内访问剪贴板,通常与键盘和鼠标活动相关。绝大多数流程都没有任何业务访问剪贴板。有没有办法监控“进程读取剪贴板”事件以识别潜在的间谍软件?
我已经用 OCZ Vertex 3 SSD 替换了 2008 年末的一体式 MacBook(8 GB 内存,运行 OS X 10.7.4)的旧硬盘驱动器。这样做之后,我已经安装了 Lion 并从 Time Machine 备份中恢复了我的数据。
一切都很好,除了名为“bash”的进程永久使用大约 90% 的 CPU。
如果我通过活动监视器杀死它,一切都会恢复正常,但不幸的是,每次重新启动计算机时,该过程都会返回。
我试过zap the PRAM,从combo包重新安装10.7.4,甚至干脆等了2个多小时,问题依旧。
我有一个709最大用户进程。我想加倍,或更多。
第一:ulimit
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
Run Code Online (Sandbox Code Playgroud)
好吧 :
> sudo ulimit -u 1418
Password:
Run Code Online (Sandbox Code Playgroud)
让我检查...
> ulimit -a
core file …Run Code Online (Sandbox Code Playgroud) 我有 userA 和 userB 启动进程:
userA@server:~$ ./some_command.sh &
[1] 30889
Run Code Online (Sandbox Code Playgroud)
然后我希望 userC 能够管理这些进程(挂起、恢复、终止和终止):
userC@server:~$ kill 30889
bash: kill: (30889) - Operation not permitted
userC@server:~$ sudo kill 30889
userC@server:~$
Run Code Online (Sandbox Code Playgroud)
如何在不依赖 sudo 访问的情况下授予 userC 执行此操作的权限?作为最后的手段,我会授予 userC root 权限来执行此操作。
我可以完全控制 userC。一种可能性是将用户 ID 更改为与用户 A 相同,那么用户 B 呢?
更新:
上下文适用于现有的 Web 应用程序。
我使用 shell 脚本对系统事件做出反应并更新窗口管理器中的状态显示。例如,一个脚本通过侦听多个来源来确定当前的 wifi 状态:
为了实现多路复用,我最终生成了后台进程:
{ wpa_cli -p /var/run/wpa_supplicant -i wlan0 -a echo &
ip monitor address &
while sleep 30; do echo; done } |
while read line; do update_wifi_status; done &
Run Code Online (Sandbox Code Playgroud)
即,设置是每当任何事件源输出一行时,我的 wifi 状态都会更新。整个管道在后台运行(最后一个“&”),因为我还观察了另一个导致脚本终止的事件源:
wait_for_termination
kill $!
Run Code Online (Sandbox Code Playgroud)
kill 应该清理后台进程,但在这种形式中它并不能完全完成这项工作。'wpa_cli' 和 'ip' 进程总是存活,至少,它们也不会在下一个事件中死亡(理论上它们应该得到一个 SIGPIPE;我猜读取进程也必须仍然存在)。
问题是,如何可靠地[并且优雅地!]清理所有产生的后台进程?