runtime.exec不执行的问题

最近在使用 Springboot 执行日志抓取,在使用

String command = "tail -n 50 " + monitor.getErrorLogFilePath() + "|grep ERROR";
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);

这样的方式,执行错误日志抓取,发现指令,要么不执行,要么报错,要么无法按照描述抓取关键字日志。查了很多方式,最终

变更写法:
	Process process = runtime.exec(command);
为 
	Process process = runtime.exec(new String[]{"sh", "-c", command});

才得以正常运行。通过JDK源码得知,Runtime.exec最终是通过调用ProcessBuilder来真正执行操作的。那么 new String[]{"sh", "-c" , "command"},可能就是,手动指定命令行格式。

上一篇:docker逃逸方法汇总与简要分析


下一篇:群晖前面加了雷池WAF,安装失败,然后无法识别出用户真实访问IP