GNU/Linux >> Belajar Linux >  >> Linux

/dev/shm izin berubah setelah node reboot

Memori bersama adalah cara untuk berbagi status antar proses. Memori bersama, seperti namanya, adalah metode untuk "berbagi" data antar proses. Kedua proses mendefinisikan area memori yang sama sebagai "bersama", dan mereka kemudian dapat bertukar informasi hanya dengan menulis ke dalamnya. Ini (dulu, dan masih agak) lebih cepat daripada alternatif pengiriman pesan berbasis jaringan atau pipa antar proses.

Jika Anda melihat memori sebagai sarana untuk menyimpan data, file pada sistem file dapat dilihat sebagai memori bersama (yaitu file bersama). Sulit untuk memperhitungkan memori bersama. Apakah itu milik satu proses? Keduanya? Juga tidak? Jika kita secara naif menjumlahkan memori yang termasuk dalam beberapa proses, kita terlalu “berlebihan”.

Sesuai dengan namanya, Memori Bersama (Virtual) mengacu pada memori virtual yang digunakan bersama oleh lebih dari satu proses dan kemudian dapat digunakan oleh beberapa program secara bersamaan. Meskipun memori virtual memungkinkan proses untuk memiliki ruang alamat (virtual) yang terpisah, ada kalanya Anda membutuhkan proses untuk berbagi memori. Memori bersama (SHM) adalah metode lain dari komunikasi antarproses (IPC) di mana beberapa proses berbagi satu potongan memori untuk berkomunikasi.

Memori bersama menyediakan cara tercepat bagi proses untuk melewatkan sejumlah besar data satu sama lain. /dev/shm tidak lain adalah implementasi konsep memori bersama tradisional. Ini adalah cara yang efisien untuk melewatkan data antar program. Satu program akan membuat bagian memori, yang dapat diakses oleh proses lain (jika diizinkan). Hal ini akan mempercepat proses di Linux.

Masalahnya

Pada setiap reboot server, izin /dev/shm berubah:

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

Izin Asli (1777):

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

Izin yang Ada(1754):

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

Solusinya

Penyebab masalah adalah dengan paket initscripts yang ada [initscripts-9.49.37-1.0.1.el7_3.1.x86_64].

Solusi

Langkah 1 :Menutupi layanan ( rhel-import-state):

# systemctl mask rhel-import-state

Langkah 2 :Periksa status layanan. Ini akan terlihat seperti di bawah ini:

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

Langkah 3 :Nyalakan ulang mesin dan konfirmasikan apakah masalah yang sama terulang kembali atau tidak.

Catatan :Ini adalah rencana aksi solusi. Untuk resolusi permanen, tingkatkan versi paket skrip init ke 9.49.39-1.0.1, yang disertakan dalam pembaruan CentOS/RHEL7 4.

Mengembalikan Perubahan

Anda juga dapat mengembalikan perubahan dengan menjalankan perintah di bawah ini untuk membuka kedok layanan bertopeng.

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


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  1. Apa itu /dev/mem?

  2. Bagaimana cara mengubah jumlah dan ukuran ramdisk Linux (/dev/ram0 - /dev/ram15)?

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  2. Kapan Menggunakan /dev/random Vs /dev/urandom?

  3. Konflik Node.js:/sbin/node Vs /usr/bin/node?