Diese Frage bezieht sich auf Ubuntu 14.10 auf meinem Entwickler-Laptop.
Ich habe einen Ordner darin /tmp
, der von einer Anwendung verwendet wird, um temporäre Inhalte dort abzulegen. Diese Anwendung erstellt normalerweise einen temporären Ordner in meinem Homedir und löscht ihn anschließend. Aus irgendeinem Grund funktioniert das nicht, wenn das Homedir verschlüsselt ist. Also habe ich stattdessen einen Symlink zu /tmp/foo
meinem Homedir erstellt. Meine Anwendung kann dort schreiben und den temporären Unterordner erstellen.
Jetzt /tmp/foo
wird jedes Mal gelöscht, wenn ich meinen Computer neu starte. Bisher habe ich den Ordner nach dem Neustart nur manuell neu erstellt. Jetzt habe ich gelernt, wie das / tmp-Verzeichnis aufgeräumt wird. dass es einen Job gibt, der das macht.
Ich habe es mir angeschaut, /etc/init/mounted-tmp.conf
aber mein Bashfu und besonders mein Fundfu reichen nicht aus, um das zu tun, was ich will. Hier ist ein Auszug aus dieser Datei:
EXCEPT='! -name . ! ( -path ./lost+found -uid 0 ) ! ( -path ./quota.user -uid 0 ) ! ( -path ./aquota.user -uid 0 ) ! ( -path ./quota.group -uid 0 ) ! ( -path ./aquota.group -uid 0 ) ! ( -path ./.journal -uid 0 ) ! ( -path ./.clean -uid 0 ) ! ( -path "./...security*" -uid 0 )' # Remove all old files, then all empty directories find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete
Was ich tun möchte, ist eine Bedingung hinzuzufügen, die bewirkt /tmp/foo
, dass alles in mir gelöscht wird , aber nicht sich /tmp/foo
selbst. Wie mache ich das?
/tmp/foo
ein Verzeichnis oder eine Datei?mkdir /tmp/foo
Recht vorend script
?Antworten:
/etc/init/mounted-tmp.conf
ist Teil desmountall
Pakets, daher werden alle Aktualisierungen dieses Pakets und die vorgeschlagenen Änderungen rückgängig gemacht.Stattdessen nach dem Filesystem Hierachy Standard (FHS) ;
In Bezug auf / tmp :
In Bezug auf / var / tmp :
Sie sollten also Ihren symbolischen Link ändern, um ihn
/var/tmp
anstelle von zu verwenden/tmp
.quelle
/var/tmp
das keine gute Idee ist?If a person is familiar with ... a certain, single instrument, they may have a confirmation bias to believe that it is the answer to/involved in everything.
Ich sage, dass das OP / tmp für etwas verwendet, wofür es nicht gedacht ist -tmp Zeug. / var / tmp ist BEDEUTET, zwischen Neustarts aufbewahrt zu werden, daher ist es die richtige Antwort.Nicht unbedingt eine Antwort auf Ihre Frage, aber vielleicht finden Sie
/var/tmp
einen geeigneteren Ort, da dieser bei einem Neustart nicht bereinigt wird. Es wurde für temporäre Dateien entwickelt, die nach kurzer Zeit nicht automatisch gelöscht werden sollen.Was ich jedoch oft mache, ist, selbst einen Ordner unter / opt zu erstellen, um zufällige Dinge zu speichern, die ich nicht zuhause haben möchte. Dies ist ein geeigneter Ort, um Dinge zu platzieren, die außerhalb der Kontrolle des Hauptbetriebssystems liegen.
quelle
Wie so:
Beispiel:
Ich stimme dem Benutzer aap zu: Entweder sollten Sie dies in der verwendeten Software berücksichtigen, indem Sie das Verzeichnis dort neu erstellen, wenn es sich um tmp-Dateien handelt, oder ein anderes Verzeichnis verwenden, wenn es sich nicht um tmp-Dateien handelt, die nicht gelöscht wurden.
quelle
find
Befehl bei manueller Ausführung wie erwartet funktioniert, wird das Verzeichnis nach der Bearbeitung immer noch entfernt/etc/init/mounted-tmp.conf
. Anscheinend ist hier noch etwas los.-path ./foo
und sogar,-name '*foo*'
und keine davon funktionierte (auf Ubuntu Server 14.04). Ich denke, das ist einfach nicht die richtige Datei und wir suchen am falschen Ort. Was Sie vorschlagen, sollte funktionieren, es scheint einfach nicht zu funktionieren.Es ist eine schlechte Idee, Dateien mit zukünftigem Wert in das Verzeichnis / tmp zu schreiben (/ var / tmp ist, wie von anderen empfohlen, ein besserer Ort). Das heißt, möchten Sie vielleicht eine Chance auf chattr geben. Dies sollte ausgeführt werden, nachdem die Anwendung beendet wurde, jedoch vor dem Herunterfahren. Denken Sie daran, dass diese Operation nichts zulässt in dieses Verzeichnis geschrieben werden kann.
Tippen Sie auf /tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me
quelle
Führen Sie Folgendes aus:
dann füge dies zu
/ etc / inittab hinzusiehe hier: wo ist die inittab Datei? :Dadurch wird beim Booten / etc / foo erstellt, wenn es nicht vorhanden ist, und dann leer.
Dies wird auch beim Bash-Login der Fall sein:
quelle
/etc/inittab
. Dies ist klar und eindeutig auf seiner Handbuchseite angegeben.