Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam, na pewno wątek poruszany już wiele razy ale nie mogę znaleźć nic co mi WPROST powie jak dodać skrypt w taki sposób aby uruchamiał się podczas startu systemu Debian 6.0.1a. Sprawa polega na tym że mam skrypt, kopiuję go do /etc/init.d/skrypt.sh, nadaje prawa do wykonania i uruchamiam polecenie:
update-rc.d /etc/init.d/czas.sh defaults 20
a w rezultacie otrzymuje błedy:
update-rc.d: using dependency based boot sequencing update-rc.d: error: unable to read /etc/init.d//etc/init.d/czas.sh
Czytalem cos ze skrypt powinien wygladac tak jak te w init.d ale nie mam pojecia jak to przeksztalcic, da sie to jakos obejsc?
Pozdrawiam
Tresc skryptu:
#!/bin/bash ### BEGIN INIT INFO # Provides: czas.sh # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: czas.sh # Description: czas.sh ntpdate -u tempus1.gum.gov.pl # [ 212.244.36.227 ] #ntpdate -u tempus2.gum.gov.pl [ 212.244.36.228 ] # ntpdate -u ntp.task.gda.pl hwclock --systohc
// bbcode — ArnVaker
Offline
Nie lepiej wywołać go w z poziomu /etc/rc.local
Dopisujesz go przed & exit0 w /etc/rc.local i gotowe.
Wpis ma wyglądać tak:
#!/bin/sh -e
#.....
/usr/local/bin/czas.sh &
exit 0
Skrypt wsadź do folderu /usr/local/bin - to jest miejsce na takie skrypty.
Ważny jest ampersand (&), żeby skrypt nie zatrzymał startu komputera.
To by było na tyle
;-)
Offline
Kamil2685 napisał(-a):
Sprawa polega na tym że mam skrypt, kopiuję go do /etc/init.d/skrypt.sh, nadaje prawa do wykonania i uruchamiam polecenie:
Kod:
update-rc.d /etc/init.d/czas.sh defaults 20a w rezultacie otrzymuje błedy:
Kod:
update-rc.d: using dependency based boot sequencing update-rc.d: error: unable to read /etc/init.d//etc/init.d/czas.sh
Sądząc po komunikacie błędu, powinieneś zrobić
update-rc.d czas.sh defaults 20
Ale ja się tam nie znam, swój jeden skrypt z init.d napisałem na podstawie /etc/init.d/skeleton i dodałem z poziomu sysv-rc-conf.
Offline
Ja zawsze dodaję tak jak kolega wyżej napisał:
update-rc.d czas.sh defaults 20
I jak dotąd zawsze działa ;)
Pozdrawiam
Offline
W skrypcie startowym, zaraz po #!/bin/bash trzeba dodać nagłówek :
### BEGIN INIT INFO # Provides: skrypt # Required-Start: patrz_niżej_co tu dodać # Required-Stop: patrz_niżej_co_tu_dodać # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: proba # Description: Enable service provided by daemon. ### END INIT INFO
Gdy w sekcji Required dodamy :
$local_fs $all – dopisane zostanie na samym końcu
$remote_fs $syslog – dopisane zostanie z „numerem 19”
Zostawiając sekcje pustą dostaje „numer 01”
Do startu dodajesz skrypt będąc w katalogu /etc/init.d/ i wydając komende :
update-rc.d moj_skrypt.sh defaults
Edytka
Aj sory nie zauważyłem, że masz nagłówek, więc tylko ostatnie zdanie będzie rozwiązaniem Twojego problemu.
Ostatnio edytowany przez ba10 (2011-06-21 15:04:12)
Offline
Dzięki zrobiłem tak jak poradził mi Jackelex.
Jeszcze jedno pytanie tylko mam związane ze skryptami, a mianowicie jeżeli mam zdefiniowane w skrypcie wykorzystanie powiedzmy np 10 parametrów które wykorzystuje ale wykorzystam tylko 2 np. to w wyniku wywołania skryptu w sposób: ./skrypt par1 par2
otrzymam coś takiego:
par1 par20
skrypt od środka powiedzmy ze zawiera tylko:
echo "$1 $2 $3 $4 $5 $6 $7 $8 $9 $10"
dlaczego to zero jest dodawane na końcu to się domyślam ale jak się go pozbyć przełączniki -c/ -s nie bardzo działają jak to ogarnąć?
Offline
nie rób
echo $zmienna1 $zmienna2....
tylko zrób tak
for i in $@;do echo $i;done
Wtedy wyświetli Ci tylko tyle parametrów i bez dodatków ile podasz do skrzyptu.
Offline
Żadne zero nie jest dodawane, pewnie zamiast $2 wpisałeś $20.
Offline
winnetou napisał(-a):
nie rób
Kod:
echo $zmienna1 $zmienna2....tylko zrób tak
Kod:
for i in $@;do echo $i;doneWtedy wyświetli Ci tylko tyle parametrów i bez dodatków ile podasz do skrzyptu.
albo po prostu
echo "$@"
Offline
@thal - w sumie ;) najciemniej pod latarnią xD Nie wiem dlaczego ale na najprostsze rozwiązania wpadam na końcu albo wcale ;)
Offline
winnetou napisał(-a):
@thal - w sumie ;) najciemniej pod latarnią xD Nie wiem dlaczego ale na najprostsze rozwiązania wpadam na końcu albo wcale ;)
W tym jednym przypadku to rozwiązanie się sprawdzi, ale rzadko kiedy chcesz po prostu wypisać parametry na STDOUT. Zazwyczaj chcesz coś z nimi zrobić. A wtedy i tak musisz użyć pętli. Właśnie dlatego nie wpadłeś na to rozwiązanie — jest równie proste co nieprzydatne.
Kamil2685 napisał(-a):
np. to w wyniku wywołania skryptu w sposób: ./skrypt par1 par2
otrzymam coś takiego:
par1 par20
Nie, otrzymasz
par1 par2 par10
bash nie wie, czy $10 to parametr 10. czy parametr 1. potraktowany jako ciąg znaków z dopisanym zerem na końcu. Uznaje, że chodzi o ten drugi przypadek. Aby go upewnić, że chodzi jednak o pierwszy (czyli 10. parametr pozycyjny) zapisz to:
${10}
Offline
Dziękuje ;*
Pętelka to o wiele lepsze rozwiązanie tylko troszeczkę cięższe ale grunt że działa ;)
Zero wątpliwości jeszcze raz dziękuje za pomoc no i coż temat chyba do zamknięcia ;d
Offline
Pętelka to o wiele lepsze rozwiązanie tylko troszeczkę cięższe ale grunt że działa ;)
jest elastyczne i w takich przypadkach powinieneś je stosować unikając rozwiązań na sztywno
Ostatnio edytowany przez thalcave (2011-06-21 21:18:00)
Offline
Strony: 1