it-swarm.dev

Jak mohu nastavit "rc.local" při spuštění?

Mám skript, který bych chtěl spustit při spuštění systému. Dal jsem to na "rc.local", ale nefunguje to. Jak mohu povolit spuštění při spuštění?

75
pedroo

Můžete skript spustit ručně? Pokud ne, je to problém s tímto skriptem; jinak se podívejte více na rc.local. (Pokud se tento skript musí spouštět jako root, musíte jej spustit ručně pomocí Sudo.)

Ujistěte se, že /etc/rc.local je spustitelný a že skript, který volá, je také spustitelný.

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

Ujistěte se, že rc.local má řádek Shebang (což je výchozí):

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

V mém případě žádná z pokynů nebyla dokonalým řešením. Pokud jste byli stejně nešťastní jako já, zkuste tento podrobný

  1. Vložte veškerý prováděcí kód do samostatného textového souboru s libovolným názvem, například foo.sh, A uložte jej na libovolném místě.
  2. Přidat

    #!/bin/sh
    

    jako první řádek kódu.

  3. Zkuste provést foo.sh Pomocí

    Sudo foo.sh
    

    zkontrolovat, zda neexistují žádné chyby.

  4. Za příkaz sh zadejte skript /etc/rc.local S úplnou cestou a názvem vytvořeného skriptu

    sh '/path/to/your/script/foo.sh'
    
  5. Nezapomeňte umístit výše uvedený řádek před poslední řádek kódu a

    exit 0
    

    na konci skriptu /etc/rc.local.

  6. Zaškrtněte první řádek /etc/rc.local

    #!/bin/sh -e
    
  7. Vytvořte svůj spustitelný soubor /etc/rc.local V případě, že jej již nelze spustit

    Sudo chown root /etc/rc.local
    Sudo chmod 755 /etc/rc.local
    
  8. Provedením zkontrolujte, zda vše funguje dobře

    Sudo /etc/init.d/rc.local start
    
  9. Vyzkoušejte restartováním systému.
55
shvahabi

V novějších verzích Ubuntu se používá systemd a /etc/rc.local ve výchozím nastavení není načteno vždy.

Zkontrolujte, zda je služba kompatibility načtena

systemctl status rc-local.service

screenshot

Pokud obsahuje aktivní (ukončené) , vaše nastavení vypadá dobře a můžete mít další chybu ve svém /etc/rc.local file (může to být například příkaz, který selže).

30
rubo77

2 návrhy.

  1. Ujistěte se, že cílový soubor skriptu je také označen jako spustitelný.
  2. Je v cílovém skriptu spuštěn příkaz Sudo? Pokud ano, možná budete chtít zadat heslo Sudo.

Moje chyba. Stačí jen zkontrolovat jednu. Díky za opravu enzotib :)

3
Ankit