tmp 디렉토리를 선택하는 헤드리스/샌드박스 모드 없음의 크롬 명령줄 인수는 무엇입니까?

tmp 디렉토리를 선택하는 헤드리스/샌드박스 모드 없음의 크롬 명령줄 인수는 무엇입니까?

나는 Selenium과 함께 크롬 헤드리스를 실행하고 있습니다.

여러 세션을 실행하면 결국에는 여러 개의 tmp 파일이 생성됩니다./tmp

drwx------  3 nick nick 4.0K Jul 28 05:00 .org.chromium.Chromium.OpPRkQ
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.tAwQZu
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.JiqQZu
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.7Vce75
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.r5ITam
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.eWgdRV
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.8TITam
drwx------  3 nick nick 4.0K Jul 29 05:00 .org.chromium.Chromium.aeuzcU
drwx------  3 nick nick 4.0K Jul 29 05:00 .org.chromium.Chromium.cBHew4

이러한 디렉토리에 대해 다른 경로를 선택하도록 설정할 수 있는 Google Chrome 명령줄 스위치는 무엇입니까? /tmp루트 디스크는 클라우드에 디스크 공간이 많지 않아 사용할 수 없습니다 .

크롬 프로세스 종료 시 이러한 디렉토리를 자동으로 삭제하는 방법이 있습니까?

보다https://peter.sh/experiments/chromium-command-line-switches/

답변1

와 이거 찾는데 시간이 많이 걸렸네요:

이를 수행하는 명령줄 인수는 없습니다. 하지만 환경변수는 가능합니다.

관련 chromedriver 코드는 다음과 같습니다.

https://chromium.googlesource.com/chromium/chromium/+/master/base/file_util_posix.cc

#if !defined(OS_MACOSX)
bool GetTempDir(FilePath* path) {
  const char* tmp = getenv("TMPDIR");
  if (tmp)
    *path = FilePath(tmp);
  else
#if defined(OS_ANDROID)
    return PathService::Get(base::DIR_CACHE, path);
#else
    *path = FilePath("/tmp");
#endif
  return true;
}

따라서 Linux의 경우 Chrome 세션에서 TMPDIR 환경 변수를 설정하면 됩니다.

따라서 셀레늄에서는 다음을 수행해야 합니다.

ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()
         .usingDriverExecutable(new File("driver_linux/chromedriver"))
         .usingAnyFreePort()
         .withEnvironment(ImmutableMap.of("TMPDIR", "/some/other/tmp/dir")).build();

관련 정보