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
Serwus! Szczerze mówiąc mam małe obawy zakładając ten temat, ponieważ już jutro od około godziny 9.ej rano, nie będę miał fizycznego dostępu do laptopa na którym działa Squeeze. Nie mam także możliwości, aby wykorzystać np. ssh etc,. Odległość jest imponująca bowiem wynosić będzie w przybliżeniu 300 km. Moja obawa wynika z prostej przyczyny; istnieje możliwość, że nie uda mi się do rana rozwiązać problemu, który de facto pojawił się dzisiaj. Nie wiem, również, czy właściwym jest zakładanie tego tematu. Niemniej, postanowiłem spróbować.
Potrzebuję, aby pewien, krótki składniowo skrypt był uruchamiany każdego dnia. W celu osiągnięcia tego, wydawało by się, prostego zamiaru utworzyłem testowy plik w katalogu /etc/cron.daily/test.sh, którego zadaniem było utworzenie pliku test w katalogu domowym użytkownika z treścią w stylu plik testowy do sprawdzenia crona etc,. Oczywiście nadałem mu prawo do wykonywania via 'chmod +x' oraz zmieniłem prawo dostępu poprzez 'chmod 755' (podobnie jak wszystkie pliki w katalogu /etc/cron.daily). Niestety, po ponownym uruchomieniu się komputera w/w pliku nie było w katalogu domowym, czyli cron nie zadziałał. Szukając rozwiązania tego problemu za pomocą internetu, wpadłem na taką możliwość, że pliki z końcówką .sh nie są wykonywane przez mechanizm cron. Padła nawet konkluzja iż jest to bug Debiana. Któż wie? Być może tak jest. Tak więc, postanowiłem zmienić nazwę pliku test.sh na test. Niestety, to również nie odniosło skutku.
Usługi takie jak at, crontab, anacron są zainstalowane i uruchamiane wraz ze startem systemu (system > administracja > usługi, zaznaczone w/w usługi). Wydaje się, że pomimo komunikatu Starting Anacron owa usługa działa, ale zobaczcie co się dzieje, kiedy sprawdzam jej działanie:
/* ** $ps auxxx |grep anacron ** remi 2472 0.0 0.0 3320 792 pts/0 S+ 19:09 0:00 grep --color=auto anacron */
Jak widać usługa anacron wydaje się, nie być uruomiona. Natiomiast usługi, sprawdzone tym samym sposobem, at, crontab działają, są uruchomione. Nie wiem, czy anacron może mieć jakikolwiek wpływ na ową zagwozdkę. Pomyślałem, że może plik /etc/anacrontab może mieć coś wspólnego z tym 'problemem', ale jego treść wydaje się być poprawna, prawda?
/* ** # These replace cron's entries ** 1 5 cron.daily nice run-parts --report /etc/cron.daily */
Być może za szybko panikuję i wystarczyło by uruchomić crontab -e i dodać odpowiednie wpisy np. w tym stylu; 1-31 1-12 0-6 root sh /etc/cron.daily/test lub */5 * * * * root sh /etc/cron.daily/test. Podobnie do powyższego istnieją również specjalne łańcuchy, które mogą być stosowane: @daily #Wykonaj raz dziennie [0 0 * * *]. Przeglądając pliki logów, jedynie /var/log/syslog zawiera jakieś informacje dot. cron'a, ale nie jestem pewien, czy obejmuje coś ważnego, coś, co może pomóc w rozwiązaniu tego zagadnienia.
Oct 20 17:17:06 debian anacron[1415]: Job `cron.daily' terminated Oct 20 17:17:06 debian anacron[1415]: Job `cron.weekly' started Oct 20 17:17:06 debian anacron[2698]: Updated timestamp for job `cron.weekly' to 2012-10-20 Oct 20 17:28:32 debian /usr/sbin/cron[1448]: (CRON) INFO (pidfile fd = 3) Oct 20 17:28:32 debian /usr/sbin/cron[1449]: (CRON) STARTUP (fork ok) Oct 20 17:28:32 debian /usr/sbin/cron[1449]: (CRON) INFO (Running @reboot jobs) Oct 20 17:36:26 debian anacron[1915]: Anacron 2.3 started on 2012-10-20 Oct 20 17:36:26 debian anacron[1915]: Normal exit (0 jobs run) Oct 20 17:43:34 debian crontab[2420]: (root) LIST (root) Oct 20 17:43:39 debian crontab[2422]: (root) BEGIN EDIT (root) Oct 20 17:46:01 debian crontab[2422]: (root) END EDIT (root) Oct 20 17:48:44 debian anacron[1385]: Anacron 2.3 started on 2012-10-20
Note: jeżeli uruchomię ten skrypt /etc/cron.daily/test klikając na niego 2.wu krotnie i wybierając opcję 'uruchom w terminalu' (w środowisku GNOME 2.30 po kliknięciu na skrypt pojawia się okno z możliwością wyboru kilku opcji), to działa! Tworzy plik w katalogu domowym.
Ostatnio edytowany przez remi (2012-11-01 11:08:29)
Offline
Dlaczego nie wpiszesz w
crontab -e
Sciezki do skryptu.
W układzie
20 20 * * * /sciezka/skrypt
Powinno codziennie o 20.20 wykonać ten skrypt.
Offline
Cześć ilin. W moim pierwszym poście, również rozważałem możliwość wykorzystania mechanizmu crontab -e. Problem jednak w tym, że trudno mi określić, zgadnąć, czy komputer będzie uruchomiony akurat o godzinie 20:20. Bardziej interesuje mnie zapis dot. wykonywania skryptu każdego dnia, ale bez określenia stałej godziny, rozumiesz? Skoro schemat wygląda w ten oto sposób;
* * * * * polecenie do wykonania
- - - - -
| | | | |
| | | | +----- dni tygodnia (0-6) sunday = 0
| | | +------- miesiąc (1 - 12)
| | +--------- dni miesiąca (1 - 31)
| +----------- godzina (0 - 23)
+------------- minuta (0 - 59)
To wydaje się - według mnie -, że odpowiednim wpisem może okazać się, ale oczywiście mogę się mylić, coś w ten deseń ; 0-6 1-12 1-31 0-23 0-59 root sh /etc/cron.daily/test. Co o tym sądzisz? A może wystarczy tylko zastosować taką metodę?; * * * * * root sh /etc/cron.daily/test?
Niemniej, dalej pozostaje otwarta kwestia dot. problemów z wykonaniem skryptu, który powinien być uruchamiany np. co tydzień, czy jak w moim przypadku, każdego dnia z wykorzystaniem mechanizmu Cron. Czyżby jest to wynikiem problemu (bug) w Debianie? Może warto przyjrzeć się np. Bug Tracking System?
Pozdrawiam!
Ostatnio edytowany przez remi (2012-10-20 23:02:36)
Offline
Jak dasz * na początku to będzie wykonywał skrypt co minute, ale możesz spróbować czegoś takiego :
0 0 * * *
albo uruchamiaj skrypt przy starcie systemu.
Ostatnio edytowany przez ba10 (2012-10-21 00:02:58)
Offline
remi napisał(-a):
Niestety, po ponownym uruchomieniu się komputera w/w pliku nie było w katalogu domowym, czyli cron nie zadziałał.
Z której strony niewykonanie skryptu z cron.daily w wyniku restartu systemu jest dowodem na niedziałanie Crona?
remi napisał(-a):
Szukając rozwiązania tego problemu za pomocą internetu, wpadłem na taką możliwość, że pliki z końcówką .sh nie są wykonywane przez mechanizm cron. Padła nawet konkluzja iż jest to bug Debiana. Któż wie? Być może tak jest.
To nie kwestia sh, tylko kropki. I to nie jest żaden bug.
man cron napisał(-a):
As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conform to the filename requirements of run-parts: they must be entirely made up of letters, digits and can only contain the special signs underscores ('_') and hyphens ('-'). Any file that does not conform to these requirements will not be executed by run-parts. For example, any file containing dots will be ignored. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron.d/ as configuration files (i.e. files ending in .dpkg-dist, .dpkg-orig, and .dpkg-new).
BTW, wszystkie wymagania z cytowanego fragmentu spełniasz?
remi napisał(-a):
Nie wiem, czy anacron może mieć jakikolwiek wpływ na ową zagwozdkę.
man cron napisał(-a):
Support for /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly and /etc/cron.monthly is provided in Debian through the default setting of the /etc/crontab file (see the system-wide example in crontab(5)). The default sytem-wide crontab contains four tasks: run every hour, every day, every week and every month. Each of these tasks will execute run-parts providing each one of the directories as an argument. These tasks are disabled if anacron is installed (except for the hourly task) to prevent conflicts between both daemons.
aptitude show anacron napisał(-a):
Anacron (like "anac(h)ronistic") is a periodic command scheduler. It executes commands at intervals specified in days. Unlike cron, it does not assume that the system is running continuously. It can therefore be used to control the execution of daily, weekly, and monthly jobs (or anything with a period of n days), on systems that don't run 24 hours a day. When installed and configured properly, Anacron will make sure that the commands are run at the specified intervals as closely as machine uptime permits.
This package is pre-configured to execute the daily jobs of the Debian system. You should install this program if your system isn't powered on 24 hours a day to make sure the maintenance jobs of other Debian packages are executed each day.
Czyli powinno być OK, zatem wracamy do dwóch pytań powyżej.
remi napisał(-a):
Bardziej interesuje mnie zapis dot. wykonywania skryptu każdego dnia, ale bez określenia stałej godziny, rozumiesz?
Zadania z cron.daily normalnie też są wykonywane o stałej godzinie, sytuację zmienia dopiero Anacron.
remi napisał(-a):
Niemniej, dalej pozostaje otwarta kwestia dot. problemów z wykonaniem skryptu, który powinien być uruchamiany np. co tydzień, czy jak w moim przypadku, każdego dnia z wykorzystaniem mechanizmu Cron. Czyżby jest to wynikiem problemu (bug) w Debianie? Może warto przyjrzeć się np. Bug Tracking System?
Mało prawdopodobne aby w stabilnym wydaniu Debiana nie działał Cron. ;)
Offline
Arn napisał(-a):
Z której strony niewykonanie skryptu z cron.daily w wyniku restartu systemu jest dowodem na niedziałanie Crona? (...) To nie kwestia sh, tylko kropki. I to nie jest żaden bug.
Hej, po prostu podczas pierwszej próby sprawdzenia tego 'skryptu', wykorzystałem plik test.sh. Po ponownym uruchomieniu, skrypt nie zadziałał (nie utworzył pliku w katalogu domowym), czyli - według mnie - cron go nie odpalił. Dopiero szukając w sieci, znalazłem info, że pewien użytkownik po usunięciu z nazwy pliku .sh opisał to jako rozwiązanie swojego problemu, podobnego bądź co bądź do mojego. W jego przypadku, skrypt z katalogu /etc/cron.daily/ również nie odpalał się każdego dnia, póki nie zmienił nazwy - usunął końcówkię .sh. Niestety w moim przypadku to nie pomogło. Cieszę, że nie jest to żaden bug.
Arn napisał(-a):
BTW, wszystkie wymagania z cytowanego fragmentu spełniasz?
Tak Arn, myślę, że spełniam te wymagania; plik o nazwie test, be executable, be owned by root, not be writable by group or other etc. Ciekawe zdanie ze strony podręcznika cron; (...) These tasks are disabled if anacron is installed (except for the hourly task) to prevent conflicts between both daemons. Wynika z tego, że jeżeli anacron jest zainstalowany (w tym przypadku jest), to zadania typu; run every hour, every day, every week and every month, nie będą wykonywane. No cóż, wydaje mi się, że mam zbyt mało czasu, aby to ogarnąć. Gdyby ten problem wyskoczył kilka dni wcześniej...
Sprawdziła się rzecz o której nie chciałem pisać, ponieważ wydawała mi się dosyć głupia. Otóż, myślałem, że skoro Cron ma wykonać zadanie każdego dnia, to oznacza, że zrobi to zaraz po włączeniu komputera, prawda? A jednak nie! Przed chwilą sprawdziłem katalog domowy użytkownika a tam... plik utworzony przez testowy skrypt. Wygląda na to, że cron wykonał zadanie jakiś czas po włączeniu systemu. Działa! Kolejna kompromitacja z mojej strony.
Dziękuję za odpowiedzi a szczególnie Arnowi za przypomnienie o istnieniu stron podręcznika. ;-)
Ostatnio edytowany przez remi (2012-10-21 12:02:46)
Offline
remi napisał(-a):
Po ponownym uruchomieniu, skrypt nie zadziałał (nie utworzył pliku w katalogu domowym), czyli - według mnie - cron go nie odpalił.
Ale dlaczego miałby go według Ciebie odpalić po restarcie?
remi napisał(-a):
Ciekawe zdanie ze strony podręcznika cron
Pisałem wyżej o tym… Gdy Anacron jest zainstalowany, to przejmuje harmonogram wykonywania zadań (poza hourly).
Offline
Serwus Arn. Dlaczego skrypt miał być uruchomiony po restarcie, tudzież uruchomieniu komputera? Wiesz, szczerze mówiąc, to nie mam pojęcia. Tak mi się po prostu wydawało i jak się okazało było to błędne założenie. Każdego dnia, wcale nie oznacza wykonania zadania od razu, np. po zalogowaniu się do systemu. Teraz to rozumiem i wiem, że wszystko jest okay.
Offline
Heh, niezły poślizg w odpowiedzi. ;)
Offline
Hmm, no wiesz, jak to mówią; "lepiej późno niż wcale", right? ;-)
Offline
Indeed. :)
Offline
Strony: 1