dopisywanie do rc.local

Ogólne pytania dotyczące systemu
djecstasy
Posty: 2
Rejestracja: 08 października 2011, 11:33

dopisywanie do rc.local

Post autor: djecstasy »

Witam.
Piszę prosty skrypt instalatora, a właściwie automatyzacji pewnych czynności. Wszystko mam już napisane świetnie działa ale pozostaje jedna czynność mianowicie dopisanie dwóch linijek do pliku rc.local. Chciałem to również zautomatyzować ale napotkałem problem. Otóż, jak wiadomo, na końcu pliku rc.local jest:

Kod: Zaznacz cały

exit 0
Wszystko co ma być wykonywane przy starcie musi być przed tym. Jak zatem to dopisać? Standardowo dopisuje się na końcu pliku. Nie chcę też całkowicie podmieniać czy przepisywać pliku bo ktoś może mieć już tam jakieś wpisy no i lipa.
Chciałem to zrobić w ten sposób:

Kod: Zaznacz cały

cd /etc
sed -e '/^exit/d' rc.local | more
cat /tmp/autostart >> /etc/rc.local
Czyli odnajduje linijkę zaczynającą się od "exit" i ją usuwa następnie dopisuje zawartość pliku "autostart". Jednak nie całkiem to działa. Tzn w trakcie wykonywania czynności widać, że usuwa linijkę exit 0 ale tak jakby nie zapisywało tego bo później jest:

Kod: Zaznacz cały

exit 0
zawartość dopisana
exit 0
Jak to dobrze nadpisać? Ma ktoś jakiś pomysł?

Edycja:
Już wiem w czym był problem, sed nie zapisuje zmian w bieżącym pliku. Poprawiłem skrypt i działa już wyśmienicie.

Kod: Zaznacz cały

cd /etc
sed -e '/^exit/d' rc.local > /tmp/rc.local | more
cat /tmp/autostart >> /tmp/rc.local
cat /tmp/rc.local > /etc/rc.local
rm /tmp/rc.local
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Po co tak wymóżdżasz?
Wpisz po prostu wszystko przed już wpisanym exit 0.
djecstasy
Posty: 2
Rejestracja: 08 października 2011, 11:33

Post autor: djecstasy »

markossx pisze:Po co tak wymóżdżasz?
Wpisz po prostu wszystko przed już wpisanym exit 0.
Czyli jak?
Awatar użytkownika
Yampress
Administrator
Posty: 6422
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Tylko, że takie rozwiązanie daje to że coś uruchamia się na końcu, a nie w kolejności jaki umożliwia start, tak jak jest w Debianie.

Kod: Zaznacz cały

root@debian:/home/yampress# cat /etc/rc.local
#!/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.

exit 0
root@debian:/home/yampress# 
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Yampress - domyślnie na końcu. Możesz to przenicować również na początek jak chcesz. Ale od tego są skrypty startowe i i ich struktura. djecstasy ma inny problem moim zdaniem.
ODPOWIEDZ