Linux Mint 19.2 /etc/rc.local

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.

https://help.ubuntu.com/community/CronHowto .

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.:slight_smile:
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.