GNU/Linux >> Belajar Linux >  >> Linux

Cegah Proses Yang Sudah Berjalan Untuk Menulis Ke File Yang Ada?

Saya memiliki proses P yang menulis konten ke file F. Saya harus dapat mengaktifkan/menonaktifkan P secara dinamis untuk menulis ke F. Saya mencoba mengubah izin untuk pengguna/grup tetapi ini memerlukan proses untuk dimulai ulang (sebenarnya seluruh sistem).
Pada akhirnya saya harus dapat menjalankan "skrip" yang melakukan hal berikut:

EnablePWriteF  
sleep 10  
DisablePWriteF  

dan sebagai hasilnya P akan dapat menulis selama 10 detik pertama dan tidak setelah itu. Saya menggunakan distribusi Debian.

Apakah ini mungkin?

Pembaruan:
Kasus penggunaan sebenarnya adalah saya mencoba memfilter proses yang diberikan untuk menulis ke file perangkat tertentu /dev/fb0
Saya memiliki dua proses yang menulis ke file itu dan saya ingin menjadi dapat menentukan dengan tepat salah satu dari dua yang diizinkan untuk menulis ke file tersebut pada saat tertentu tanpa harus mematikan/menghentikan proses.

Jawaban yang Diterima:

Setidaknya pada versi Linux saya, sepertinya Anda dapat menggunakan kunci wajib. Saya hanya mengujinya dengan /dev/null , tetapi saya tidak dapat melihat alasan mengapa ini tidak berfungsi dengan perangkat lain seperti buffer bingkai Anda:

Sebagai root:

mount -t tmpfs -o mand locked-fb some-dir
cp -a /dev/fb0 some-dir/fb0-for-process-A
cp -a /dev/fb0 some-dir/fb0-for-process-B
chmod g+s some-dir/fb0-for-process-[AB] # enable mand-lock

Kemudian misalnya, menggunakan perl dan File::FcntlLock modul (atau lakukan langsung di C):

#! /usr/bin/perl
use File::FcntlLock;

$l = new File::FcntlLock;
$l->l_type(F_RDLCK);

open my $fba, '<', 'some-dir/fb0-for-process-A' or die$!;

sleep 10; # writing OK
$l->lock($fba, F_SETLK); # writing blocked on fb0-for-process-A

sleep 10;
exit; # lock now released (or do an explicit unlock)

Minta satu proses membuka perangkat fb0 melalui fb0-for-process-A file, dan yang lainnya melalui fb0-for-process-B dan menerapkan penguncian ke kedua file untuk memutuskan proses mana yang dapat menulis pada waktu tertentu.


Linux
  1. Pastikan Sebuah Proses Selalu Berjalan?

  2. Ubah Lingkungan Proses yang Berjalan?

  3. Tulis Semua Tmux Scrollback Ke File?

  1. Bagaimana Cara Memeriksa Kemajuan Running Cp?

  2. Tulis ke file .txt?

  3. Shell - Tulis konten variabel ke file

  1. Proses Substitusi Dan Pipa?

  2. Melakukan Operasi Tulis Atom Dalam File Di Bash?

  3. Buang memori proses linux ke file