CRON pozostawia śmieci na serwerze - Serwery dedykowane LINUX
Farnell, An Avnet Company   Przedstawicielstwo Handlowe Paweł Rutkowski   Phoenix Contact Sp. z o.o.  

Energetyka, Automatyka przemysłowa, Elektrotechnika

Dodaj firmę Ogłoszenia Poleć znajomemu Dodaj artykuł Newsletter RSS
strona główna GRUPY Serwery dedykowane LINUX CRON pozostawia śmieci na serwerze
REKLAMA
REKLAMA

CRON pozostawia śmieci na serwerze

Awatar użytkownika
AnnaTopczewska

Witam

Mam dostęp do serwera dedykowanego postawionego na linuxie.

Stworzyłam wpis w cronie aby wykonywał mi cyklicznie skrypt php

Jego efektem działania jest plik xml który się codziennie nadpisuje. (tak ma to działać) jednak oprócz wybranego pliku w katalogu głównym serwera powstają puste pliki o nazwie xml.php (tak też nazwałam mój skrypt który wywoływany jest codziennie). Nie wiem skąd to się bierze pewnie coś nie tak jest skonfigurowane przy wget w CRONIE:

0 4 * * * wget -q http://domena.pl/katalog1/katalog2/xml.php /dev/null

może coś źle w parametrach podaję bo to podpowiedziało google ale nie mam pojęcia co.

pomocy!

cytuj pomógł zgłoś nadużycie
Brak awataru
Brak użytkownika

Linia w cronie jest nie-ten-teges - no właśnie przez parametry...

Co jest nie tak? Po kawałku:

`-q` - czasami nie wystarcza do wygłuszenia (tej czy inne) aplikacji, tym bardziej, że - jak widzę - chcemy posiłkować się /dev/null-em

`http://domena.pl/katalog1/katalog2/xml.php /dev/null` - próbuje ściągać do katalogu dwa pliki -- już chyba wszystko jasne...

Prawidłowo powinno być:

0 4 * * * wget -q http://domena.pl/katalog1/katalog2/xml.php -O /dev/null >> /dev/null 2>&1

`>> /dev/null 2>&1` - całkowicie tłumi wyjście (`-q` staje się wtedy zbędne) ale czasami dobrze jest wstawić zamiast tego jakiś konkretny log (przycinany, a jakże, w cronie `/var/tmp/cośtam.log`) - jego lektura oszczędzi nam nerwów gdy "nic się nie sypie, nic nie widać, nic nie działa" :D

cytuj pomógł zgłoś nadużycie
Awatar użytkownika
AnnaTopczewska

Dziękuję za radę, zaraz przestawię CRONA na cykl co 4 minuty i poinformuję o efektach.

Wrzuciłam:

*/4 * * * * wget -q [adres do pliku] -O /dev/null /var/tmp/xmllog.log

wydaje mi się że skrypt jest generowany patrząc po datach plików xml ale nie wiem jak znaleźć ten katalog var/tmp dodam, że go nie stworzyłam tych katalogów w katalogu gdzie leży skrypt niestety obsługa linuxa to dla mnie ciemna magia więc podstawy też trzeba wyłożyć jak dla laika.

nie powinnam użyć gdzieś znacznika ">"?

 

Niestety nic się nie dzieje przy takim wpisie

cytuj pomógł zgłoś nadużycie
Brak awataru
Brak użytkownika

Zdecydowanie tak - przekierowanie jest potrzebne (bo znowu jest sytuacja, w której na końcu linii z poleceniem wisi jakiś plik nie bardzo z nim operacyjnie związany). Czyli:

  • pojedynczy lub podwójny nawias sześcienny prawy (zwany też znakiem większości) pomiędzy `/dev/null` a `/var/tmp/xmllog.log`
  • ewentualnie `2-nawias_sześcienny-ampersand-jeden` (2>&1) za tym wszystkim (po `/var/tmp/...`) żeby wyjście błędów (STDERR) także wygłuszyć do tego samego logu.

Proszę pamiętać, że to test tylko log więc jeśli składowanie go jest kosmicznie trudne - po co się trudzić - zamieniamy `/var/tmp/...` na `/dev/null` i po bólu :D

Druga sprawa - czy odpalanie z poziomu serwera jego własnego (?) skryptu trzeba robić via `wget`? Jeśli nie to `php -f` zupełnie wystarczy...

Poza tym nie wiem gdzie tworzony jest dyskowy plik XML bo nie widziałem kodu ani nie znam konfiguracji serwera ale katalog `/var/tmp` to w *nixach zasadniczo katalog systemowy - "nie trzeba go tworzyć, wszyscy mogą do niego pisać". Tyle teorii i własnych serwerów - w przypadku hostingu może być inaczej a katalog tymczasowy dla danego serwisu może być zlokalizowany gdzieś indziej.

Jeśli jest dostęp do konsoli to proszę spróbować sekwencji:

# dwukropek, nawias sześcienny, ścieżka do pliku, spacje są opcjonalne - to tak gwoli komentarza i czytelności
: >  /var/tmp/plik.tmp
ls -l /var/tmp/plik.tmp

Jeśli polecenie `ls` nie krzyknie informacją o braku pliku (tylko ładnie wypluje info o położeniu i autorze) - jest dobrze. Plik można skasować poleceniem `rm` (`rm /var/tmp/plik.tmp`). Jeśli nie utworzyło pustego pliku - trzeba potestować inne ścieżki (np. `/tmp/plik.tmp`). Chyba nic nie stoi na przeszkodzie aby utworzyć taki roboczy katalog obok skryptów .php (w `public_html`? nie wiem jaka jest struktura...) - tylko trzeba pamiętać o jego regularnym opróżnianiu i zabezpieczeniu przed zapisem/odczytem z poziomu witryny/innych miejsc.

W fopen() oczywiście można podać bezwzględną ścieżkę dla wynikowego XML-a (`/home/pub/cośtam/xml-e/plik2010.xml`) albo względną (`./xml-e/plik2010.xml`) i tylko na początku skryptu konieczne jest przeniesienie się do odpowiedniego katalogu.

PS: Korzystanie z tego forumowego edytora to dla mnie `pita`... :/

cytuj pomógł zgłoś nadużycie
Awatar użytkownika
AnnaTopczewska

Dziękuję Ci bardzo za dobre wyłożenie tematu. Ustawiłam CRON'a tak jak należy, na razie nie miałam czasu bawić się w logi, ale wynikowy plik jest jak najbardziej w porządku i śmieci oczywiście nie powstają.

Niedługo wrócę do tematu logów z dwóch powodów:

  1. zawsze można się czegoś nowego nauczyć
  2. logi czasem się przydają

Dziękuję jeszcze raz.

cytuj pomógł zgłoś nadużycie
odpowiedz
REKLAMA
Nasze serwisy:
elektrykapradnietyka.com
przegladelektryczny.pl
rynekelektroniki.pl
automatykairobotyka.pl
budowainfo.pl