Mam w sobie kilka poleceń, .profile
które chcę wywołać od siebie crontab
.
Na przykład, jeśli mam,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Chciałbym po prostu przywołać alias
0 11 * * * notify-team
więc jeśli moja lista .profile
jest zaktualizowana, nie muszę też jej aktualizować crontab
. Wydaje mi się jednak, że nie jestem w stanie używać aliasów crontab
. Czy jest w pobliżu praca?
Próbowałem tutaj sugestii , aby skonfigurować środowisko (np. / Bin / bash -lc i skrypt-wrapper). Wygląda na to, że działa to dla skryptów, ale nie dla aliasów.
Jakieś pomysły?
Odpowiedzi:
Z strony podręcznika dotyczącej aliasów:
Więc spróbuj użyć
shopt -s expand_aliases
na początku skryptu pozyskiwania. To powinno pozwolić ci skorzystać z sugestii Warnera.źródło
shopt expand_aliases
. Założę się, że to wyłączone. Jest w moim pudełku RHEL 5.3.eval 'foo'
załatwienie sprawy w crontab załatwiło sprawę .bash -c z „source” powinien działać:
to może również działać. okres oznacza „źródło”
źródło
Jak zidentyfikował Chris, domyślną opcją powłoki dla powłok nieinteraktywnych jest brak rozwijania aliasów. Oto rozwiązanie, które znalazłem do pracy.
Napisz skrypt, włącz opcję powłoki i pozyskaj aliasy. Zwróć szczególną uwagę, że
.bashrc
jest on pozyskiwany podczas wykonywania, dlatego należy go ponownie uzyskać po włączeniu opcji expand_aliases.Przepraszam za początkowo niepoprawne zalecenie. To było bardziej niejasne, niż początkowo się spodziewałem.
Scenariusz:
źródło
Podoba mi się pomysł artifexu, aby pobrać alias z pliku, a następnie użyć go ponownie, ponieważ nie mogłem znaleźć sposobu na bezpośrednie rozwinięcie / ponowne użycie aliasów. (Inne rozwiązania nadal wymagały innego skryptu).
Więc napisałem tę funkcję i umieściłem ją w moim .profile:
Potem mogłem użyć go w moim crontabie do różnych aliasów:
itp.
Tak, ponowne użycie kodu! Dziękuje wszystkim.
źródło
Naprawdę najprostszą rzeczą, jaką możesz zrobić, to stworzyć
~ / bin / powiadom mnie za pomocą
~ / bin / powiadom-zespół z
aliasy powłoki są skomplikowane w utrzymaniu i integracji z innymi systemami, jak widzieliście. najlepiej jest zmienić je w pełnoprawne polecenia, które nie będą miały zabawnych problemów ze środowiskiem.
źródło
bash -ic „powiadom-zespół” jest najlepszą opcją. Udostępnia alias w crontab. Możesz dodatkowo dodać tło dla &, ponieważ używamy powłoki „interaktywnej” z -i, ale w rzeczywistości nie wchodzimy w interakcję z nią.
źródło
pracuje dla mnie
źródło