我正在尝试在网页上运行一个将实时返回其输出的进程.例如,如果我运行'ping'进程,它应该在每次返回一个新行时更新我的页面(现在,当我使用exec(命令,输出)时,我被迫使用-c选项并等待进程完成以查看在我的网页上输出).有可能在PHP中这样做吗?
我也想知道当有人离开页面时,杀死这种过程的正确方法是什么.在"ping"过程中,我仍然可以看到系统监视器中运行的进程(有意义).
我在某个服务器上遇到类似僵尸的进程有问题需要时不时地被杀死.如何才能最好地识别运行时间超过一小时的那些?
我已经开始使用以下代码进行处理
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "path");
try {
Process p = pb.start();
}
catch (IOException ex) {}
Run Code Online (Sandbox Code Playgroud)
现在我需要知道我刚刚开始的进程的pid.
在C++ Windows应用程序中,我启动了几个长时间运行的子进程(目前我使用CreateProcess(...)来执行此操作.
如果我的主进程崩溃或关闭,我希望子进程自动关闭.
由于要求这需要对"父"的崩溃起作用,我认为这需要使用操作系统的某些API /功能来完成.这样就可以清理所有"子"进程.
我该怎么做呢?
我正在编写一个插件,以便在您访问网站时自动突出显示文本字符串.这就像突出显示搜索结果,但自动和许多单词; 它可以用于过敏的人,使单词真正脱颖而出,例如,当他们浏览食物网站时.
但我有问题.当我尝试关闭一个空的,新鲜的FF窗口时,它会以某种方式阻止整个过程.当我终止进程时,所有窗口都消失了,但Firefox进程保持活动状态(父PID为1,不监听任何信号,打开大量资源,仍然占用CPU,但不会让步).
所以有两个问题:
如何一个进程不听kill -9(既不是用户也不是root用户)怎么可能?
除了重启之外,有什么我可以做的吗?
[编辑]这是违规的过程:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
digulla 16688 4.3 4.2 784476 345464 pts/14 D Mar28 75:02 /opt/firefox-3.0/firefox-bin
Run Code Online (Sandbox Code Playgroud)
与...相同 ps -ef | grep firefox
UID PID PPID C STIME TTY TIME CMD
digulla 16688 1 4 Mar28 pts/14 01:15:02 /opt/firefox-3.0/firefox-bin
Run Code Online (Sandbox Code Playgroud)
这是剩下的唯一过程.正如你所看到的,它不是一个僵尸,它正在运行!它不会听杀-9,无论我是用PID还是名字杀了!如果我尝试连接strace,那么strace也挂起并且不能被杀死.也没有输出.我的猜测是FF挂起了一些内核例程但是哪个?
[EDIT2]根据sigjuice的反馈:
ps axopid,comm,wchan
Run Code Online (Sandbox Code Playgroud)
可以向您显示进程挂起的内核例程.就我而言,有问题的插件是Beagle Indexer(openSUSE 11.1).禁用插件后,FF又是一只快速而快乐的狐狸.
我想查看在OS X中运行的进程的信息.ps在终端中运行只列出打开的终端窗口.如何查看正在运行的所有进程?
假设我正在运行Web浏览器,终端和文本编辑器.我想查看文本编辑器和Web浏览器的信息.
是否可以从shell脚本中的父进程id获取子进程ID?
我有一个使用shell脚本执行的文件,这会导致一个新的进程process1(父进程).这个过程1已经分叉的另一个进程过程2(子进程).使用脚本,我可以使用以下命令获取process1的pid :
cat /path/of/file/to/be/executed
Run Code Online (Sandbox Code Playgroud)
但是我无法获取子进程的pid.
我试图了解CTRL+ 如何C终止子进程而不是父进程.我在一些脚本shell中看到了这种行为,比如bash你可以在哪里开始一个长时间运行的进程然后通过输入来终止它CTRL- C然后控制返回到shell.
你能解释它是如何工作的,特别是为什么父(shell)进程没有终止?
shell是否必须对CTRL+ C事件进行一些特殊处理,如果是,它究竟是做什么的?