Tengo algunos comandos en mi .profile
que quiero invocar desde mi crontab
.
Por ejemplo, si tengo,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Me gustaría invocar el alias
0 11 * * * notify-team
así que si la lista en mi .profile
está actualizada, no tengo que actualizarla crontab
también. Sin embargo, parece que no puedo usar alias en mi crontab
. ¿Hay alguna solución?
Intenté las sugerencias aquí para configurar el entorno (p. Ej. / Bin / bash -lc y el script script-wrapper). Parece que eso funciona para los scripts pero no para los alias.
¿Algunas ideas?
Respuestas:
De la página de manual sobre alias:
Así que intente usarlo
shopt -s expand_aliases
al comienzo de su secuencia de comandos de abastecimiento. Esto debería permitirle usar la sugerencia de Warner.fuente
shopt expand_aliases
. Apuesto a que está apagado. Está en mi caja RHEL 5.3.eval 'foo'
en crontab funcionó.bash -c con "fuente" debería funcionar:
Esto también podría funcionar. el período significa "fuente"
fuente
Como Chris identificó, la opción de shell predeterminada para shells no interactivos es no expandir los alias. Aquí hay una solución que he encontrado que funciona.
Escriba una secuencia de comandos, habilite la opción de shell y obtenga sus alias. Tenga especialmente en cuenta que
.bashrc
se origina en la ejecución, razón por la cual se debe obtener nuevamente después de habilitar expand_aliases.Mis disculpas por la recomendación inicialmente incorrecta. Esto fue más oscuro de lo que inicialmente esperaba.
Guión:
fuente
Me gusta la idea de artifex de tomar el alias del archivo y luego reutilizarlo, ya que no pude encontrar una manera de expandir / reutilizar los alias directamente. (Otras soluciones aún requerían otro script).
Entonces escribí esta función y la puse en mi .profile:
Luego pude usarlo en mi crontab para varios alias como este:
etc.
¡Yay, código reutilizado! Gracias a todos.
fuente
Realmente lo más simple que podrías hacer sería crear
~ / bin / notifícame con
~ / bin / notify-team con
Los alias de shell son complicados de mantener e integrar en otros sistemas, como has visto. Lo mejor que puede hacer es convertirlos en comandos completos que no tengan problemas de entorno divertidos.
fuente
bash -ic "notificar al equipo" es la mejor opción. Hace que el alias esté disponible en crontab. También puede agregar un & para el fondo ya que estamos usando un shell 'interactivo' con -i, pero en realidad no interactúa con él.
fuente
funciona para mi
fuente