Witam,
Czy jest możliwość uruchamiania pliku w cron od razu po zapisie? w sensie że podaje tylko ścieżke i jak wyjdę i zapisze to się od razu uruchamia. Wiem że mogę podać dokładna godzinę i się uruchomi, ale czy jest możliwość zrobić to od razu po zapisie W CRONIE?
- Rejestracja:ponad 6 lat
- Ostatnio:3 miesiące
- Postów:143

- Rejestracja:prawie 6 lat
- Ostatnio:prawie 4 lata
- Lokalizacja:Warszawa
- Postów:2918
sentence napisał(a):
czy jest możliwość zrobić to od razu po zapisie W CRONIE?
Jak ustawisz raz w tygodniu w niedziele o 20-stej i będzie dochodzić 20-sta to tak.
Jak nie, to pewnie i tak masz skrypt my_script.sh którego nazwę dajesz z crontab -e więc z palca pierwszy raz uruchom ./my_script.sh i to wszystko.
Następne wywołania pójdą jak je ustawiłeś crontab -l
- Rejestracja:prawie 10 lat
- Ostatnio:22 minuty
- Postów:2364
Możesz sobie prosty wrapper zrobić, który doda skrypt do crona i wywoła go po dodaniu.
dodajDoCronaNastepnieUruchom.sh <harmonogram> <sciezka do srkyptu>
Szkielet:
#!/usr/bin/env bash
SCRIPT="/foo/bar.sh"
SCHEDULE="0 22 * * *"
crontab -l > new_cron.txt
echo "${SCHEDULE} ${SCRIPT}" >> new_cron.txt
crontab new_cron.txt
echo "Wykonuje $SCRIPT"
$SCRIPT
edited:
Nie zmienia to faktu, że funkcjonalność jaką chcesz mieć jest mega dziwna.
- Rejestracja:ponad 6 lat
- Ostatnio:3 miesiące
- Postów:143
Dodaje do cron
bardzo dużo plików które chce uruchomić od razu po dodaniu. Załóżmy, że w momencie wprowadzania jest godzina 20:01 i 50 sekund, w momencie wpisywania ścieżki i dokładnej daty z godziną uruchomienia 20:02 czas się zmienia, więc już muszę ustawić godzinę 20:03 zapisuje i wychodzę i czekam prawie minute żeby o 20:03 się skrypt odpalił. Może problem wydaje się śmieszny ale dużo plików tak uruchamiam i często się łapie że muszę czekać prawie minute na uruchomienie, gdzie zależy mi żeby to było uruchomione od razu. Wiem że mogę uruchomić od razu przez php nazwapliku.php
ale w cron
miałbym lepsza czytelność tego co już kiedyś uruchamiałem, a że wiem że cron
ma możliwość uruchomień na różne sposoby to chciałem się dowiedzieć czy jest sposób aby podać tylko ścieżkę a w momencie wyjścia plik się uruchamia od razu. Nie znalazłem w necie więc postawiłem napisać tu.

- Rejestracja:prawie 6 lat
- Ostatnio:prawie 4 lata
- Lokalizacja:Warszawa
- Postów:2918
Dodaje do cron bardzo dużo plików
Co ty chcesz robić? I co uzyskać?
https://serverfault.com/questions/85341/crontab-size-limit
Recent (2011) Ubuntu Debian is limited to 256 (and I just ran into that). FreeBSD will happily accept 600 entries. I haven't checked beyond that, but 600 crontab entries ought to be enough for anyone :)
Nie będę się spierać o liczbę i limit, bo nie jestem adminem, nie wrzucałem w crontab więcej od 1, 3 pozycje.
- Rejestracja:ponad 6 lat
- Ostatnio:3 miesiące
- Postów:143
BraVolt napisał(a):
Dodaje do cron bardzo dużo plików
Co ty chcesz robić? I co uzyskać?
https://serverfault.com/questions/85341/crontab-size-limit
Recent (2011) Ubuntu Debian is limited to 256 (and I just ran into that). FreeBSD will happily accept 600 entries. I haven't checked beyond that, but 600 crontab entries ought to be enough for anyone :)Nie będę się spierać o liczbę i limit, bo nie jestem adminem, nie wrzucałem w crontab więcej od 1, 3 pozycje.
Limitów nie przekraczam bo skrypty po uruchomieniu działają parę minut, więc aktywnych ostatecznie nie ma tak dużo. Myślałem, że na takie kombinacje uruchomień znajdzie się możliwość uruchomienia od razu po zapisie, ale widzę że nie ułatwię sobie życia.

