Jak mogę przechowywać zmienne w moim pliku crontab? Rozumiem, że to nie jest powłoka, ale powiedz, że chcę mieć jakieś stałe, takie jak ścieżka do mojej aplikacji czy coś takiego?Zmienne w crontab?
Myśli?
Jak mogę przechowywać zmienne w moim pliku crontab? Rozumiem, że to nie jest powłoka, ale powiedz, że chcę mieć jakieś stałe, takie jak ścieżka do mojej aplikacji czy coś takiego?Zmienne w crontab?
Myśli?
W Vixie cron, która jest prawdopodobnie najczęstsza, można to zrobić prawie tak samo jak skrypt powłoki.
VARIABLE=value
PATH=/bin:/path/to/doathing
0 0 * * * doathing.sh $VARIABLE
Strona człowiek mówi:
Aktywna linia w crontab będzie być albo ustawienie środowisko lub polecenia cron. Ustawienie zmiennej środowiska jest w postaci
name = value
gdzie przestrzenie wokół równych znaku (=) są opcjonalne, oraz wszelkie niesugerujące przestrzenie w wartości będzie częścią wartości przypisanej nazwy. Ciąg wartości może być umieszczony w cudzysłowie (pojedyncze lub podwójne, ale pasujące), aby zachować początkowe lub końcowe spacje. Łańcuch o nazwie można również umieścić w cudzysłowie (pojedyncze lub podwójne, ale pasujące), aby zachować początkowe, końcowe lub wewnętrzne spacje.
Możesz sprawdzić, czy masz Vixie cron, sprawdzając stronę podręcznika dla crontab
; autorem będzie Paul Vixie. Różne crony mogą, ale nie muszą tego obsługiwać (na przykład cron BusyBoxa, nie), w takim przypadku najlepszą opcją jest zawarcie komendy w skrypcie powłoki i uruchomienie tego skryptu z crona. W rzeczywistości jest to dobre rozwiązanie dla wszystkiego, co skomplikowane.
Nie jestem facetem z unixu, więc nie mogę powiedzieć, że byłbym zdecydowany, ale to brzmi jak dobre miejsce na krok przed procesem.
#define cmdpath /usr/bin/myfolder/cmd
0,30 8-17 * * 1-5 cmdpath
17 3 * * 1 cmdpath
działa, że dzięki moim C++ preprocesora kompilator daje jako:
0,30 8-17 * * 1-5 /usr/bin/myfolder/cmd
17 3 * * 1 /usr/bin/myfolder/cmd
Który Wygląda na to, czego chciał.
Kiedy wszystko, co masz, to młotek, każdy problem wygląda jak gwóźdź. –
To zmienia względny proces edycji pliku crontab z 'crontab -e' na trzyetapowy proces edycji pliku crontab, wywoływanie cpp i instalowanie nowego pliku crontab z crontab $ filename – mkb
@Matt: a) to właśnie skrypty powłoki są dla, i b) ale 'crontab -e' nie robi tego, co chce, więc nie jest to naprawdę odpowiedź. –
Możesz umieścić zmienne środowiskowe w pliku crontab. Więcej informacji można znaleźć na stronie podręcznika dla crontab(5)
.
+1 To jest odpowiedź –
Powróciłem, aby spojrzeć na to pytanie, które zadałem 3 lata temu. Zabawne, jak się sprawy mają, co? –
Ten wpis jest mylący - cron obsługuje tylko określony zestaw zmiennych ustawianych w tabeli cron; na przykład HOME, MAILTO, SHELL itd. Nie możesz * ustawiać zmiennych niestandardowych, np. FOO =/foo/dir. Pomyślałem, że zamieściłbym to, ponieważ ten wpis doprowadził mnie do niewłaściwej drogi przez kilka godzin. – Jmoney38