2 votos

crontab no parece reconocer `~`.

¿Alguien ha notado que crontab no parece reconocer ~ para referirse al directorio principal?

Intenté usar una expansión completa de /Users/username/filename.txt en crontab, que funcionó, pero usando ~/filename.txt resulta en un fracaso.

¿Alguien sabe por qué?

10voto

John Palmieri Puntos 111

La pregunta propuesta utilizando ~/username/filename.txt en lugar de /Users/username/filename.txt pero la sintaxis propuesta debería ser ~username/filename.txt o ~/filename.txt . Para una ilustración de un crontab que utiliza ~ , ver la respuesta más valorada a Recibe antes notificaciones de batería baja para el ratón .

También puede probar un ejemplo sencillo con esto crontab entrada:

* * * * * touch ~/NOT_A_FILE_I_CARE_ABOUT.txt

7voto

~ es un símbolo conchas ampliar automáticamente a $HOME , un estándar /bin/sh (que cron utiliza para ejecutar los comandos) no necesita soportar ~ expansión. La forma portátil es utilizar $HOME en su lugar en su crontab archivo.

-1voto

Joel Puntos 112

Algunas cáscaras admiten ~ y otros no. Tal vez Apple utiliza dash por defecto cron concha en Catalina, y bash en Monterey?; tal vez Apple cambie el cron ambiente dependiendo de la fase de la luna?

Mejor que adivinar lo que Apple ha hecho (o no) en alguna versión concreta de MacOS, y en una máquina que puede tener o no modificaciones de los usuarios... ¿no sería mejor hacer algunas pruebas sencillas - preguntar cron para decirle algo sobre su entorno? Esto sería un la verdad objetiva que no requiere ninguna suposición, y que no depende de caprichos en la documentación de Apple.

Una vez al día (o cuando lo desee), puede ejecutar un cron trabajo que registra su entorno y alguna otra información útil de su sistema en un archivo. El archivo siempre está ahí, y nunca tiene más de 24 horas de antigüedad (suponiendo que su sistema estaba funcionando en el momento en que lo programó).

Un trabajo similar al de abajo en su crontab respondería a sus preguntas "definitivamente" (sin embargo, véase NOTA 3. abajo):

0 12 * * * (echo $(date); echo "What is '~'?:" ~; printenv) > /Users/seamus/mycronenv.txt 2>&1

Esto produce un archivo llamado mycronenv.txt en mi directorio $HOME que se parece a esto:

Sat Jul 30 23:35:00 CDT 2022
¿Qué es '~'? /Users/seamus
SHELL=/bin/sh
MAILTO=
USER=seamus
PATH=/usr/bin:/bin
PWD=/Users/seamus
SHLVL=1
HOME=/Users/seamus
LOGNAME=seamus
_=/usr/bin/printenv

Como puede ver, mi sistema (Catalina) cron reconoce ~ como $HOME. Para verificar esto, añadí otro trabajo a mi crontab (ver NOTA 1. abajo):

* * * * * (echo "Write this line to the file ~/testdir/testfile with a timestamp: "; echo $(date)) >> ~/testdir/testfile.txt 2>&1

El cual funcionó como se esperaba, escribiendo el resultado en $HOME/testdir/testfile.txt .

Y como he utilizado la forma append de la redirección ( >> ), añade una nueva entrada cada minuto, es decir, ¡elimina este trabajo después de tu prueba!

Espero que esto ayude a aclarar la confusión - por favor, háganos saber si el problema persiste, o si tiene otras preguntas.


NOTAS:
  1. Si quieres probar esto en tu máquina, crea el directorio testdir primero:

    % cd
    % mkdir testdir
  2. En mi sistema (Catalina), Apple ha establecido la configuración por defecto para enviarme un correo con una nota sobre mi cron trabajo - que no es algo que quiera. En consecuencia, he añadido una línea a mi crontab para desactivar eso:

    MAILTO=""
  3. En defitivamente :

    Desde man sh parece que, en lugar de ser definitivo Apple se ha dado cierto margen de maniobra: cron puede utilizar cualquiera de las tres conchas ( bash , dash o zsh ) al servicio de /bin/sh :

    sh es un intérprete de comandos compatible con POSIX (shell). Se implementa reejecutando como bash(1), dash(1), o zsh(1) según lo determine el enlace simbólico ubicado en /private/var/select/sh. Si /private/var/select/sh no existe o no apunta a un shell válido, sh utilizará uno de los shells soportados.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X