GNU/Linux >> Linux Esercitazione >  >> Linux

Modifica dell'autorizzazione /dev/shm dopo il riavvio del nodo

La memoria condivisa è un modo per condividere lo stato tra i processi. La memoria condivisa, come suggerisce il nome, è un metodo per "condividere" i dati tra processi. Entrambi i processi definiscono la stessa area di memoria come "condivisa" e possono quindi scambiare informazioni semplicemente scrivendo al suo interno. Questo (un tempo era, ed è ancora in qualche modo) più veloce dell'alternativa di inviare messaggi di rete o basati su pipe tra i processi.

Se si considera la memoria come un mezzo per memorizzare dati, un file su un file system può essere visto come memoria condivisa (cioè file condiviso). È difficile rendere conto della memoria condivisa. Appartiene a un processo? Tutti e due? Né? Se sommiamo ingenuamente la memoria che appartiene a più processi, “contiamo grossolanamente”.

Come suggerisce il nome, la memoria condivisa (virtuale) si riferisce alla memoria virtuale condivisa da più di un processo e quindi può essere utilizzata da più programmi contemporaneamente. Sebbene la memoria virtuale consenta ai processi di avere spazi di indirizzi (virtuali) separati, a volte è necessario che i processi condividano la memoria. La memoria condivisa (SHM) è un altro metodo di comunicazione interprocesso (IPC) in base al quale diversi processi condividono un singolo blocco di memoria per comunicare.

La memoria condivisa offre ai processi il modo più veloce per passare tra loro grandi quantità di dati. /dev/shm non è altro che l'implementazione del tradizionale concetto di memoria condivisa. È un mezzo efficiente per trasferire i dati tra i programmi. Un programma creerà una porzione di memoria, a cui possono accedere altri processi (se consentiti). Ciò si tradurrà in un'accelerazione delle cose su Linux.

Il problema

Ad ogni riavvio del server, l'autorizzazione /dev/shm cambia:

$ ls -alrt /dev/ | grep shm
drwxr-xr-t. 2 root root 60 jul 6 11:14 shm 

Autorizzazione originale(1777):

# ls -ld /dev/shm
drwxrwxrwt. 2 root root 200 Aug 20 03:44 /dev/shm

Autorizzazione esistente(1754):

$ ls -alrt /dev/ | grep shm
drwxr-xr-t. 2 root root 60 jul 6 11:14 shm

La soluzione

La causa del problema è con il pacchetto initscripts esistente [initscripts-9.49.37-1.0.1.el7_3.1.x86_64].

Soluzione alternativa

Passaggio 1 :maschera il servizio( rhel-import-state):

# systemctl mask rhel-import-state

Passaggio 2 :Controlla lo stato del servizio. Sarà simile al seguente:

rhel-import-state.service
  Loaded: masked (/dev/null; bad) <<  Active: active (exited) since Fri 2017-07-21 18:28:05 EDT; 2 weeks 3 days ago
 Main PID: 600 (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/rhel-import-state.service

Passaggio 3 :riavvia la macchina e conferma se lo stesso problema si ripresenta o meno.

Nota :questo è il piano d'azione per la soluzione alternativa. Per una risoluzione permanente, aggiorna la versione del pacchetto initscripts a 9.49.39-1.0.1, inclusa nell'aggiornamento 4 di CentOS/RHEL7.

Annullamento delle modifiche

Puoi anche annullare le modifiche eseguendo il comando seguente per smascherare il servizio mascherato.

# systemctl unmask rhel-import-state.service
# systemctl status rhel-import-state.service


Linux
  1. Node.js Conflitti:/sbin/node Vs /usr/bin/node?

  2. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  3. Come posso modificare la quantità e la dimensione dei ramdisk di Linux (/dev/ram0 - /dev/ram15)?

  4. kernel:disabilitare /dev/kmem e /dev/mem

  5. È sbagliato collegare /dev/random a /dev/urandom su Linux?

Cos'è /dev/mem?

DD da /dev/zero a /dev/null... cosa succede realmente

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp