CRON jak uruchamiac plik od razu po zapisie

CRON jak uruchamiac plik od razu po zapisie

Wątek przeniesiony 2021-01-24 20:40 z Webmastering przez Patryk27.

SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:143
0

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?

Silv
@sentence: dlaczego to jest w kategorii Webmastering? Czy chodzi Ci o cron na Linuxie?
SE
tak, chodzi o cron na Linuxie
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
3

Brzmi na problem X/Y - co próbujesz osiągnąć?


BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
3
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


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 2 godziny
  • Postów:2364
0

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:

Kopiuj
#!/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.

edytowany 1x, ostatnio: yarel
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:143
1

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.

edytowany 1x, ostatnio: sentence
BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
1

@sentence:

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.


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
edytowany 2x, ostatnio: BraVolt
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:143
0
BraVolt napisał(a):

@sentence:

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.

BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
0

@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"?


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
SE
skrypty za każdym razem uruchamiają się z innymi parametrami które wpisuje sam, wiec muszę to włączać ręcznie, ja chce to tylko uruchomić od razu po zapisaniu w cron , jak nie ma wbudowanej takiej możliwości to będe miał trochę więcej pracy i wypowiedzianych kur maciów
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 18 godzin
  • Postów:3454
3

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.

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
2

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?


edytowany 3x, ostatnio: Patryk27
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:143
0
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.phpale wcronmiałbym lepsza czytelność tego co już kiedyś uruchamiałem, a że wiem żecron``` 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.

edytowany 1x, ostatnio: sentence
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
4

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:

Kopiuj
#/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ą:

Kopiuj
./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ść ;-)


edytowany 7x, ostatnio: Patryk27
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:143
0
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...

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
3

Możesz wykorzystać &, aby uruchomić polecenie w tle (np. php dlugi-proces.php &).


jurek1980
Ale to tylko uruchamia w tle. On chce zrobić coś ala multitasking. Tak dojdzie do skryptu uruchamianego z Crona, w którym przy użyciu shell_exec(PHP skrypt.php &) uruchomi X skryptów na raz. Nie wiem czy to dobre podejście. Moim zdaniem nie.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)