W najnowszym Ubuntus (szczególnie najbardziej interesuje mnie 12.04) /var/run
są tmpfs, dlatego zakładam, że zaczyna się pusty przy każdym ponownym uruchomieniu.
Widzę jednak kilka folderów, takich jak /var/run/mysqld
i wiele innych. Jak te foldery tworzone przy każdym ponownym uruchomieniu? Czy istnieje folder szablonów, który został skopiowany /var/run/
(a jeśli tak, to który skrypt to robi), czy każdy folder mkdir
jest edytowany osobno, czy co?
EDYCJA:
Proszę, nie odpowiadaj, który /var/run
jest trwały lub który /run
jest trwały. Ponieważ to nie jest.
Nawet jeśli tak jest w twoim systemie, nie jest tak regularnie 12.04.
boot
filesystem
Sandman4
źródło
źródło
Odpowiedzi:
(Dzięki @Zulakis i odpowiedzi na Serverfault za wskazanie, że ta odpowiedź nie nadążała za ciągłym rozwojem Ubuntu.)
Wraz z przyjęciem
systemd
na dzień 15.04 , obecnie istnieje scentralizowany mechanizm do tworzenia tymczasowych plików i katalogów, takich jak te. Usługa chcąc skorzystać z tej metody można usunąćmkdir
komendy w swoim skrypcie startowym i zamiast umieścić.conf
plik/etc/tmpfiles.d
,/run/tmpfiles.d
lub/usr/lib/tmpfiles.d
z usługi Ubuntu zdaje się preferować ostatnią opcję. Na przykład mój system ma teraz:Te
d
środki do utworzenia katalogu jeśli nie istnieje, po to jest droga, a reszta to uprawnienia, użytkownik, a grupa. Te katalogi zostaną utworzone niezależnie od tego, czy odpowiednia usługa została kiedykolwiek uruchomiona.Aby uzyskać pełną dokumentację, patrz
man tmpfiles.d
.ODPOWIEDŹ STARY PRZEDSYSTEMOWANĄ:
Wygląda na to, że są tworzone dynamicznie przez poszczególne usługi, gdy zaczynają:
Wierzę, że to ten, który obsługuje mysqld:
man install
mówi, że formularz -d „utworzy wszystkie komponenty określonych katalogów”.źródło
Nowy
/run
folder zamontowany w tmpfs pozwala programom takim jak udev, lvm i mdadm przechowywać dane środowiska uruchomieniowego od initrd do zamknięcia./var
jest standardowym katalogiem dowolnego systemu Linux / UNIX - oznacza „zmienną” i jest miejscem, w którym znajduje się wiele dzienników, pamięci, ALE również programuje pliki ustawień zmiennych, a nawet niektóre bazy danych konfiguracji systemu.Większość rzeczy
/var
powinna być odpowiednio oczyszczona i uregulowana przez system. Twoje pliki wymiany pamięci wirtualnej również tam są,/var
więc nie zadzieraj z tym./var/run
zawiera również wiele informacji o statusie i parametrach aktywnie działających demonów procesu.Ten katalog zawiera dane informacji o systemie opisujące system od momentu jego uruchomienia. Pliki w tym katalogu muszą zostać wyczyszczone (odpowiednio usunięte lub obcięte) na początku procesu rozruchu. Programy mogą mieć podkatalog
/var/run
; jest to zalecane w przypadku programów, które używają więcej niż jednego pliku wykonawczego.Cóż, ponieważ
/var/run
jest montowany jako tmpfs. Oznacza to, że jest całkowicie pusty, gdy twoja maszyna się uruchamia, i ma tak być, aby zapobiec uruchamianiu się demonów z powodu pozostawionego pliku PID.Skrypty startowe zwykle tworzą katalogi, których potrzebują przed ich użyciem. Jeśli chcesz zapisać plik PID, umieść go
/var/run
bezpośrednio lub utwórz katalog przed utworzeniem pliku PID. To nie jest miejsce do przechowywania danych, które muszą tam pozostać podczas ponownego uruchamiania.Źródła: Ścieżka i przewodnik administratora systemu Linux
źródło
Dla każdego, kto natknie się na ten wątek, ponieważ szukasz rozwiązania, w jaki sposób możesz skonfigurować aplikację, aby utworzyła katalog, w którym
/var/run
będzie mógł przechowywać swój plik skarpety lub pid lub cokolwiek… oto przykład. Natknąłem się na ten wątek, ponieważ chciałem przechowywać plik skarpety MySQL/var/run/mysqld
. Po tym, jak natknąłem się na ten wątek, zacząłem szukać w/etc/init
plikach przykładów. dbus był dobry. I wymyśliłem tę konfigurację uruchamiania mysql:Część skryptu przed uruchomieniem załatwiła sprawę.
źródło
Zgodnie z definicją zawartą w hierarchii plików Standardowe
/var/run
lub/run
służy do przechowywania danych lotnych środowiska wykonawczego.Wszystkimi utworzonymi tam folderami i plikami zarządza odpowiedni program, który utworzył pliki. Nie ma czegoś takiego jak kopiowany folder szablonów, każdy program może używać tego folderu do przechowywania zmiennych danych. Zapisane dane zostaną utracone po ponownym uruchomieniu systemu.
Częstą rzeczą w korzystaniu z
/run
folderu jest przechowywaniepid
uruchomionych demonów, plików znaczników zawierających numer procesu. Są one głównie używane w skryptach start / stop, które można znaleźć na przykład w/etc/init.d/
Mam nadzieję, że to wyjaśniło wam wszystko!
br
źródło
Twoje założenie nie jest całkowicie poprawne. Lokalizacja
/var
folderu jest do negocjacji - to znaczy możesz użyć alternatywnej partycji lub woluminu, na którym chcesz zlokalizować/var
folder. Niezależnie od tego, gdzie/var
znajduje się folder,/var/run
folder jest dowiązaniem symbolicznym do/run
folderu, a jego zawartość pozostaje po ponownym uruchomieniu komputera, chociaż wiele plików/run
jest generowanych lub modyfikowanych podczas rozruchu przez usługi uruchamiane podczas rozruchu. Tak więc usługi - takie jakmysqld
- wymagają wczytywania plików do/var/run
katalogu i są skonfigurowane do tworzenia podkatalogów, jeśli obecnie nie istnieją.źródło
douggro ma absolutną rację, / var / run jest montowany jako tmpfs, a / var / run jest dowiązaniem symbolicznym do / run, które jest trwałe podczas restartów, więc wszystko, co wejdzie w / run, pojawi się również w (i pozostanie) / var / biegać.
Tak więc wszelkie usługi rozruchowe, takie jak mysqld, który jest demonem uruchamianym podczas rozruchu, który tworzy pliki w / run, również będą miały pliki widoczne w / var / run (dowiązanie symboliczne do / run Remember). Jeśli chcesz utworzyć plik, który będzie trwał przez ponowne uruchomienie w / var / run, utwórz go w / run, a następnie uruchom ponownie.
Mam nadzieję, że to odpowiada na twoje pytanie.
źródło
tmpfs
jest niestabilny i zmiany są tracone.