Być może nie sformułowałem poprawnie mojego pytania, ale dołożę wszelkich starań, aby wyjaśnić występujące objawy. Po pierwsze, dla kontekstu uruchamiam serwer Ubuntu (bez GUI), wersja 12.04.3 LTS (zgodnie z narzędziem lsb_release). Zasadniczo wykonuję całą pracę w tmux, łączę się z serwerem za pośrednictwem Putty i używam vima do wszystkich edycji tekstu.
Teraz objawy. Ponieważ używam tmux, zazwyczaj mam zawsze kilka otwartych okien. Jeden z nich zawiera serwer węzła, z którym się bawiłem, i znajduje się w podkatalogu strony głównej mojego konta użytkownika (konkretnie ~/battleship
). Serwer wchodzi w interakcję ze stroną internetową, którą również hostuję poza serwerem za pomocą nginx, i cały kod strony mieszka w /usr/share/nginx/www/bs
(mam również otwarte okno do edycji źródła klienta). Co się dzieje, że po kilku godzinach pozostawiania okna serwera bezczynnego i nietkniętego, wydaje się, że nie synchronizuje się. Mogę uruchomić ls
i zobaczyć pliki oraz mogę je otworzyć do edycji ( vim server.js
). Kiedy to robię, niezależnie od tego, czy wprowadzam zmiany i zapisuję, czy po prostu wychodzę natychmiast po uruchomieniuls
ponownie widzę plik .server.js.swp i żadna z moich zmian (jeśli je wprowadziłem) nie została utrzymana. Jeśli wyprowadzę się z tego katalogu, a następnie z powrotem do niego, sam się naprawi - mogę otworzyć plik i edytować go z sukcesem, nie pozostawiając po sobie pliku .swp po jego zamknięciu. Wspomniałem o źródłowej części klienta, ponieważ zauważyłem, że tak się nie dzieje w folderze / www (prawdopodobnie dlatego, że znajduje się poza katalogiem osobistym mojego konta użytkownika).
Po tej ścianie tekstu moje pytanie brzmi: czy ktoś wie, dlaczego tak się dzieje i jak temu zapobiec? Mogę sobie tylko wyobrazić, że jest jakiś sposób, biorąc pod uwagę, że nie jest to jedyny serwer Linux, z którym łączę się za pośrednictwem Putty i używam tmux / vim, a jednak to jedyne, w którym dzieje się to dziwne zachowanie. Każda pomoc będzie mile widziana.
Uwaga: oznaczyłem to tagiem bash, tmux i kit, ponieważ zakładam, że jednym z nich jest wina, ale tak naprawdę nie mam pojęcia, który.
Aktualizacja: To jest wynik cat /proc/mount
żądany przez Gillesa (choć z moją nazwą użytkownika oraz wartościami ecryptfs_fnek_sig
i ecryptfs_sig
cenzurowanymi, ponieważ chociaż tak naprawdę nie wiem, co to za dwie rzeczy, wydają się one związane z szyfrowaniem i lepiej bezpieczne niż przykro).
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0
Aktualizacja 2: Oto dane wyjściowe uname -a
:
Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Aktualizacja 3: Ukończyłem test memtest. Jest to wynik wspomnianego testu . Wygląda na to, że zakończyło się bez błędów, więc nie jestem pewien, czy to w czymś pomoże. Możesz również zobaczyć niektóre szczegóły sprzętu, które mogą pomóc w jakikolwiek sposób.
cat /proc/mounts
)? Prawdopodobnie jest to zwirtualizowany serwer, jakiego rodzaju wirtualizacji używa?cat /proc/mounts
dla Ciebie. Mam nadzieję, że to coś dla ciebie znaczy - wciąż jestem całkiem nowy w Linuksie, więc wiele się nauczyłem, a ja jeszcze nie bawiłem się systemem plików (poza jego użyciem).uname -a
? Jeśli to twój sprzęt, podłącz konsolę i wykonaj test pamięci przy następnym uruchomieniu. Jeśli jest hostowany, skontaktuj się z dostawcą usług hostingowych i opisz te objawy.sudo sync
pliki zostaną zaktualizowane?df -h /www ~/battleship /usr/share/nginx/www/bs
. Czy problem dotyczy montowania encryptfs? Może potrzebne jest dodatkowe przetwarzanie SW w przypadku zapisów na tym dysku, więc występuje buforowanie lub coś się z tym dzieje?Odpowiedzi:
Jedynym doświadczeniem, jakie widziałem z czymś takim, było usunięcie katalogu i utworzenie nowego. Systemy AIX i Solaris miały ten problem wiele lat temu. Jeśli masz otwartą sesję powłoki w usuniętym katalogu, możesz odzyskać nieprzewidywalne wyniki, które wyglądają jak zsynchronizowany system plików.
Zaszyfrowany system plików również brzmi jak coś do przejrzenia. Czy próbowałeś w niezaszyfrowanym systemie plików?
Niestety nie mogę jeszcze dodawać komentarzy. Nie wystarczająca ilość punktów.
źródło
cd .
gdy po pewnym czasie wracam na sesję. W tym momencie szczerze rozważam utworzenie kopii zapasowej wszystkiego, wyczyszczenie serwera i ponowną instalację bez zaszyfrowanego systemu plików. Nie trzymam na tym nic ważnego, więc nie martwię się zbytnio o szyfrowanie moich plików.Możesz spróbować uruchomić polecenie synchronizacji między poleceniami bash.
Nigdy nie znalazłem takiej potrzeby, ale znałem przynajmniej jedną osobę, która pisała to praktycznie jak co drugie polecenie! W przeszłości musiał być źle wypalony na wolnym dysku.
Internet wydaje się być lekki w dyskusji na temat użycia
sync
polecenia. Oto link do bardzo krótkiego wpisu ręcznego dlasync
: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.htmlsync
gwarantuje, że dane są zapisywane z pamięci na urządzenie dyskowe. Dane mogą nadal znajdować się w pamięci podręcznej urządzenia dyskowego i nie zostać zapisane na dysk, jeśli samo urządzenie dyskowe jest wolne lub ma problem.Używasz serwera Ubuntu. . . czy to komputer na twoim pulpicie? Czy jest w chmurze? Lub . . coś innego? Zobacz tutaj: /server/534627/what-does-the-sync-command-do powolnej synchronizacji pamięci z dyskiem związanej z problemami z dyskiem twardym LUB może z mniejszymi instancjami Amazon AWS.
źródło
sync
się przyda; Przekonałem się, że to i takcd .
łagodzi problem. Stworzyłemref
dla niego pseudonim (wiem, że uratowanie jednej postaci jest trochę głupie), którego używam za każdym razem, gdy wracam do starej sesji. Jeśli chodzi o serwer, to moja stara wieża biurkowa (zbudowałem nową w zeszłym roku), która teraz mieszka w rogu mojego salonu z dystrybucją Ubuntu, więc mam pełny dostęp do sprzętu i władzy nad tym, co działa na tym.FWIW problem jest wyświetlany przez polecenie ls, a nie przez bash.
Fakt, że widzisz plik oznacza, że nadal tam jest. Nic nie jest zsynchronizowane z niczym innym, a żadna ilość uruchomionych synchronizacji nie powstrzyma Cię przed użyciem jedynej buforowanej kopii odpowiednich danych systemu plików. synchronizacja spowoduje, że dane zostaną zatwierdzone do trwałego przechowywania, a nie zmieni ich widok.
Czy korzystasz z sesji VIM? Nie znam sesji VIM, nigdy nie korzystałem z niej osobiście, ale wyobrażam sobie, że tmux może spowodować, że menedżer sesji VI nie zda sobie sprawy, że plik jest zamknięty i będzie śledził zmiany.
źródło