it-swarm-es.tech

¿Por qué mi comando crontab no funciona?

No se cual es el problema. Estoy muy confundido.

Estoy usando ese comando:

crontab -e

contenido de Crontab:

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
* * * * * /home/myuser/Belgeler/test.sh

(También he intentado así: */1 * * * * /home/myuser/Belgeler/test.sh para programar cada minuto)

cuando lo uso en la terminal, funciona perfectamente:

/home/myuser/Belgeler/test.sh

el archivo test.sh está aquí:

#!/bin/sh
notify-send -i terminal "Notification test"

No sé que el problema es ...

También le di los permisos con este código:

chmod +x test.sh

Editar: Interesante, pero funciona con algunos comandos como "mv (mover)". Pero no funciona con el comando notificar-enviar.

1
Interesting Knox

Te falta la variable DISPLAY. Cambia tu guión a

DISPLAY=:0 notify-send -i "Notification test"

Explicación

Cuando ejecuta el script desde su propio entorno, se establece automáticamente una serie de variables de entorno. Sin embargo, Cron se ejecuta con un conjunto limitado de variables de entorno.

Para ejecutar aplicaciones GUI (incluyendo notify-send) la variable DISPLAY es esencial.

Si tiene más de una PANTALLA

En caso de que tenga más de un DISPLAY (si, por ejemplo, hay más usuarios conectados), el DISPLAY podría no ser DISPLAY=:0
Si regularmente tiene más de un usuario conectado, es posible que deba incluir en su script el análisis de la información del comando:

who -u

que produce líneas como:

jacob    :0           2016-03-18 08:30   ?          2419 (:0)

Como puede ver, mi DISPLAY es :0

1
Jacob Vlijm

Es posible que deba agregar la ubicación de bash o sh:

* * * * * /bin/sh /home/myuser/Belgeler/test.sh

De lo contrario, tal vez pueda ver lo que dicen los registros para encontrar un error:

# cat /var/log/syslog |grep cron
1
monitor35