Skocz do zawartości

Cron


MC'

Rekomendowane odpowiedzi

Witam.

wydaje mi się, że nie widzę jakiejś oczywistości w tym co robię bo sprawa jest błaha. Otóż dodałem sobie plik /etc/cron.d/plik z wpisem testowym:

* * * * * /bin/echo "*********************************************************"

Czyli co minutę powinien wyświetlać mi gwiazdki. Niestety ten skomplikowany system ;) nie działa tak jak sie tego spodziewam hehe w czym tkwi problem?

Mało tego jeśli dodam ten sam wpis przez crontab również nic nie jest drukowane na konsole...

Odnośnik do komentarza
Udostępnij na innych stronach

uruchom konsole (moze byc jakis emulator typu gnome-terminal), sprawdz co to za urzadzenie (komenda "tty") i w cronie (crontab -e) wpisz

 * * * * * /bin/echo "***********************" > /dev/pty/0

Oczywiscie /dev/pty/0 to przyklad - wpisz to co zwróci "tty". Nie wylaczaj tego terminala i cierpliwie czekaj ;)

 

[EDIT]

A jak do pliku, to musisz podac pelna sciezke dostepu. Tak jak to zrobiles z poleceniem "echo".

Odnośnik do komentarza
Udostępnij na innych stronach

wszystko działa ok (przy użyciu polecenia crontab -e) tzn nawet nie trzeba pełnej ścieżki do echo bo już jest podana w zmiennej PATH z /etc/crontab.

Niestety tworząc sobie plik /etc/cron.d/cron.RootConfigsCron i umieszczając w nim dokładnie tą samą formułę nic się nie dzieje?

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety tworzac sobie plik /etc/cron.d/cron.RootConfigsCron i umieszczajac w nim dokladnie ta sama formule nic sie nie dzieje?
A masz pusta linie na koncu tego pliku?

 

[EDIT]

A przede wszystkim zobacz kto jest wlascicielem tego pliku i z konto wlasciciela sprawdz czy widac polecenie ("crontab -l" - male L) i czy wlasciciel pliku nie dostal poczty systemowej z informacja o bledzie ("mail")

[EDIT2]

I jeszcze jedno - prawa do pliku powinny byc 600

Odnośnik do komentarza
Udostępnij na innych stronach

hehe no dobra .. jeszcze pliki to potrafię wyświetlić i wartości crontaba ;) Plik wygląda tak:

* * * * * /bin/echo "*********************************************************" > /root/aaaa

a crontaba wyzerowałem przez '-r' bo nie chce by dziłał crontab tylko plik z /etc/crond ;)

 

 

PS a po co Ci był VirtualBox?

Odnośnik do komentarza
Udostępnij na innych stronach

[...]bo nie chce by dziłał crontab tylko plik z /etc/crond ;)
Szczerze mówiąc nie próbowałem nigdy uruchamiać crona inaczej niż przez crontab. Pewnie żeby to zrobić "ręcznie" tak jak próbujesz trzeba zainicjować jakieś inne pliki, ale nie wiem jak. Zawsze korzystając z pliku robiłem po prostu "crontab <plik>" i wszystko działało. Albo edytowałem bezpośrednio przez "crontab -e".

 

PS a po co Ci był VirtualBox?
Bo w pracy wyglądam na świat przez okna :P
Odnośnik do komentarza
Udostępnij na innych stronach

Jesli móglbym cos zasugerowac :)

 

Kiedy korzystasz z polecenia crontab wówczas cron wprowadza zmiany dla konkretnego usera w pliku /var/spool/cron/user

 

Natomiast kiedy korzystasz:

  • z pliku /etc/crontab
  • z plików w katalogu /etc/cron.d (wliczajac w to cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/)

to musisz okreslic usera np.

$ cat /etc/cron.d/sysstat 
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1
# 0 * * * * root /usr/lib64/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A


$ cat /etc/cron.d/vnstat
MAILTO=root
# to enable interface monitoring via vnstat remove comment on next line
*/5 * * * *  vnstat /usr/sbin/vnstat.cron

 

 

[EDIT]

a tak na marginesie, jak chcesz cos wyslac na konsole to proponuje

man wall

man write

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

 

Natomiast kiedy korzystasz:

  • z pliku /etc/crontab
  • z plików w katalogu /etc/cron.d (wliczajac w to cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/)
     

