Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: Le-Ze 19. 01. 2016, 20:39:01
-
Zdravím.
Již několikrát se mi stalo že mi přestal fungovat rc.local.
Mam systém zazálohovaný a vždy jsem to přehral.
Dnes se to stalo znovu a mně zajím,jak je složité to znovu zprovoznit?
-
Přestal fungovat jak? Nepouští se? Zmizel?
A jakej máš os?
-
Přestal fungovat jak? Nepouští se? Zmizel?
A jakej máš os?
Potřebují spustit můj sh skript při spouštění a nefunguje to.
Vytvořil jsem sh skript Run.
/home/pi/Run přes terminal funguje (spusti se)
V rc.local
home/pi/Run start
/home/pi/Run start
Nespustí se a v syslog nevidím žádnou zmínku o souboru Run.
Dočet jsem se že se rc.local spouští jako služba přes etc/init.d/*rc.local
http://www.fastimages.eu/?v=eeerwr.jpg
A funkčnost zjistím pomocí for i in 2 3 4 5; do ls -l /etc/rc$i.d/ | grep local; done
http://www.fastimages.eu/?v=dddddtxt.jpg
Ale to už je nad me znalostí
-
Ten tvoj skript ma root opravnenia?
Na tom druhom obrazku vidis, ze to potrebuje roota.
-
V rc.local
home/pi/Run start
/home/pi/Run start
To je jako co? Co ocekavate od "home/pi/Run start" bez lomitka na pocatku?
Do rc.local dejte neco jako
date > /tmp/lastrun.log
Po restartu se podivejte, jestli tam takovy soubor je a obahuje cas odpovidajici poslednimu restartu. Pokud tam je, hledejte chybu jinde, nez v rc.local. A dejte sem ten vas tajny skript, my se vam smat nebudeme a treba tam nekdo najde chybu.
Ten tvoj skript ma root opravnenia?
Na tom druhom obrazku vidis, ze to potrebuje roota.
Spousti se to z /etc/rc.local a ten jede pod rootem, pojedou pod nim tedy i skripty, ktere zavola.
-
Jarda: Ještě bych ten "date > /tmp/blabla" dal na začátek toho spouštěného skriptu, ať se zjistí, jestli se to spustilo a zheblo to až někde uprostřed, nebo se to ani nespouští
-
Jeste řekni, co to je za raspbian a dej sem obsah rc.local. Ale ne obrázkem, normalne to označ v putty a sem nakopiruj
-
V rc.local
home/pi/Run start
/home/pi/Run start
To je jako co? Co ocekavate od "home/pi/Run start" bez lomitka na pocatku?
Mam ještě jedno raspi, které jede v pohodě už dlouho a mam v rc.local
etc/init.d/samba start
home/pi/Run start
Vše se spouští
Když skripty porovnám - úplně stejné.
Žádný lastrun.log se nevytvoří.
V syslog také žádná zmínka o lastrun.log
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
date > /tmp/lastrun.log
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
exit 0
Dal jsem to na začatek, jak psal Jenda.
Jinak mezi fi - exit 0
-
Mam ještě jedno raspi, které jede v pohodě už dlouho a mam v rc.local
etc/init.d/samba start
home/pi/Run start
Vše se spouští
Tak to se vam spousti ciste diky vhodnym meteorologickym podminkam, zejmena vysi rosneho bodu. Principielne kdyz se rozbehne rc.local, neni definovan pracovni adresar. Vam to bezi jen diky tomu, ze ten adesar je zrovna na potvoru /. Takze si tam laskave dopiste uvodni lomitka, nepsat uplnou cestu je blby napad.
Žádný lastrun.log se nevytvoří.
V syslog také žádná zmínka o lastrun.log
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
date > /tmp/lastrun.log
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
exit 0
Dal jsem to na začatek, jak psal Jenda.
Jinak mezi fi - exit 0
Tohle nejak ńechapu. Ja mel na mysli, abyste sem dal ten svuj skript, ne rc.local, navic nejaky jiny, ve kterem nevidim volani toho vaseho skriptu. A to printf "My IP address is %s\n" "$_IP" jste tam dal vy? Nejak nechapu, kam se to ma vytisknout, kdyz to nebezi v terminalu. Ale je divne, ze se v /tmp nevytvoril zaznam s datem. Takze vam asi opravdu nebezi rc.local a jestli mate systemd, tak by vam to urcite vysvetlil soudruh Poettering. Eventuelne vam chybi utilita date, coz si muzete vyzkouset spustenim z terminalu. Nebo by to chtelo napsat uplnou cestu, tedy asi /bin/date, protoze mozna pri behu rc.local neni jeste nastavena nejaka cesta nebo co.
-
Tohle nejak ńechapu. Ja mel na mysli, abyste sem dal ten svuj skript, ne rc.local, navic nejaky jiny, ve kterem nevidim volani toho vaseho skriptu. A to printf "My IP address is %s\n" "$_IP" jste tam dal vy? Nejak nechapu, kam se to ma vytisknout, kdyz to nebezi v terminalu. Ale je divne, ze se v /tmp nevytvoril zaznam s datem. Takze vam asi opravdu nebezi rc.local a jestli mate systemd, tak by vam to urcite vysvetlil soudruh Poettering. Eventuelne vam chybi utilita date, coz si muzete vyzkouset spustenim z terminalu. Nebo by to chtelo napsat uplnou cestu, tedy asi /bin/date, protoze mozna pri behu rc.local neni jeste nastavena nejaka cesta nebo co.
Ten rc.local tu chtěl Trubicoid2
Jeste řekni, co to je za raspbian a dej sem obsah rc.local. Ale ne obrázkem, normalne to označ v putty a sem nakopiruj
Ten rc.local je orginal, jen jsem tam dal to date > /tmp/lastrun.log
To že se nespouští jsem již pochopil také, ale proč?
-
no tak jednak oddelej na zacatku v rc.local to "-e" za sh, to zpusobi, ze po chybe proste skonci a nedodela cely skript
pak prikazy pis plnou cestou, tedy /bin/date > /tmp/lastrun.log
a rekni, co rika ls -l /etc/init.d/rc.local
a chkconfig | grep rc.local
jestli ho nemas tak sudo apt-get install chkconfig
-
jestli je tam sYsTeMd tak mu mozna hrablo a vypnul rc.local sluzbu, zapnout by mela jit pomoci:
systemctl enable rc-local.service
-
ak je tam systemd tak by som radsej vytvoril normalny nazov.service kde bude definovane co sa ma spustit a kedy.. Ak je to sluzba ktora pouziva siet a IP adresu osvedcilo sa mi pri problemoch pridat Wants=network-online.target alebo nejak tak.
Vsetko bez problemov. Ak nie je systemd tak vytvorit skript do /etc/init.d/aaa a povolit cez chkconfig na dany runlevel.
Takisto odporucam pisat plne nazvy v skriptoch t.j. nie date ale /bin/date ..
A prehistoricke systemy kde nie je systemd uz prosim vypnite :D
-
rc.local bude fungovat na Wheezy a starších. Jenom připomínám, že by rc.local i z něj spouštěné skripty měly být spustitelné. Mě to na rpi (raspbian wheezy) funguje bez problémů.
-
Tady na tom mam také wheezy.
Na tom druhem mam také wheezy
A mam také to nové raspi 2 s jessie
Všude to funguje.
I tu na tom to fungovala.
Za 3 roky se mi stalo že to už 3X padlo.
Vždy pří update -upgrade
http://www.fastimages.eu/?v=kkkkksfs.jpg
-
jo, mas to dobre; ted oddelej ten -e a plny cesty
pri upgrade to pada tim, ze se dodrbe FS na SD, je potreba vyzkouset jiny karty, vetsinou se drbou ty rychlejsi, novejsi, starsi byvaji lepsi
jestli teda neni FS naborenej? sudo touch /forcefsck;sync;sudo reboot
a jadro mas novy? sudo apt-get install rpi-update;sudo rpi-update;sync;sudo reboot
-
-e pryč a úplně nahoře /bin/date > /tmp/lastrun.log
V tmp lastrun.log není a v sys.log žadná zmínka a něm také ne.
-
kontrolu /forcefsck jsi udelal?
kdyz das ls /lost+found
tak je tam hodne veci?
asi mas hodne naborenej system, je potreba najit balicky, co jsou naboreny a preinstalovat, ja to delal nekolikrat
osvedceny postup:
sudo apt-get install debsums
sudo debsums -s -a 2> broken.log
sort broken.log | less
ignorujes soubory v /boot a /opt/vc (ty se tam dostanou tim rpi-update)
dale ignorujes soubory v /etc o kterych vis, ze si je menil
no a u ostatnich vsech, kde je missing nebo changed nainstalujes ten balicek (v zavorce napsany jakej) znova
sudo apt-get install --reinstall balicke
a tak to udelas pro vsechny
-
kontrolu /forcefsck jsi udelal?
kdyz das ls /lost+found
tak je tam hodne veci?
Úplně prázden.
No nic, asi to přehrají novým systémem a zkusím tam strčit jessie.
Když už se mi to stalo 3X, chtěl jsem zjistit kde je problém a zda bych byl přiště schopen to spravit.
I tak moc děkují za rady a ochotu.