Was ist das Chrome-Befehlszeilenargument im Headless / No-Sandbox-Modus, das das tmp-Verzeichnis auswählt?

677
Nicholas DiPiazza

Ich habe Chrom ohne Kopf mit Selenium betrieben.

Wenn ich eine Reihe von Sitzungen abführe, bekomme ich eine Reihe von tmp-Dateien /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 

Welchen Google Chrome-Befehlszeilenschalter kann ich festlegen, um einen anderen Pfad für diese Verzeichnisse zu wählen? Ich kann es nicht verwenden, /tmpda die Root-Festplatte nicht viel Speicherplatz in der Cloud hat.

Gibt es eine Möglichkeit, diese Verzeichnisse beim Herunterfahren des Chrome-Prozesses automatisch löschen zu lassen?

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

0

1 Antwort auf die Frage

0
Nicholas DiPiazza

Wow, ich habe lange gebraucht, um das zu finden:

Es gibt kein Befehlszeilenargument, das dies tut. Aber Umgebungsvariable kann.

Hier ist der relevante Chromedriver-Code:

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; } 

Für Linux können Sie dazu einfach eine TMPDIR-Umgebungsvariable in der Chrome-Sitzung festlegen.

In Selen müssen Sie also Folgendes tun:

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