J'ai quelques commandes dans ma .profile
que je veux invoquer depuis ma crontab
.
Par exemple, si j'ai,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Je voudrais simplement invoquer l'alias
0 11 * * * notify-team
donc si la liste dans mon .profile
est mise à jour, je n'ai pas besoin de la mettre à jour crontab
aussi. Cependant, je ne semble pas pouvoir utiliser d'alias dans mon crontab
. Y at-il un travail autour?
J'ai essayé les suggestions ici pour configurer l'environnement (par exemple / bin / bash -lc et le script wrapper de script). Il semble que cela fonctionne pour les scripts mais pas pour les alias.
Des idées?
Réponses:
À partir de la page de manuel concernant les alias:
Essayez donc d'utiliser
shopt -s expand_aliases
au début de votre script de sourcing. Cela devrait vous permettre d'utiliser la suggestion de Warner.la source
shopt expand_aliases
. Je parie que c'est éteint. C'est dans ma boite RHEL 5.3.eval 'foo'
dans crontab a fait l'affaire.bash -c avec "source" devrait fonctionner:
cela pourrait également fonctionner. la période signifie "source"
la source
Comme Chris l'a identifié, l'option de shell par défaut pour les shells non interactifs est de ne pas étendre les alias. Voici une solution que j'ai trouvée efficace.
Écrivez un script, activez l'option shell et sourcez vos alias. Soyez particulièrement conscient du fait qu'il
.bashrc
provient à l'exécution, c'est pourquoi il doit être à nouveau généré après avoir activé expand_aliases.Mes excuses pour la recommandation initialement incorrecte. C'était plus obscur que ce à quoi je m'attendais initialement.
Scénario:
la source
J'aime l'idée d'Artefex de récupérer l'alias du fichier puis de le réutiliser, car je n'ai pas trouvé de moyen d'étendre / réutiliser les alias directement. (D'autres solutions nécessitaient toujours un autre script.)
J'ai donc écrit cette fonction et l'ai mise dans mon .profile:
Ensuite, j'ai pu l'utiliser dans mon crontab pour divers alias comme celui-ci:
etc.
Ouais, réutilisation du code! Merci a tous.
la source
La chose la plus simple à faire serait de créer
~ / bin / informez-moi avec
~ / bin / notify-team avec
les alias de shell sont compliqués à maintenir et à intégrer dans d'autres systèmes, comme vous l'avez vu. la meilleure chose à faire est de les transformer en commandes à part entière qui n'auront pas de problèmes d'environnement drôles.
la source
bash -ic "notify-team" est la meilleure option. Il rend l'alias disponible dans crontab. Vous pouvez en outre ajouter un & for background car nous utilisons un shell «interactif» avec -i, mais en réalité, nous n'interagissons pas avec lui.
la source
travaille pour moi
la source