- Rejestracja:prawie 6 lat
- Ostatnio:prawie 4 lata
- Lokalizacja:Warszawa
- Postów:2918
@sentence: Wszystko się da, nawet okopać saperką w kałuży.
Tylko nie zawsze opłaca się czekać aż zamarznie albo ludzie wymyślą "sposoby".
cron Initial release May 1975; 45 years ago
Fajne narzędzie do wykonywania w określonych odstępach czasowych powtarzalnych zadań.
Twoje wymagania to bardziej IMO Batch processing
https://en.wikipedia.org/wiki/Batch_processing
bo jak rozumiem "sbkrypty po uruchomieniu działają parę minut"?
cron
, jak nie ma wbudowanej takiej możliwości to będe miał trochę więcej pracy i wypowiedzianych kur maciów

- Rejestracja:ponad 8 lat
- Ostatnio:około 16 godzin
- Postów:3454
W powiązaniu z tym :https://4programmers.net/Forum/PHP/348690-uruchamianie_nowego_skryptu_podczas_wykonywania_kodu?p=1741753#id1741753 w końcu zabijesz serwer.
Trzeba wymyśleć inne sposoby rozwiązania problemu.
- Rejestracja:ponad 6 lat
- Ostatnio:3 miesiące
- Postów:143
Patryk27 napisał(a):
zależy mi żeby to było uruchomione od razu
W jakim celu zatem wrzucasz te swoje skrypty do crontaba - dlaczego nie uruchomisz ich od razu, z pominięciem crona?
Odpowiedz:
sentence napisał(a):
Wiem że mogę uruchomić od razu przez ```
php nazwapliku.php
ale w
cronmiałbym lepsza czytelność tego co już kiedyś uruchamiałem, a że wiem że
cron``` ma możliwość uruchomień na różne sposoby to chciałem się dowiedzieć czy jest sposób aby podać tylko ścieżkę a w momencie wyjścia plik się uruchamia od razu. Nie znalazłem w necie więc postawiłem napisać tu.
cron służy do uruchamiania poleceń o określonych godzinach - nie powinieneś wykorzystywać go jako dziennika zdarzeń "bo crontab zapisuje listę poleceń"; to trochę jak gdybyś próbował z zegarka zrobić pamiętnik, ew. próbował wysłać e-maila poprzez wydrukowanie go i nadanie Pocztą Polską.
Jeśli zależy Ci wyłącznie na trzymaniu historii poleceń (a nie uruchamianiu ich o konkretnych godzinach), najprościej będzie napisać skrypt w stylu:
#/usr/bin/env bash
CMD="$@"
echo "$(date) | ${CMD}" >> /var/log/commands.log
bash -c "${CMD}"
... mając taki skrypt, każde polecenie uruchomione za jego pomocą:
./log /usr/bin/my-command.sh
... zostanie zalogowane do /var/log/commands.log
.
Jak już wspomniałem, ten wątek to idealny przykład https://xyproblem.info/ - pamiętaj na przyszłość ;-)
- Rejestracja:ponad 6 lat
- Ostatnio:3 miesiące
- Postów:143
Patryk27 napisał(a):
zależy mi żeby to było uruchomione od razu
W jakim celu zatem wrzucasz te swoje skrypty do crontaba - dlaczego nie uruchomisz ich od razu, z pominięciem crona?
Minusem dla mnie również jest to że gdy mam parę plików które nie uruchamiają się od razu, to po wykonaniu polecenia php nazwapliku.php
nie uruchomię kolejnego bo muszę czekać aż ten się wykona...
Możesz wykorzystać &
, aby uruchomić polecenie w tle (np. php dlugi-proces.php &
).

cron
na Linuxie?