W Linux Mint 19.2 coś się zmieniło, że system wraz startem nie wykonuje mi komend zawartych w pliku /etc/rc.local? Oryginalnie tego pliku nawet nie było, nawet mimo wykonalności system nie realizuje tych komend.
Tak, zmienił się tak zwany “init” z sysv na systemd. Zadania z /etc/rc.local możesz porozdzielać do crona - roota albo użytkownika.
Potrzebuję by był uruchamiany proces mocp -S i mocp -S wraz ze startem jako zwykły user, wpisywanie tego do /etc/rc.local przestało dawać jakikolwiek efekt (MOC ma też te swoje błędy z PID, ale w większości to działało)
To ma być po zalogowaniu do terminala, czy do GUI, domyślam się że to drugie, jakie środowisko graficzne tam masz. Nie ma tam u ciebie gui do obsługi aplikacji, czy własnych komend podczas startu?
Jest co najmniej kilka sposobów na to, łatwiejszych i trudniejszych, czy przypominających starą metodę rc.local
. Tu opis jak uruchomić działanie rc.local z systemd (opis jest prawidłowy i działa, dlatego z lenistwa go nie opisywałem ponownie tu).
Wtedy działało to bez obsługowo, wraz ze startem systemu, nawet przed zalogowaniem się w GUI. Sprawdzę link.
To możesz napisać sobie regułę dla mocp, podobnie jak tam w opisie i dodać ją jako usługę w systemd, bez rc.local. Takie minimum to mogło by wyglądać tak, w:
sudo nano /etc/systemd/system/mocp.service
wklepać
[Unit]
Description=Serwer mocp
[Service]
RemainAfterExit=yes
User=Uwaga ma być użytkownik dla którego jest usługa, lub czytać np. na Archwiki
ExecStart=/usr/bin/mocp -S
[Install]
WantedBy=multi-user.target
Start.
sudo systemctl start mocp.service
Sprawdzić czy działa tak jak miało.
Jak wszystko jest OK, to dodać do uruchamiania z systemem.
sudo systemctl enable mocp.service
sudo systemctl start mocp.service
Failed to start mocp.service: Unit mocp.service is not loaded properly: Invalid argument.
See system logs and ‘systemctl status mocp.service’ for details.
musze oczywiście też dodać mocp -p
Po co oni to zmieniali, skoro tamto działało.
Pokaż.
whoami
i
cat /etc/systemd/system/mocp.service
martin@martin-ThinkPad-T400:~$ whoami
martin
martin@martin-ThinkPad-T400:~$ cat /etc/systemd/system/mocp.service
[Unit]
Description=Serwer mocp
[Service]
RemainAfterExit=yes
User=martin
ExecStart=/usr/bin/mocp -S
[Install]
WantedBy=multi-user.target
martin@martin-ThinkPad-T400:~$
Poprawiłeś i reguła jest teraz prawidłowa. Usługa uruchomi się dla użytkownika martin. Uruchom
sudo systemctl start mocp.service
i sprawdź,
sudo systemctl status mocp.service
i czy serwer mocp działa dla użytkownika martin (lub swoją, a najlepiej pokaż co wpisywałeś w rc.local).
mocp -i
Nie dawaj na razie enable
, tak jak pisałem wyżej. Bo jeszcze jest parę pytań.
Jeszcze raz zapytam, czy ty chcesz by to grało jeszcze przed zalogowaniem, uruchamiało się razem z systemem. To musi to być uruchomione jako usługa dla systemu, ale to później. Sprawdź na razie to o czym jest wyżej.
Umknęło mi to.
To jest wina Lennarta Poetteringa.
Podałem opis jak to trzeba zrobić, by działało jak dawniej. Jak nie wszystko rozumiesz to trzeba było napisać, zawsze można to opisać (można to zrobić jeszcze prościej). Tylko że i tak trzeba przejść przez usługi systemd, by przywrócić stare działanie rc.local. To już lepiej jest przyzwyczajać się do nowego, a może nie. Jak tam chcesz.
================================
Uwaga dopisane. Nie za szybko odpisujesz, to by nie przedłużać i cie nie mordować, dam ci wybór i opisze jak uruchomić najprościej rc.local. Sprawdziłem czy w Linuxmint (mimo że to system “Debian-owy”) ma przygotowane reguły systemd dla rc.local, i jest tak samo jak w Debianie.
Sprawdź czy plik istnieje, jak nie to go utwórz.
sudo nano /etc/rc.local
Wklej (zawartość bez opisu, to minimum):
#!/bin/sh -e
exit 0
Nadaj uprawnienia do uruchamiania.
sudo chmod +x /etc/rc.local
Uruchom
sudo systemctl start rc-local.service
Sprawdź czy usługa uruchomiła się prawidłowo.
sudo systemctl status rc-local.service
Jak tak, to wpisać co tam miąłeś i zrestartować komputer. Masz działający rc.local.