Jestem nowy w Linuksie i nie mogę się doczekać uruchomienia aplikacji (która przełącza diodę co 10 sekund). Napisałem program aplikacyjny i działa dobrze, ale teraz chcę go uruchomić automatycznie podczas rozruchu.
Dokumentacja tutaj mówi, aby skopiować skrypt startowy do /etc/init.d
katalogu i utworzyć symboliczne łącze do skopiowanego skryptu w rc.d
katalogu.
Jakie powinno być rozszerzenie i nazwa tych plików skryptów? Czy możemy ręcznie dodać łącze symboliczne rc.d
lub czy istnieje w tym celu jakaś konkretna procedura?
Wszelkie sugestie, jak to osiągnąć?
start-stop-daemon
radzi sobie z tym lepiej (chociaż lepiej, żeby sam program demonizował). Jakiej dystrybucji używasz? Poza typami MIME na pulpicie, rozszerzenia plików nie mają znaczenia w * nix i preferowane jest, aby pliki wykonywalne nie miały.cron
zamiast tego użyć .Odpowiedzi:
Oto fragment strony http://www.debian-administration.org/articles/28, który wydaje się odpowiadać na twoje pytanie.
Uwaga: w poniższym przykładowym skrypcie wystarczy dodać wywołanie do sekcji „
start)
”, aby faktycznie uruchomić program. Możesz przetestować funkcjonalność skryptu bez ponownego uruchamiania systemu: nazwij go pełną ścieżką i nadaj parametrowi „start
” lub „stop
”Tutaj idzie:
Debian używa systemu inicjującego Sys-V do wykonywania poleceń, gdy zmienia się poziom uruchamiania systemu - na przykład podczas uruchamiania i zamykania systemu.
Jeśli chcesz dodać nową usługę, która ma się uruchamiać podczas uruchamiania komputera, dodaj odpowiedni katalog do katalogu
/etc/init.d/
. Wiele skryptów już obecnych w tym katalogu daje przykład tego, co możesz zrobić.Oto bardzo prosty skrypt, który jest podzielony na dwie części: kod, który zawsze działa, i kod, który działa, gdy jest wywoływany z „start” lub „stop”.
Po zapisaniu pliku we właściwej lokalizacji upewnij się, że jest on wykonywalny, uruchamiając „
chmod 755 /etc/init.d/blah
”.Następnie musisz dodać odpowiednie dowiązania symboliczne, aby skrypt był wykonywany, gdy system zawiedzie lub się uruchomi.
Najprostszym sposobem na to jest użycie polecenia specyficznego dla Debiana
update-rc.d
:źródło
systemd
wiele rzeczy, w tym konfigurację rozruchową. Służysystemctl
do sterowania i konfiguracjisystemd
.Najlepszym sposobem jest sprawdzenie źródła pakietu twojej dystrybucji dla regularnej usługi systemowej, np. Dla OpenSSH - zobaczysz jakie są dobre praktyki. W końcu jednym z powodów stojących za otwartym oprogramowaniem jest możliwość uczenia się ze źródeł.
źródło
Użyj Supervisora, skutecznego programu, który zarządza i rejestruje aplikacje startowe z argumentami. Dowiedz się więcej na http://supervisord.org/running.html i (Postępuj zgodnie z instrukcją instalacji.
Utwórz plik conf na,
/etc/supervisor/conf.d/{PROGRAM_NAME}.conf
a oto kod,Następnie wykonaj z linii cmd:
supervisorctl reload
źródło
Korzystanie
crontab
jest znacznie łatwiejsze.Służy
crontab -e
do edycji crontab użytkownika.Dodaj następujący wiersz na końcu:
Przykłady:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Na koniec użyj,
crontab -l
aby upewnić się, że skrypt został dodany do listy.źródło
Nowsze wersje wsparcia dla systemu Linux
systemd
(jak powiedział @AlexanderShcheblikin). Ma więcej funkcji i jest bardziej przenośny niż rozwiązanie specyficzne dla Debiana.Przeczytaj ten naprawdę świetny przewodnik .
Oto krótkie odniesienie do niezbędnego minimum :
myscript.sh
) Z uprawnieniami do wykonywania.myservice.service
) Z rozszerzeniem „.service”/etc/systemd/system
z uprawnieniami 644, zawierający polecenie wykonania skryptu. Na przykład,:
sudo systemctl enable myservice
aby umożliwić jego uruchomienie podczas rozruchu.źródło