“Rc.local” ın başlangıçta çalışmasını nasıl sağlayabilirim?


75

Sistemim başladığında çalıştırmak istediğim bir senaryo var. "Rc.local" 'a yazdım ama işe yaramadı. Başlangıçta çalışmasını nasıl sağlayabilirim?


1
Xsetwacom komutu nerede? /etc/rc.local başlangıçta çok basit bir PATH ile yürütülür. Muhtemelen terminalde giriş yapmış olduğunuz PATH'ten farklıdır. Terminalde: -p xsetwacom yazın ve /etc/rc.local içindeki "xsetwacom" komutunu "-p" tipi tarafından döndürülen tam yolla değiştirin. Xsetwacom'un sizin için çalışmasından önce herhangi bir manuel başlatma yapmanız gerekiyor mu?
waltinator

3
Kullanılması systemd : Başlangıç yöneticisi olarak Rc.local uyumluluk çalıştığından emin olunsystemctl status rc-local.service
rubo77

waltinator'ın yorumu benim sorunumdu. Asgari yol yüzünden, çalıştırmak istediğim komut dosyalarını nasıl çalıştıracağımı bilmiyordu. / Sbin: /etc/rc.local runninig sırasında benim Ubuntu 14.04 sistemde yüklü şekli aşağıdaki oldu / usr / sbin: / bin: / usr / bin ... sen koyarak sizin kontrol edebilir echo $PATH > /home/rc_local_pathsenin içine / etc / rc.local ve ardından başlatma sırasında çalıştırıldıktan sonra dosyayı kontrol eder.
RaisinBranCrunch

Komut dosyanızın sürekli çalışması gerekiyorsa , dosyayı dosyada daemon olarak başlatmanız gerektiğini unutmayınrc.local !
totymedli,

Sunucu başlangıcında çalıştırıldığından sudo systemctl enable rc-local.serviceemin olmak /etc/rc.local için kullanın
William

Yanıtlar:


56

Senaryoyu manuel olarak çalıştırabilir misin? Eğer değilse, bu senaryoda bir sorun var; Aksi takdirde rc.local'a bakınız. (Bu betiğin root olarak çalışması gerekiyorsa, elle çalıştırmak için sudo kullanmanız gerekir.)

/Etc/rc.local dosyasının çalıştırılabilir olduğundan ve çağırdığı komut dosyasının da çalıştırılabilir olduğundan emin olun.

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

Rc.local'ın bir shebang hattına sahip olduğundan emin olun (varsayılan değerdir):

$ head -n1 /etc/rc.local
#!/bin/sh -e

Evet, betiği manuel olarak çalıştırabilirim. /Etc/rc.local dosyasının çalıştırılabilir olduğundan nasıl emin olabilirim? Yazmam gereken ne var? "$ Ls -l /etc/rc.local -rwxr-xr-x 1" mi? Teşekkürler!
pedroo,

@pedroo: Ben tam olarak ne kopyaladıktan bkz (böylece her şeyden istemi, giriş ve çıkış bakınız) benim Terminalde. Komut "ls -l /etc/rc.local" dır ve eğer çalıştırılabilir ise, çıktıda bu X'leri olacaktır.

3
"Ls -l /etc/rc.local" dosyasını denedim ve çalıştırılabilir, ancak başlangıçta çalıştırılmasını sağlayamıyorum ... Herhangi bir fikir?
pedroo,

1
@pedroo: Bu, rc.local yürütüldüğünde gerçekleşmeyen X sunucusunun çalışmasını gerektirir. Rc.local'dan çalıştırmak hiçbir şey yapmadan çıkmasını sağlar (umarım syslog'a veya başka bir yere bir mesaj koyar). Xsetwacom komutlarını bunun yerine ~ / .xinitrc veya / etc / X / xinit / xinitrc biçiminde koymanız gerekir.

1
@pedroo: Çünkü rc.local farklı bir zamanda çalıştırma amaçlı komutlar içerir. Yeni bir dosya oluşturun, ~ / bin içine koyabilirsiniz , çalıştırılabilir olarak işaretleyin (Nautilus'ta chmod veya özellikler), ilk satırını "#! / Bin / bash" yapın, sonra komutlarınızı daha sonraki satırlara koyun.

53

Benim durumumda talimatların hiçbiri mükemmel bir çözüm değildi. Sen de benim kadar şanssızsan, detaylı olanı dene.

  1. Tüm çalıştırma kodunuzu foo.sh gibi isteğe bağlı bir adla ayrı bir metin dosyasına yerleştirin ve isteğe bağlı bir yere kaydedin.
  2. Eklemek

    #!/bin/sh

    kodunuzun ilk satırı olarak.

  3. Foo.sh dosyanızı çalıştırmayı deneyin

    sudo foo.sh

    kontrol etmek için hiçbir hata yoktur.

  4. Sh komutundan sonra /etc/rc.local komut dosyanızı tam yolunu ve oluşturduğunuz komut dosyasının adını sağlayın

    sh '/path/to/your/script/foo.sh'
  5. Yukarıdaki satırı son kod satırından önce koymayı unutmayın.

    exit 0

    /etc/rc.local betiğinin sonunda.

  6. Olmak için /etc/rc.local dosyasının ilk satırını kontrol edin.

    #!/bin/sh -e
  7. /Etc/rc.local dosyasını şu anda tarafından çalıştırılmaması durumunda çalıştırılabilir duruma getirin

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  8. Çalıştırarak her şeyin yolunda olup olmadığını kontrol edin

    sudo /etc/init.d/rc.local start
  9. Sınama sisteminizi yeniden başlatın.

6
8. Adım, anahtarın başlangıç ​​ortamında çalışacağını doğrulayan anahtardı. Benim durumumda komuta tam yolu vermem gerekiyor.
Peter Gluck

Kaymakam ve adım adım greats, bu centos üzerinde çalışır ama sudo /etc/rc.local startilk çalıştırma.
A1Gard

Teşekkürler - bu yıkım benim için gerçekten çok yardımcı oldu ve yukarıdaki 8 numaralı adım benim için de önemliydi! Bu olmadan +1 yönlendirmek istemiyordu (referans için, sürekli çalıştırmak için sonsuza dek kullanan bitnami bulut sunucusunda çalışan düğüm uygulaması ).
fidev

8. adım iyi bir ipucuydu, ama bence 7. adım benim için sabit olan şey olabilir, betiği tünel açmak için cron kullanarak çalıştırmaya çalışıyordum ama rastgele başarısız oldu
SeanClt 17:17

28

Daha yeni Ubuntu sürümleri systemdkullanılır ve /etc/rc.localher zaman varsayılan olarak yüklenmez.

Uyumluluk servisinin yüklü olup olmadığını kontrol edin.

systemctl status rc-local.service

ekran görüntüsü

O içeriyorsa aktif (çıkıldı) ayarınız iyi görünüyor ve siz de başka bir hata olabilir /etc/rc.localdosyası (bu örnek için başarısız bir komut olabilir).



3

2 öneri

  1. Hedef komut dosyasının da çalıştırılabilir olarak işaretlendiğinden emin olun.
  2. Hedef komut dosyası bir sudo komutu mu kullanıyor? Öyleyse sudo şifresini ona vermek isteyebilirsin.

Benim hatam. Sadece bir tane kontrol et o zaman. Düzeltme enzotib için teşekkürler :)


8
rc.localroot olarak çalıştırıldığı için şifre gerekmez.
enzotib
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.