Uruchom skrypt bash podczas uruchamiania

19

Wiem, że to pytanie zostało już zadane, ale nie mogę znaleźć rozwiązania mojego problemu, po prostu nie mogę uruchomić skryptu podczas uruchamiania. Oto mój skrypt:

#!/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

Włożyłem to do /etc/init.dkatalogu

Upewnij się, że był wykonywalny przy użyciu chmod 755 /etc/init.d/iptables.sh

I zrobione touch /etc/rc3.d/S01iptables.sh

Ale nic :( ... Jakieś sugestie?

[Lis 2017] Przyjęta tutaj odpowiedź powinna zostać uznana za przestarzałą, zobacz /raspberrypi//a/75057/5538

Złotowłosa
źródło

Odpowiedzi:

12

[Patrz uwaga w pytaniu dotyczącym przestarzałości tej odpowiedzi.]

Spróbuj użyć tego polecenia, aby upewnić się, że skrypt został dodany do sekwencji rozruchowej:

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

Zauważ, że możesz zrobić skrypt za pomocą opcji + x za pomocą chmod:

chmod +x /etc/init.d/nameofscript.sh
Steve
źródło
1
Tak, update-rc.dpolecenie zadziałało: D ... Użyłem go wcześniej, ale wyglądało na to, że po prostu zwrócił błąd, więc zignorowałem go Lol ... Dzięki za pomoc: D
5
Unikałby tego sudo update-rc.d nameofscript.sh defaults, przynajmniej Jessie update-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh.
derFunk
Czy ten skrypt musi zakończyć się w rozsądnym czasie? Czy może być na przykład używany do zapętlania wideo w nieskończoność?
clankill3r
19

Możesz także skonfigurować cronjob ( patrz samouczek ), aby działał podczas uruchamiania

(sudo) crontab -e

dodaj tylko, sudojeśli twój skrypt wymaga uprawnień administratora. Następnie dodaj to do swojego crontab:

@reboot /path/to/script.sh
nagyben
źródło
Użyłem tej metody do uruchomienia skryptu, który z jakiegoś powodu zamknął dostęp do ssh. Musiałem zamontować dysk na innym urządzeniu z systemem Linux i skomentować linię crontab.
Phill Healey
6

Możesz dodać komendę skryptu do dolnej części .bashrc, która uruchamia skrypt za każdym razem, gdy się logujesz .

  1. Upewnij się, że jesteś w pifolderze:

    $ cd ~
    
  2. Utwórz plik i napisz skrypt do uruchomienia w pliku:

    $ sudo nano superscript
    
  3. Zapisz i wyjdź: Ctrl+ X, Y,Enter

  4. Otwórz .bashrcna konfigurację:

    $ sudo nano .bashrc
    
  5. Przewiń w dół i dodaj wiersz: ./superscript

  6. Zapisz i wyjdź: Ctrl+ X, Y,Enter


Jeśli szukasz rozwiązania, które działa przy uruchamianiu konsoli , spójrz na ten link . Podstawowe podsumowanie:

  1. Utwórz plik dla skryptu uruchamiania i napisz skrypt w pliku:

    $ sudo nano /etc/init.d/superscript
    
  2. Zapisz i wyjdź: Ctrl+ X, Y,Enter

  3. Ustaw skrypt jako wykonywalny:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. Zarejestruj skrypt, który będzie uruchamiany podczas uruchamiania:

    $ sudo update-rc.d superscript defaults
    

Jeśli chcesz, aby skrypt był uruchamiany podczas rozruchu w środowisku LXDE , zapoznaj się z postem na forum Raspberry Pi :

  1. Nawigować do ~/.config/lxsession/LXDE-pi

  2. Otwórz autostartplik w tym folderze:

    $ sudo nano autostart
    
  3. Dodaj @bash /path/to/scriptname &w nowym wierszu. Jeśli chcesz uruchomić coś takiego jak skrypt Pythona, umieść coś @python mypython.pyw nowym wierszu. Uruchomienie pliku skryptu byłoby @./superscript, ale z jakiegoś powodu skrypt działa w nieskończonej pętli (być może to powstrzyma).

  4. Zapisz i wyjdź: Ctrl+ X, Y,Enter

  5. Uruchom ponownie Raspberry Pi w środowisku LXDE.

pobrane ze skryptu Wykonaj przy uruchomieniu

Liam
źródło
1

Zazwyczaj po prostu dodaję wiersz, aby wykonać skrypt /etc/rc.local, np. /path/to/my/script.sh &Przed ostatnim wierszem, który ma exit 0. Dodałem „&”, aby wysłać skrypt w tło, na wypadek, gdyby nie zwrócił, w przeciwnym razie kolejne polecenia nie zostałyby wykonane.

W twoim przypadku po prostu dodałbym dwie linie

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

na koniec /etc/rc.localtuż przed exit 0.

Jerzy
źródło