Möglicherweise formuliere ich meine Frage nicht richtig, aber ich werde mein Bestes tun, um die Symptome zu erklären, die bei mir auftreten. Als erstes führe ich einen Ubuntu-Server (keine GUI) aus, Version 12.04.3 LTS (gemäß dem Dienstprogramm lsb_release). Im Allgemeinen arbeite ich in tmux, verbinde mich über Putty mit dem Server und verwende vim für die gesamte Textbearbeitung.
Nun zu den Symptomen. Da ich tmux benutze, sind normalerweise immer ein paar Fenster geöffnet. Einer von ihnen beherbergt einen Knotenserver, mit dem ich herumgespielt habe, und er befindet sich in einem Unterverzeichnis des Hauses meines Benutzerkontos (genauer gesagt ~/battleship
). Der Server interagiert mit einer Webseite, die ich auch mit nginx vom Server aus hoste, und der gesamte Website-Code lebt darin /usr/share/nginx/www/bs
(ich lasse auch ein separates Fenster zum Bearbeiten der Client-Quelle offen). Was passiert, ist, dass es nach mehreren Stunden, in denen das Serverfenster im Leerlauf und unberührt gelassen wurde, nicht mehr synchron zu sein scheint. Ich kann ls
die Dateien ausführen und anzeigen und sie zur Bearbeitung öffnen ( vim server.js
). Dabei ist es jedoch unerheblich, ob ich Änderungen vornehme und speichere oder beim Ausführen sofort beendels
Erneut wird eine .server.js.swp-Datei angezeigt, und keine meiner Änderungen (sofern ich sie vorgenommen habe) wird beibehalten. Wenn ich aus diesem Verzeichnis heraus und dann wieder hinein gehe, repariert es sich von selbst. Ich kann die Datei öffnen und erfolgreich bearbeiten, ohne eine .swp-Datei zu hinterlassen, wenn ich sie schließe. Ich habe die Client-Quelle zur Hälfte erwähnt, weil mir aufgefallen ist, dass dies nicht im Ordner / www geschieht (vermutlich, weil es sich außerhalb des Ausgangsverzeichnisses meines Benutzerkontos befindet).
Nach dieser Textwand lautet meine Frage: Weiß jemand, warum dies geschieht und wie dies verhindert werden kann? Ich kann mir nur vorstellen, dass es eine Möglichkeit gibt, wenn man bedenkt, dass dies nicht der einzige Linux-Server ist, zu dem ich über Putty eine Verbindung herstelle und auf dem tmux / vim verwendet wird. Jede Hilfe wäre dankbar.
Hinweis: Ich habe dies mit bash, tmux und putty getaggt, weil ich davon ausgehe, dass einer von ihnen schuld ist, aber ich habe wirklich keine Ahnung, welcher.
Update: Dies ist die Ausgabe von, cat /proc/mount
wie von Gilles angefordert (obwohl mit meinem Benutzernamen und den Werten von ecryptfs_fnek_sig
und ecryptfs_sig
zensiert, weil ich eigentlich nicht weiß, was diese beiden Dinge sind, sie aber verschlüsselungsbedingt und besser sicher als leid sind).
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
Update 2: Hier ist die Ausgabe von 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
Update 3: Ich habe ein Memtest bestanden. Dies ist das Ergebnis dieses Tests . Scheint fehlerfrei abgeschlossen zu sein, daher bin ich mir nicht sicher, ob es irgendetwas helfen wird. Sie können auch einige Hardwaredetails anzeigen, falls dies in irgendeiner Weise hilfreich ist.
cat /proc/mounts
)? Dies ist wahrscheinlich ein virtualisierter Server. Welche Art von Virtualisierung wird verwendet?cat /proc/mounts
für Sie einzuschließen . Hoffentlich bedeutet das etwas für Sie - Linux ist noch ziemlich neu für mich, daher wurde viel gelernt, und ich habe mich noch nicht mit dem Dateisystem beschäftigt (abgesehen von seiner Verwendung).uname -a
? Wenn es Ihre Hardware ist, schließen Sie eine Konsole an und führen Sie beim nächsten Start einen Speichertest durch. Wenn es gehostet wird, wenden Sie sich an Ihren Hosting-Anbieter und beschreiben Sie diese Symptome.sudo sync
, werden die Dateien aktualisiert?df -h /www ~/battleship /usr/share/nginx/www/bs
. Liegt das Problem bei den Mounts von encryptfs? Vielleicht ist eine zusätzliche SW-Verarbeitung erforderlich, um auf diese Disc zu schreiben, damit Zwischenspeicherung stattfindet oder etwas damit zu tun hat?Antworten:
Die einzige Erfahrung, die ich mit so etwas gesehen habe, war, als ein Verzeichnis entfernt und ein neues erstellt wurde. AIX und Solaris hatten dieses Problem bereits vor Jahren. Wenn Sie eine offene Shell-Sitzung in einem entfernten Verzeichnis haben, erhalten Sie möglicherweise unvorhersehbare Ergebnisse, die aussehen, als würde ein Dateisystem nicht mehr synchronisiert.
Das verschlüsselte Dateisystem klingt auch nach einer Überprüfung. Haben Sie es in einem unverschlüsselten Dateisystem versucht?
Entschuldigung, ich kann noch keine Kommentare schreiben. Nicht genügend Punkte.
quelle
cd .
nach einer Weile normal arbeiten, wenn ich nach einer Weile zu einer Sitzung zurückkomme. An dieser Stelle denke ich ehrlich gesagt nur darüber nach, alles zu sichern, den Server zu löschen und ohne ein verschlüsseltes Dateisystem neu zu installieren. Ich behalte nichts entfernt Wichtiges dabei, daher mache ich mir keine allzu großen Sorgen um das Verschlüsseln meiner Dateien.Sie können versuchen, den Befehl sync zwischen Ihren bash-Befehlen auszuführen.
Ich habe selbst nie die Notwendigkeit dafür gefunden, aber ich habe mindestens eine Person gekannt, die es praktisch wie jeden zweiten Befehl getippt hat! Muss in der Vergangenheit mit langsamer Scheibe stark gebrannt worden sein.
Im Internet scheint die Diskussion über die Verwendung des
sync
Befehls nicht allzu weit fortgeschritten zu sein . Hier ist ein Link zu einem sehr kurzen manuellen Eintrag fürsync
: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.htmlsync
garantiert, dass Daten vom Speicher auf das Festplattengerät geschrieben werden. Die Daten befinden sich möglicherweise immer noch im Cache-Speicher des Festplattengeräts und werden nicht auf die Festplatte geschrieben, wenn das Festplattengerät selbst langsam ist oder ein Problem aufweist.Sie betreiben einen Ubuntu-Server. . . Ist das eine Maschine auf Ihrem Desktop? Oder liegt es in einer Wolke? Oder . . . etwas anderes? Siehe hier: /server/534627/what-does-the-sync-command-do langsame Synchronisierung von Speicher auf Datenträger im Zusammenhang mit Festplattenproblemen oder möglicherweise mit kleineren Amazon AWS-Instanzen.
quelle
sync
es von Nutzen sein wird. Ich habe festgestellt, dasscd .
das Problem sowieso nur dadurch gemildert wird. Ich habe einen Aliasref
dafür erstellt (ich weiß, das Speichern eines Charakters ist ein bisschen albern), den ich immer wieder benutze, wenn ich zu einer alten Sitzung zurückkomme. Was den Server angeht, so ist es mein alter Desktop-Tower (ich habe im letzten Jahr einen neuen gebaut), der jetzt in der Ecke meines Wohnzimmers mit der Ubuntu-Distribution installiert ist. Ich habe also vollen Zugriff auf die Hardware und die Stromversorgung über den laufenden Betrieb darauf.FWIW das Problem wird durch den Befehl ls angezeigt, nicht durch die Bash.
Die Tatsache, dass Sie die Datei sehen, bedeutet, dass sie noch vorhanden ist. Nichts ist mit irgendetwas anderem nicht synchronisiert und keine laufende Synchronisierung hindert Sie daran, die einzige zwischengespeicherte Kopie der relevanten Dateisystemdaten zu verwenden. Durch die Synchronisierung werden die Daten nur in den permanenten Speicher übernommen und nicht in Ihrer Ansicht geändert.
Verwenden Sie VIM-Sitzungen? Ich kenne die VIM-Sitzung nicht und habe sie selbst nie verwendet, aber ich stelle mir vor, dass tmux dazu führen könnte, dass der VI-Sitzungsmanager nicht erkennt, dass die Datei geschlossen ist, und dass Ihre Änderungen nachverfolgt werden.
quelle