注意:有几个类似的问题,一般的答案是“如果要跟踪多线程进程或跟踪子进程,请使用 -f”。这对我没有帮助,因为我已经在使用 -f 了。
我需要跟踪一个 java 应用程序,它会定期启动一个子进程并执行一个脚本。我想查看提供给脚本的命令行参数,由于太复杂无法在这里解释的原因,我无法在脚本周围放置包装器。
我的问题是,跟踪 java 进程,我可以看到clone()
系统调用,但我看不到clone()
.
这是一个最小的测试程序:
package exectest;
import java.io.IOException;
public class Exectest {
public static void main(String[] args) {
for (;;) {
createProcess();
try {
Thread.sleep(15000);
} catch (InterruptedException ex) {
;
}
}
}
static void createProcess() {
String[] params;
params=new String[100000];
for (int i=0; i<100000; i++) {
params[i]=Integer.toString(i);
}
params[0]="echo";
params[1]="test";
try {
Runtime.getRuntime().exec(params);
} catch (IOException ex) {
;
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行它并开始跟踪,产生:
# /path/to/java -version
java …
Run Code Online (Sandbox Code Playgroud)