使用chromedriver quit()和cloesd(),为什么会有僵尸chrome进程

问题描述 投票:0回答:1

我在centos镜像中启用了一个jar包,使用selenium chromedriver获取浏览器链接,使用完后,我使用了close()方法和quit()方法,但是程序接受后,仍然有许多 chrome 僵尸进程

chromedrive 版本 99

centos8

硒4.7.2

我也曾经获取Chromedrive的pid来杀掉它,但是没用

...
        WebDriver driver = null;
        List<Integer> pids = new ArrayList<>();
        try {
            driver = new ChromeDriver(service, desiredCapabilities);
            Integer port = service.getUrl().getPort();
            pids = GetChromePidFromPort(port);
            log.info("detected chrome process id " + pids);
            driver.manage().window().maximize();
            driver.manage().window().setSize(new Dimension(1920, 1080));
            driver.get(url);
            log.info("drive task is done, sleep :" + duration + " ms");
            Thread.sleep(duration);
            return true;
        } catch (InterruptedException | IOException e) {
            log.info("chrome download png error");
            e.printStackTrace();
        } finally {
            if (driver != null) {
                driver.close();
                driver.quit();
                if (!pids.isEmpty()) {
                    killPid(pids);
                }
            }
        }
    private static List<Integer> GetChromePidFromPort(Integer port) throws IOException {
        List<Integer> pidList = new ArrayList<>();
        Process process = Runtime.getRuntime().exec("lsof -i:" + port);
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            if (line.contains("chrome")) {
                int pid = Integer.parseInt(line.split("\\s+")[1]);
                System.out.println("PID: " + pid);
                pidList.add(pid);
            }
        }
        return pidList;
    }

process image

docker process selenium-chromedriver
1个回答
0
投票

完美,通过将“init: true”命令添加到我的 docker-compose.yml 中,这可以消除所有僵尸进程,而无需通过 docker run。请参阅https://docs.docker.com/compose/compose-file/compose-file-v2/#init

© www.soinside.com 2019 - 2024. All rights reserved.