Her açılışta / var / run içinde oluşturulan klasörler nasıl


60

Son zamanlarda ubuntus'ta (özellikle, beni en çok ilgilendiren şey 12.04) /var/runtmpfs, ve böylece her yeniden başlatmada boşaldığını varsayıyorum.

Oysa orada bazı klasörler görüyorum, /var/run/mysqlddiğerleri gibi ve diğerleri. Her yeniden başlatmada bu klasörler nasıl oluşturuldu? Kopyalanan bir şablon klasörü var mı /var/run/(eğer öyleyse bunu hangi komut dosyası yapar) veya her bir klasör mkdirayrı ayrı dizildi mi, yoksa ne?

EDIT:
Lütfen, /var/runısrarcı veya ısrarcı olan cevap vermeyin /run. Çünkü öyle değil.

O bu kadar olsa bile senin sistemin, düzenli 12.04 bu kadar değil.


Hmm, yani 50 temsilcim olacak. Her ikisi de açıkça açıkça yanlış olan iki cevabın birine harcandı ....
Sandman4

Birisi, lütfen mantıklı bir şey cevaplamak ve +50 rep olsun :)
Sandman4

Yanıtlar:


82

(@Zulakis ve bu cevabın Ubuntu'nun devam eden gelişimine uymadığına dikkat çektiği için Serverfault'a bir cevap ).

Benimsenmesiyle systemditibariyle 15.04 , şimdi bu gibi geçici dosyaları ve dizinleri oluşturulması için merkezi bir mekanizma yoktur. Kaldırabilir bu yöntemi kullanmak isteyen bir hizmet mkdir, kendi başlangıç komut dosyası komutları ve bunun yerine bir koyun .confdosyayı /etc/tmpfiles.d, /run/tmpfiles.dya /usr/lib/tmpfiles.dUbuntu hizmetleri son seçeneği tercih için görünen ile. Örneğin, sistemim şimdi var:

$ egrep -r /var/run /usr/lib/tmpfiles.d

/usr/lib/tmpfiles.d/var.conf:L /var/run - - - - ../run
/usr/lib/tmpfiles.d/sudo.conf:d /var/run/sudo 0711 root root
/usr/lib/tmpfiles.d/sudo.conf:D /var/run/sudo/ts 0700 root root
/usr/lib/tmpfiles.d/postgresql.conf:d /var/run/postgresql 2775 postgres postgres - -
/usr/lib/tmpfiles.d/sshd.conf:d /var/run/sshd 0755 root root
/usr/lib/tmpfiles.d/screen-cleanup.conf:d /var/run/screen 0775 root utmp

dZaten yoksa o yolun olduğunu ve dinlenme izinleri, kullanıcı ve grup olduktan sonra vasıta, bir dizin oluşturun. Bu rehberler, ilgili servisin başlatılıp başlatılmadığına bakılmaksızın oluşturulacaktır.

Tüm belgeler için bkz man tmpfiles.d.


ESKİ ÖN SİSTEM CEVAP:

Başlarken bireysel hizmetler tarafından dinamik olarak oluşturuluyor gibi görünüyorlar:

$ sudo egrep -r 'mkdir.*/var/run' /etc

/etc/init.d/ssh:        mkdir /var/run/sshd
/etc/init.d/bind9:      mkdir -p /var/run/named
/etc/init.d/timidity:    mkdir -p /var/run/timidity
/etc/init.d/bzflag:                mkdir -p /var/run/bzflag
/etc/init.d/dns-clean:mkdir /var/run/pppconfig >/dev/null 2>&1 || true
/etc/init/winbind.conf: mkdir -p /var/run/samba/winbindd_privileged
/etc/init/dbus.conf:    mkdir -p /var/run/dbus
/etc/init/ssh.conf:    mkdir -p -m0755 /var/run/sshd
/etc/init/libvirt-bin.conf:     mkdir -p /var/run/libvirt
/etc/init/cups.conf:    mkdir -p /var/run/cups/certs

Mysqld işleyen bu olduğuna inanıyorum:

[ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
/lib/init/apparmor-profile-load usr.sbin.mysqld

man install -d formunun "belirtilen dizinlerin tüm bileşenlerini oluşturacağını" söylüyor.


1
Bu her zaman böyle görünmüyor: serverfault.com/questions/824393/…
Zulakis

Teşekkürler, @ Zulakis. Bazı düzenlemeler yaptım ve bu özellik konusundaki deneyiminize dayanarak doğru olup olmadıklarını bilmek isterim.
Paul

1
Bana iyi görünüyor! Cevabınızı güncellediğiniz için teşekkür ederiz :)
Zulakis

1
Egrep -r komutu için oy verin. Dosya aramada bir arama yapıyorum! :-)
Nick Woodhams

5

Yeni tmpfs bağlantılı /runklasör, udev, lvm ve mdadm gibi programların çalışma zamanı verilerini initrd'den kapanana kadar tutmasını sağlar.

/var herhangi bir Linux / UNIX sisteminin standart bir dizinidir - "değişken" anlamına gelir ve çok sayıda günlük, cahces, BUT ayrıca değişken ayarları dosyalarını ve hatta bazı sistem yapılandırma veritabanlarının bulunduğu bir yerdir.

İçerideki çoğu şey /varsistem tarafından uygun şekilde temizlenmeli ve düzenlenmelidir. Sanal bellek takas dosyalarınız da içinde yaşar, /varbu yüzden bununla uğraşmayın. /var/runAyrıca aktif çalışan işlem günlüklerinin çok sayıda statüsü ve parametre bilgileri bulunmaktadır.

