Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Slax - startup script - nie działa, a powinien :]

08 Mar 2020 20:07 174 3
  • Poziom 5  
    Witam

    Potrzebuję w nowym SLAX-ie ( Linux ), stworzyć sekwencję startową
    w postaci skryptu. Niby wiem jak to zrobić tyle że coś nie działa.

    Jako root działam tak:

    leafpad /etc/init.d/moja_usługa -- wewnątrz daje:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    udhcpc - oczywiście mam zainstalowane i działa poprawnie z cli

    Potem cli dalej:
    chmod +x /etc/init.d/moja_usługa
    update-rc.d moja_usługa defaults

    testuję: service moja_usługa start

    Jeśli wszystko ok, należy taką usługę
    odpalić przy starcie systemu:

    więc wewnątrz /etc/rc.local dodaję

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Potem savechanges i powstaje nowy plik np. Starter.sb
    Zmieniam mu nazwę z prefixem np. 7-Starter.sb

    Linux startuje, ładuje wszystkie .sb ale moja_usługa
    się nie uruchamia.

    Proszę o podpowiedź co robię nie tak.
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • VIP Zasłużony dla elektroda
    "Nowy" Slax jest oparty na Debianie z systemd, nie ma /etc/rc.local ale można go stworzyć i nadać atrybut wykonywalności

    systemd-rc-local-generator napisał:
    Name

    systemd-rc-local-generator — Compatibility generator for starting /etc/rc.local during boot

    Synopsis

    /usr/lib/systemd/system-generators/systemd-rc-local-generator

    Description

    systemd-rc-local-generator is a generator that checks whether /etc/rc.local exists and is executable, and if it is pulls the rc-local.service unit into the boot process. This unit is responsible for running this script during late boot. Note that the script will be run with slightly different semantics than the original System V version, which was run "last" in the boot process, which is a concept that does not translate to systemd. The script is run after network.target, but in parallel with most other regular system services.

    Support for /etc/rc.local is provided for compatibility with specific System V systems only. However, it is strongly recommended to avoid making use of this script today, and instead provide proper unit files with appropriate dependencies for any scripts to run during the boot process.

    systemd-rc-local-generator implements systemd.generator(7).

    See Also

    systemd(1), systemctl(1)


    czyli powinieneś stworzyć jednostkę systemd co przy Twoim poleceniu byłoby przerostem formy nad treścią; szybciej w /etc/rc.local np.:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Slax - startup script - nie działa, a powinien :]
  • Poziom 5  
    Zanim odpisałeś rozwiązałem ten i inne problemy po drodze. Faktycznie działa nowa usługa z systemd. To co opisałeś powyżej nie testowałem w sensie /etc/rc.local - zajrzę.

    Zauważyłem że uruchamiając Slax-a, gdy startuje moja usługa ( ta którą stworzyłem przed przeczytaniem Twojego wpisu ) która odpala mój skrypt, ona nie działa poprawnie.
    Np. bez problemu podczas uruchomienia usługa w ramach testu odpalając skrypt utworzyła katalog, odpaliłem skrypt z innego serwera po URL itd. To wszystko sprawia wrażenie że po boocie
    można robić cokolwiek skryptem startowym a okazuje się że nie do końca.

    Gdy Slax startuje, wcześniej stworzona usługa uruchamia skrypt /test.sh:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    external_script.sh:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    ========================================

    Więc, mkdir zadziałał ale xrandr widoczny wyżej już nie. Wpisałem
    ręcznie tego xrandr i działa, odpalany z CLI skrypt /test.sh też działa, ale z tej usługi
    podczas startu już nie ( nie w pełni ). Być może trzeba to uwarunkować hmm od
    kompletnego startu systemu do końca, i gdy wszystko się już
    rzekomo załaduje rzekomo xrandr powinien działać. Ale nie jestem
    pewien bo dawałem tam sleep 15 i też nie działał, a mkdir działa.

    Czy możliwe jest że chodzi o uprawnienia ? Dlatego xrandr nie zadziałał ?
  • Poziom 15  
    Skrypty uruchamiane przez rc.local działają z uprawnieniami root i raczej to nie to.
    Xrandr należy do programów obsługi serwera X, czy uruchamiałeś go w czystej konsoli Linux-a (tz. bez uruchomionego X-serwera) czy może w terminalu (wirtualnej konsoli uruchamianej pod X-serwerem)?
    Jeżeli to drugie to sprawdź wyłączając X-serwer i przechodząc do czystej konsoli czy z jej poziomu można uruchomić dane polecenie:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Możliwe, że nie.