我在跑
top -H -b -n 1
在带有java应用程序的Linux上
我得到了标题的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
对于每个thread,我看到的%CPU是一个真正的CPU,这意味着它没有考虑线程在等待锁等方面浪费的时间,所以这纯粹是线程在cpu上花费的时间。
我在JVM中运行了Cobertura工具jar。当我在运行应用程序的Windows中按下Ctrl时,JVM结束和Cobertura结果被成功地刷新到cobertura.ser文件。但是我需要用命令/工具(不是Ctrl)来停止这个JVM,类似于Linux中的“软杀伤”(没有"-9“参数的”杀死“命令)。当我使用"taskkill /PID 1234“时,它写道:
D:\>taskkill /PID 1234
ERROR: The process with PID 1234 could not be terminated.
Reason: This process can o
我正在尝试确定哪个应用程序正在使用某个端口并获取netstat -tlnp | grep <port> for Linux。
此命令返回以下输出:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN 3591/java
我只需要在结果中获得进程名和PID,即java3591。
做这件事
我使用在Linux上作为守护进程运行一个Java程序。
守护进程“随机”崩溃,只显示以下消息:
jsvc.exec error: Service did not exit cleanly
这是jsvc ()中代码的相关部分:
while (waitpid(pid, &status, 0) != pid) {
/* Waith for process */
}
/* The child must have exited cleanly */
if (WIFEXITED(status)) {
status = WEXITSTATUS(status);
// Cl
我在前台运行了一个子进程,他的父亲已经离开了。
如果父进程已退出,则proc/$pid/stat文件不再包含父pid,并且它将显示1而不是原始父pid。
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
要快速再现这种行为,我们可以使用以下脚本
test2.sh
#!/bin/sh
echo "test2=$$"