Impostare
Sono programmatore da un po 'di tempo ormai, ma sono ancora un po' confuso su cose interne profonde.
Adesso. Sono ben consapevole che non è una buona idea neanche:
- uccidere -9 un processo (cattivo)
- staccare spontaneamente la spina di alimentazione su un computer o un server in esecuzione (peggio)
Tuttavia, a volte devi semplicemente farlo. A volte un processo non risponde a prescindere da ciò che fai, e a volte un computer non risponde, a prescindere da ciò che fai.
Supponiamo che un sistema esegua Apache 2, MySQL 5, PHP 5 e Python 2.6.5 tramite mod_wsgi.
Nota: sono più interessato a Mac OS X qui, ma una risposta che riguarda qualsiasi sistema UNIX mi aiuterebbe.
La mia preoccupazione
Ogni volta che devo fare uno di questi, specialmente il secondo, sono molto preoccupato per un periodo di tempo che qualcosa si è rotto. Alcuni file da qualche parte potrebbero essere corrotti - chi sa quale file? Ci sono oltre 1.000.000 di file sul computer.
Uso spesso OS X, quindi eseguo un'operazione "Verifica disco" tramite l'Utility disco. Non segnalerà alcun problema, ma sono ancora preoccupato per questo.
Che cosa succede se un file di configurazione da qualche parte viene rovinato. O peggio ancora, cosa succede se un file binario da qualche parte è corrotto. O un file di script da qualche parte è corrotto ora. Cosa succede se parte dell'hardware è danneggiato?
E se non lo scoprissi fino al mese prossimo, in uno scenario critico, quando la corruzione o il danno provocano una catastrofe?
Oppure, se i dati preziosi sono già persi?
La mia speranza
La mia speranza è che queste preoccupazioni e preoccupazioni siano infondate. Dopotutto, dopo averlo fatto molte volte prima, non è ancora successo nulla di veramente brutto. Il peggio è che ho dovuto riparare alcune tabelle di MySQL, ma non mi sembra di aver perso alcun dato.
Ma se le mie preoccupazioni non sono infondate e un danno reale potrebbe verificarsi in entrambe le situazioni 1 o 2, la mia speranza è che ci sia un modo per rilevarlo e prevenirlo.
Le mie domande)
Ciò potrebbe essere dovuto al fatto che i moderni sistemi operativi sono progettati per garantire che nulla venga perso in questi scenari? Potrebbe essere perché il software moderno è progettato per garantire che nulla sia perso? Che dire del design hardware moderno? Quali misure sono in atto quando si estrae la spina di alimentazione?
La mia domanda è, per entrambi questi scenari, cosa può andare esattamente storto e quali misure dovrebbero essere prese per risolverlo?
Ho l'impressione che una cosa che può andare storto è che alcuni programmi potrebbero non aver scaricato i loro dati sul disco, quindi tutti i dati molto recenti che avrebbero dovuto essere scritti sul disco (diciamo, pochi secondi prima del power pull ) potrebbe andare perso. Ma che dire oltre? E questo problema della perdita di dati in 5 secondi può rovinare un sistema?
Che dire della corruzione di file casuali che si nascondono da qualche parte nell'enorme foresta di file sui miei dischi rigidi?
Che dire del danno hardware?
Cosa mi aiuterebbe di più
Descrizioni dettagliate su ciò che accade internamente quando si uccide -9 un processo o si alimenta l'intero sistema. (sembra istantaneo, ma qualcuno può rallentarlo per me?)
Spiegazioni di tutte le cose che potrebbero andare storte in questi scenari, insieme a probabilità (approssimative ovviamente) (cioè, è molto improbabile, ma è probabile) ...
Descrizioni delle misure in atto nei moderni hardware, sistemi operativi e software, per prevenire danni o corruzione quando si verificano questi scenari. (per confortarmi)
Istruzioni su cosa fare dopo un kill -9 o un power pull, oltre a "verificare il disco", al fine di assicurarsi davvero che nulla sia corrotto o danneggiato da qualche parte sul disco.
Misure che possono essere prese per fortificare una configurazione del computer in modo che se qualcosa deve essere ucciso o il potere deve essere tirato, ogni potenziale danno viene mitigato.
Alcune informazioni sui file binari - non è vero che il file binario apache o qualche libreria potrebbe avere un byte casuale o due corrotto nel mezzo, che non verrebbero fuori e causerebbero un problema fino a dopo? Come posso assicurarmi che ciò non è accaduto a causa della presa di potere o dell'uccisione?
Grazie mille!