Bu dizin, başlatıldığından beri sistemi tanımlayan sistem bilgisi verilerini içerir. Bu dizindeki dosyalar önyükleme işleminin başında temizlenmeli (uygun şekilde kaldırılmalı veya kesilmelidir). Programların bir alt dizini olabilir /var/run; bu, birden fazla çalışma zamanı dosyası kullanan programlar için teşvik edilir.

O zamandan beri /var/runtmpfs olarak monte edildi. Bu, makineniz önyüklendiğinde tamamen boş olduğu anlamına gelir ve artık bir PID dosyası nedeniyle zindanların başlamamasını önlemek için böyle olması gerektiği anlamına gelir.

Başlangıç ​​komut dosyaları genellikle kullanmadan önce ihtiyaç duydukları dizinleri oluşturur. Bir PID dosyasını saklamak istiyorsanız, /var/rundoğrudan yerleştirin veya PID dosyasını oluşturmadan önce bir dizin oluşturun. Burası, yeniden başlatmalar arasında kalması gereken verileri depolamak için uygun bir yer değil.

Kaynaklar: Pathname ve Linux Sistem Yöneticisi Kılavuzu


5

Bu iş parçacığıyla karşılaşan herkes için, bir uygulamayı dizini oluşturacak şekilde nasıl yapılandıracağınıza ve /var/runçorap veya pid dosyasını depolayabilmesine ya da her neyse… işte bunun bir örneğini arayan bir çözüm arıyorsanız . Bu konuya rastladım çünkü MySQL çorap dosyasını saklamak istedim /var/run/mysqld. Böylece, bu konuya rastladıktan sonra /etc/initörnekler için dosyalara bakmaya başladım . dbus iyi biriydi. Ve, bu mysql başlangıç ​​yapılandırması ile geldi:

start on runlevel [2345] 
stop on runlevel [!2345] 
expect daemon 

pre-start script 
    mkdir -p -m0755 /var/run/mysqld 
    chown mysql:mysql /var/run/mysqld 
end script 

exec /etc/init.d/mysql start 
pre-stop exec /etc/init.d/mysql stop 

Başlangıç ​​öncesi betiği hile yaptı.


2

Ancak, orada / var / run / mysqld ve diğerleri gibi bazı klasörler görüyorum. Her yeniden başlatmada bu klasörler nasıl oluşturuldu? / Var / run / (ve eğer öyleyse, hangi komut dosyası yapar) veya her klasör ayrı ayrı mkdired olarak kopyalanan bir şablon klasörü var mı, yoksa ne?

'De tanımlandığı gibi, dosya hiyerarşisindeki Standart/var/run ya da /runuçucu zamanı verilerini depolamak için kullanılır.

Orada oluşturulan tüm klasörler ve dosyalar, dosyaları oluşturan ilgili program tarafından yönetilir. Kopyalanan bir şablon klasörü diye bir şey yoktur, her program geçici bilgileri saklamak için bu klasörü kullanabilir. Sistem yeniden başlatıldığında saklanan veriler kaybolur.

/runKlasörü kullanmak için yaygın bir şey pid, çalışan işlem dosyalarını, işlemin işlem numarasını içeren işaretleyici dosyalarını saklamaktır . Bunlar çoğunlukla, örneğin içinde bulabileceğiniz başlat / durdur komut dosyaları için kullanılır./etc/init.d/

Umarım bu size açık bir şey getirdi!

br


1

Varsayımınız kesinlikle doğru değil. /varKlasörün konumu tartışılabilir - yani, /varklasörü bulmak için alternatif bir bölüm veya birim kullanabilirsiniz . /varKlasörün bulunduğu yere bakılmaksızın, klasör, /var/runklasöre bir bağlantıdır ve önyükleme sırasında başlayan servisler tarafından önyükleme sırasında oluşturulan /rundosyaların /runçoğu oluşturulur veya değiştirilir , ancak yeniden başlatmalardan sonra içeriği kalır . Bu nedenle - dizine mysqlddosya yükleme çağrısı yapan /var/runve şu anda yoksa, alt dizinler oluşturmak üzere ayarlanan hizmetlerdir.


1
/ Var / run içinde bazı klasörler yarattım ve yeniden başlattıktan sonra kayboldu. (özellikle
12.04'de

Ayrıca burada bakın / var / run gerçekten tmpfs askubuntu.com/questions/57297/…
Sandman4

-2

douggro kesinlikle haklıdır, / var / run, tmpfs olarak monte edilir ve / var / run, yeniden başlatmalar arasında kalıcı olan / run'a bir bağlantıdır; Çalıştırmak.

Bu nedenle, önyükleme sırasında başlatılan ve / run içinde dosya oluşturan bir daemon olan mysqld gibi herhangi bir önyükleme hizmeti de / var / run'da görünen dosyalara sahip olacaktır (symlink to / run remember). Eğer / var / run içindeki bir yeniden başlatma işlemi ile devam edecek bir dosya oluşturmak istiyorsanız, / run dizininde oluşturun ve ardından yeniden başlatın.

Umarım bu sorunuzu yanıtlar.


3
İkiniz de yanlışsınız ya da standart olmayan kurulumları kullanıyorsunuz. Kendin kontrol et. mount | grep / run .... tmpfs açık / çalışma türü tmpfs
Steven K

1
Msgstr "" / var / run içindeki yeniden başlatma işleminden devam edecek bir dosya oluşturmak istiyorsanız, / run dizininde oluşturun ve ardından yeniden başlatın. " Bu doğru değil. tmpfsuçucu ve değişiklikler kaybolur.
ortang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.