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
[i]// [tt]bbcode[/tt] — ArnVaker[/i]
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
#.....
[b]/usr/local/bin/czas.sh &[/b]
exit 0[/quote]
Skrypt wsadź do folderu [b]/usr/local/bin[/b] - to jest miejsce na takie skrypty.
Ważny jest ampersand ([b]&[/b]), żeby skrypt nie zatrzymał startu komputera.
To by było na tyle
;-)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
[quote=Kamil2685]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
[/quote]
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 [tt]/etc/init.d/skeleton[/tt] 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
[quote=winnetou]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.[/quote]
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
[quote=winnetou]@thal - w sumie ;) najciemniej pod latarnią xD Nie wiem dlaczego ale na najprostsze rozwiązania wpadam na końcu albo wcale ;)[/quote]
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.
[quote=Kamil2685]np. to w wyniku wywołania skryptu w sposób: ./skrypt par1 par2
otrzymam coś takiego:
par1 par20[/quote]
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 ;)[/quote]
jest elastyczne i w takich przypadkach powinieneś je stosować unikając rozwiązań na sztywnoOstatnio edytowany przez thalcave (2011-06-21 21:18:00)
linux register user: 484281
"[i]It's great to be here. It's great to be anywhere[/i]"
[b]Keith Richards[/b]
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00012 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00152 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.118.255.161' WHERE u.id=1 |
0.00082 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.118.255.161', 1738275002) |
0.00069 | SELECT * FROM punbb_online WHERE logged<1738274702 |
0.00098 | SELECT topic_id FROM punbb_posts WHERE id=175858 |
0.00011 | SELECT id FROM punbb_posts WHERE topic_id=19215 ORDER BY posted |
0.00058 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19215 AND t.moved_to IS NULL |
0.00019 | SELECT search_for, replace_with FROM punbb_censoring |
0.00098 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19215 ORDER BY p.id LIMIT 0,25 |
0.00093 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19215 |
Total query time: 0.007 s |