ddebny Posted February 5, 2016 Report Share Posted February 5, 2016 W /etc/inid.d dodałem skrypt test Następnie sprawdziłem runlevel i działam na N3 tak więc to /etc/rc.3 dodałem symlink do /etc/init.d/test Zrobiłem oczywiście chmod +x dla /etc/inid.d/test Po restarcie komputera skrypt nie działa. Nie mam pojęcia dlaczego. Pracuję na Fedora 21 Czy wszystko zrobiłem poprawnie? Skrypt wymaga sudo, gdy odpalam go ręcznie. Link to comment Share on other sites More sharing options...
@WalDo Posted February 5, 2016 Report Share Posted February 5, 2016 /etc/rc.3? Jeśli w ogóle, to /etc/rc.d/rc3.d Sprawdziłeś jak wygląda link? Lepiej robić na "prawdziwych" katalogach niż na linkach do nich a /etc/init.d to symboliczny link do /etc/rc.d/init.d Link to comment Share on other sites More sharing options...
SeeM Posted February 7, 2016 Report Share Posted February 7, 2016 Czy wszystko zrobiłem poprawnie? Skrypt wymaga sudo, gdy odpalam go ręcznie. Tu może być problem. Upewnij się, że ścieżki, w których uruchamiany program coś zapisuje mają uprawnienia do zapisu. Też sobie kiedyś dodałem skrypt zmieniający pliki w /etc i nie działał. Przerobiłem go na zmienianie plików w /tmp i było w porządku. Link to comment Share on other sites More sharing options...
Miszcz Posted February 7, 2016 Report Share Posted February 7, 2016 Nie wiem czemu nikt o tym nie mówi, ale od jakiegoś już czasu domyślnym sposobem na zarządzanie usługami w Fedorze jest Systemd. Odpowiada on za uruchamianie, wyłączanie i generalne zarządzanie usługami systemowymi. Sposób, który @ddebny wykorzystujesz jest przestarzały i nie powinien już być wykorzystywany. Jednak systemd jest kompatybilne wstecz, wiec na upartego możesz to zrobić "starym" ( depracated ) sposobem. W samej Fedorze znajdziesz więcej informacji na ten temat: cat /etc/init.d/README. Tyle w kwest teorii. Dodanie skryptu do systemd metodą sysvinit: root# touch /etc/init.d/test # tworzymy plik - skrypt root# printf '#!/bin/bash\necho "Systemd uruchomil skrypt!"' > /etc/init.d/test # dodajemy zawartość root# chmod +x /etc/init.d/test # nadajemy !!przykładowe!! prawa root# systemctl daemon-reload # każemy systemd przeładować konfigurację root# systemctl status test.service # sprawdzamy czy systemd widzi plik Loaded: loaded (/etc/rc.d/init.d/test) # loaded oznacza, że usługa została wykryta root# systemctl start test.service # jeżeli systemd widzi usługę nie pozostaje nic jak ją uruchomić root# systemctl status test.service # ... oraz sprawdzić jej wyjście test.service - (null) Loaded: loaded (/etc/rc.d/init.d/test) Active: active (exited) since Sun 2016-02-07 11:31:55 CET; 4s ago Docs: man:systemd-sysv-generator(8) Process: 29004 ExecStart=/etc/rc.d/init.d/test start (code=exited, status=0/SUCCESS) Feb 07 11:31:55 pc2.home systemd[1]: Starting (null)... Feb 07 11:31:55 pc2.home test[29004]: Systemd uruchomil skrypt! # jak widać standardowe wyjście skryptu jest widoczne w logach systemd Feb 07 11:31:55 pc2.home systemd[1]: Started (null). root# systemctl enable test.service # włączamy uruchamianie usługi wraz ze startem systemu (patrz post niżej) Jeżeli skrypt dalej nie będzie działać to znaczy, że może być on blokowany przez coś innego w systemie np. SELinux, firewall, lub nawet sudo.W tym wypadku pozostaje debugowanie. Można to zrobić na kilka sposobów w zależności od użytego języka, ale to już inna bajka.Jeżeli twój skrypt nie zwraca żadnych informacji debugujących(chociaż kody wyjścia), tzn., że jest źle napisany. 1 Link to comment Share on other sites More sharing options...
@WalDo Posted February 7, 2016 Report Share Posted February 7, 2016 @Miszcz co do meritum masz rację, ale w Fedorze 21 - do obecnych wydań zresztą - jeszcze powinny chyba mimo wszystko działać skrypty z init.d. Ale mam pytanie czy to co napisałeś działa u Ciebie? Bo u mnie [[email protected] ~]# cat /etc/init.d/abc #!/bin/bash echo "test" > /tmp/abc.log echo "działa" [[email protected] ~]# systemctl start abc [[email protected] ~]# systemctl status abc ● abc.service - (null) Loaded: loaded (/etc/rc.d/init.d/abc) Active: active (exited) since nie 2016-02-07 18:57:09 CET; 4s ago Docs: man:systemd-sysv-generator(8) Process: 1792 ExecStart=/etc/rc.d/init.d/abc start (code=exited, status=0/SUCCESS) lut 07 18:57:09 localhost.localdomain systemd[1]: Starting (null)... lut 07 18:57:09 localhost.localdomain abc[1792]: działa lut 07 18:57:09 localhost.localdomain systemd[1]: Started (null). Za to enable: [[email protected] init.d]# systemctl enable abc abc.service is not a native service, redirecting to systemd-sysv-install Executing /usr/lib/systemd/systemd-sysv-install enable abc usługa abc nie obsługuje chkconfig [EDIT]Już sobie przypomniałem. I to być może jest rozwiązanie problemu @ddebny. Do skryptu trzeba dodać linijkę w stylu # chkconfig: - 345 90 pomimo, że to komentarz, to chkconfig z tego korzysta do określenia na jakim runlevel ma wykonać skrypt.Poza tym linki w /etc/rcX.d powinny zaczynać się od S (startowe) lub od K (wykonywane na zamknięcie) a potem powinna następować liczba która decyduje o kolejności wykonywania. Stare dzieje, wieki już tego nie robiłem. 1 Link to comment Share on other sites More sharing options...
Miszcz Posted February 8, 2016 Report Share Posted February 8, 2016 Haha, oj powiem szczerze, że tylko enable nie chciało mi się już sprawdzić, ale tak podejrzewałem, że może być. (btw. dlaczego w codeboxie ignorowane jest formatowanie użytkownika, np. przekreślenie tekstu, pogrubienie?). Link to comment Share on other sites More sharing options...
morg Posted June 9, 2017 Report Share Posted June 9, 2017 Cześć, Mam ten sam problem - startowanie sieci mi nie działa. A sposób opisany przez WalDo u mnie zadziałał tylko przy pierwszym restarcie. Znalazłem coś takiego https://www.tecmint.com/create-new-service-units-in-systemd/ Będę sprawdzał w niedziele u żony w pracy czy się Neostrada podniesie po restarcie. Link to comment Share on other sites More sharing options...
SeeM Posted June 11, 2017 Report Share Posted June 11, 2017 Dnia 9.06.2017 o 23:32, morg napisał: Cześć, Mam ten sam problem - startowanie sieci mi nie działa. A sposób opisany przez WalDo u mnie zadziałał tylko przy pierwszym restarcie. Znalazłem coś takiego https://www.tecmint.com/create-new-service-units-in-systemd/ Będę sprawdzał w niedziele u żony w pracy czy się Neostrada podniesie po restarcie. To dobry tekst. W szczególności ten fragment: Nic trudnego, prawda? Jest to dokładnie wszystko, co trzeba wpisać do pliku service. Link to comment Share on other sites More sharing options...
morg Posted June 15, 2017 Report Share Posted June 15, 2017 Po restarcie maszyny interface ppp0 włącza się na kilka sekund i ... się rozłącza. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now