Başlangıçta bash betiğini çalıştır


20

Bu sorunun daha önce sorulduğunu biliyorum, ancak sorunum için bir düzeltme bulamıyorum, sadece komut dosyamın başlangıçta çalışmasını sağlayamıyorum. İşte benim senaryom:

#!/bin/bash
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

/etc/init.dDizine koydum

Kullanarak çalıştırılabilir olduğundan emin olun chmod 755 /etc/init.d/iptables.sh

Ve bitti touch /etc/rc3.d/S01iptables.sh

Ama hiçbir şey :( ... Herhangi bir öneriniz var mı?

[Kas 2017] Buradaki kabul edilen yanıt eski sayılmalı, lütfen /raspberrypi//a/75057/5538 adresine bakın.

Yanıtlar:


13

[Lütfen bu cevabın eskimesi ile ilgili sorudaki nota bakınız.]

Komut dosyanızın önyükleme sırasına eklendiğinden emin olmak için bu komutu kullanmayı deneyin:

sudo update-rc.d /etc/init.d/nameofscript.sh defaults

Komut dosyasını chmod ile + x seçeneğini kullanarak yürütülebilir hale getirebileceğinizi unutmayın:

chmod +x /etc/init.d/nameofscript.sh

1
Evet update-rc.dkomut çalıştı: D ... Daha önce kullandım, ama sadece bir hata döndürdü, bu yüzden bunu görmezden geldi Lol ... Yardım için teşekkürler: D

5
sudo update-rc.d nameofscript.sh defaultsKaçınılması en azından Jessie için olurdu update-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh.
derFunk

Bu komut dosyasının makul bir süre içinde bitmesi gerekiyor mu? Veya sonsuzluk için bir videoyu döngüye sokmak için kullanılabilir mi?
clankill3r

19

Ayrıca başlangıçta çalışmasını sağlamak için bir cronjob ( öğreticiye bakınız ) kurabilirsiniz.

(sudo) crontab -e

yalnızca sudokomut dosyanızın süper kullanıcı ayrıcalıklarına ihtiyacı varsa ekleyin . Sonra bunu crontab'ınıza ekleyin:

@reboot /path/to/script.sh

Bir komut dosyası başlatmak için bu yöntemi kullandım ve bir nedenle tüm ssh erişimini kapattı. Sürücüyü başka bir linux cihazına monte etmek ve crontab hattını yorumlamak zorundaydım.
Phill Healey

7

Sen alt kısmına komut çalıştırılabilir komut ekleyebilir .bashrcolacağını da komut giriş her zaman çalıştırmak .

  1. piKlasörde olduğunuzdan emin olun :

    $ cd ~
    
  2. Bir dosya oluşturun ve dosyada çalıştırılacak bir komut dosyası yazın:

    $ sudo nano superscript
    
  3. Kaydet ve çık: Ctrl+ X, Y,Enter

  4. .bashrcYapılandırma için aç :

    $ sudo nano .bashrc
    
  5. Aşağıya doğru kaydırın ve satırı ekleyin: ./superscript

  6. Kaydet ve çık: Ctrl+ X, Y,Enter


Konsola önyükleme üzerinde çalışan bir çözüm arıyorsanız , bu bağlantıya bir göz atın . Temel özet:

  1. Başlangıç ​​komut dosyanız için bir dosya oluşturun ve komut dosyanızı dosyaya yazın:

    $ sudo nano /etc/init.d/superscript
    
  2. Kaydet ve çık: Ctrl+ X, Y,Enter

  3. Komut dosyasını yürütülebilir yapın:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. Başlangıçta çalıştırılacak betiği kaydet:

    $ sudo update-rc.d superscript defaults
    

LXDE ortamına önyükleme yaparken bir komut dosyasının çalışmasını istiyorsanız , bu Raspberry Pi forum gönderisine göz atabilirsiniz :

  1. Şu yöne rotayı ayarla ~/.config/lxsession/LXDE-pi

  2. autostartO klasördeki dosyayı:

    $ sudo nano autostart
    
  3. @bash /path/to/scriptname &Yeni bir satıra ekleyin . Python betiği gibi bir şey çalıştırmak istiyorsanız, @python mypython.pyyeni bir satıra benzer bir şey koyun . Bir komut dosyası çalıştırmak olabilir @./superscript, ancak bir nedenle komut dosyası sonsuz bir döngüde çalışır (belki de bunu durduracaktır).

  4. Kaydet ve çık: Ctrl+ X, Y,Enter

  5. Raspberry Pi'nizi LXDE ortamına yeniden başlatın.

alınan start-up komut dosyası yürütme


1

Genellikle sadece komut satırı yürütmek için satır eklemek /etc/rc.local, örneğin /path/to/my/script.sh &, sahip olan son satırdan önce exit 0. Geri dönmemesi durumunda komut dosyasını arka plana göndermek için "&" i ekledim, aksi takdirde sonraki komutlar yürütülmezdi.

Yani sizin durumunuzda iki satırı eklerim

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

sonunda /etc/rc.localhemen önce exit 0.

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.