to musisz okreslic usera np.

Piwo dla borza trafiony zatopiony! :D o to chodzilo. Cala reszte znalem i rozumialem ale tego mi w dokumentacjach i tutakach zabraklo :D

[EDIT]

a tak na marginesie, jak chcesz cos wyslac na konsole to proponuje

man wall

man write

hehe wiem ale to chodzilo o test crona jakis prosty wiec wywalalem na konsole :D

Teraz mam tylko jedne problem w pliku /etc/crontab jest zmienna path ustawiona tak:

PATH=/sbin:/bin:/usr/sbin:/usr/bin

z tego co napisano w tutorialach pliki z /etc/cron.d/xxx maja taka sama skladnie. Wiec jesli dam:

PATH=$PATH:/root/configs/cron

w takim pliku xxx to zmienna PATH powinna zawierac katalog configs z którego bezposrednio moge wywolywac polecenia zawarte w postaci skryptów w /root/configs/cron a niestety to nie dziala. PLiki wygladaja tak:

/etc/cron.d/xxx

       PATH=$PATH:/root/configs/cron
       * * * * * root ./odswiezacz.sh

/root/configs/cron/odswiezacz.sh:

#!/bin/bash
# Test Crona ----------------------------
       echo '*******************************************************' >> /dev/pts/0;

Odnośnik do komentarza
Udostępnij na innych stronach

1. Jeśli podam ścieżkę bezwzględną i zakometuję zmienną PATH to idzie poprawnie ale dalej nie działa tak jak bym chciał elegancko z dodaniem do zmiennej PATH po prostu ścieżki i następnie wywoływaniem względnym.

 

2.Nawet jak już działa plik odświezacz.sh to wydanie w nim polecenia:

sh /root/configs/iptables_conf.sh

Nie wywołuje skryptu. tzn w regułach iptables nie zachodzą zmiany mimo że np wyświetlenie gwiazdek zadziała (?)

Odnośnik do komentarza
Udostępnij na innych stronach

@borzole

No tak tyle ze PATH w /etv/crontab nie uzywa export ;) Dodatkowo zmienna PATH z crontab jest inna niz systemowa ;)

 

 

Co ciekawe co jakis czas cron mi spamuje maila /var/spool/mail/root co minute czyli tak ajk wykonuje skrypt odswiezacz.sh komunikatami tej tresci:

  ----- The following addresses had permanent fatal errors -----
<root@xxx>
   (reason: 550 Host unknown)

  ----- Transcript of session follows -----
550 5.1.2 <root@xxx>... Host unknown (Name server: xxx: host not found)

--o97EF1Dr021330.1286460901/yyy.localdomain
Content-Type: message/delivery-status

Reporting-MTA: dns; yyy.localdomain
Received-From-MTA: DNS; localhost.localdomain
Arrival-Date: Thu, 7 Oct 2010 16:15:01 +0200

Final-Recipient: RFC822; root@xxx
Action: failed
Status: 5.1.2
Remote-MTA: DNS; xxx
Diagnostic-Code: SMTP; 550 Host unknown
Last-Attempt-Date: Thu, 7 Oct 2010 16:15:01 +0200

--o97EF1Dr021330.1286460901/yyy.localdomain
Content-Type: message/rfc822

Return-Path: <root@xxx>
Received: from xxx (localhost.localdomain [127.0.0.1])
by yyy.localdomain (8.13.8/8.13.8) with ESMTP id o97EF1Dr021328
for <root@xxx>; Thu, 7 Oct 2010 16:15:01 +0200
Received: (from root@localhost)
by xxx (8.13.8/8.13.8/Submit) id o97EF1GJ021327;
Thu, 7 Oct 2010 16:15:01 +0200
Date: Thu, 7 Oct 2010 16:15:01 +0200
Message-Id: <201010071415.o97EF1GJ021327@xxx>
From: root@xxx (Cron Daemon)
To: root@xxx
Subject: Cron <root@xxx> /root/configs/cron/odswiezacz.sh 
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

iptables v1.3.5: Unknown arg `--sport'
Try `iptables -h' or 'iptables --help' for more information.

--o97EF1Dr021330.1286460901/yyy.localdomain--


--o97EF1Ds021330.1286460901/yyy.localdomain--

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...