cron no funciona

cron no funciona

Escribí un breve script de shell "wallch.sh" para cambiar aleatoriamente el fondo de mi escritorio:

DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

Y lo copié en /bin/y luego sudo chmod 755 /bin/wallch.shen él. Esto podría ejecutarse fácilmente desde la terminal sin problemas y sin ningún error.

Sin embargo, cuando agrego una línea en crontab (haciendo esto desde la terminal como usuario), como:

* * * * * /bin/wallch.sh

Simplemente no funcionaría. En teoría debería haberse ejecutado cada minuto.

/var/log/syslogdice:

Feb 25 19:36:01 user-Ubuntu CRON[11762]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:36:01 user-Ubuntu CRON[11761]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:37:01 user-Ubuntu CRON[11790]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:37:01 user-Ubuntu CRON[11789]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:38:01 user-Ubuntu CRON[11828]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:38:01 user-Ubuntu CRON[11827]: (CRON) info (No MTA installed, discarding output)

¿Alguna sugerencia?

Actualizar:

El script que escribí (tenga en cuenta que cambié el nombre del archivo, ahora es /bin/wallch. Además, eliminé las líneas de comentarios que comenzaban con #excepto el shebang):

#!/bin/sh
DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

La stat /bin/wallchsalida:

user@user-Ubuntu:~$ stat /bin/wallch
File: `/bin/wallch'
Size: 484           Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d  Inode: 130389      Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-02-26 11:03:01.727198732 -0600
Modify: 2013-02-26 10:37:46.727135926 -0600
Change: 2013-02-26 11:02:06.215196433 -0600
Birth: -
user@user-Ubuntu:~$ 

¡Gracias por cualquier respuesta!

Respuesta1

Sí, puedes instalar cualquier paquete MTA. Si ya tiene un servidor SMTP (MTA) en algún lugar que pueda usar, elija nullmailer. De lo contrario, podría optar por postfix(requiere algo de trabajo) o courier-mtaque también viene con valores predeterminados sensatos (y es algo más fácil para principiantes, en mi opinión).

Los nombres de ancho fijo anteriores son nombres de paquetes en Ubuntu. Entonces apt-get install <packagename>instalará el MTA. El problema principal parece ser que no configuró ningún MTA y, por lo tanto, cronno puede enviar correo. El trabajo en sí no indica un error en la salida del registro que puedo ver.

Nota al margen: también puede suprimir cualquier resultado de sus trabajos agregando (a la línea del trabajo):

> /dev/null 2>&1

... e incluso suprimir los códigos de salida de error añadiendo (más):

|| /bin/true

... Sin embargo, no lo recomendaría. También configurar MAILTOen su crontab(ver man 5 crontab) es otra opción aquí. Pero es un poco "global" para los respectivos crontab:

MAILTO=""

Lo que cronenvía es la salida (stdout/stderr, si encuentra un MTA) del trabajo que ejecutó. Y lo hace por defecto, sí. Además, los códigos de salida de error (distintos de cero) harán que el resultado se envíe por correo.

Sin embargo, también debe poder ejecutar el trabajo, lo que en todos los casos requiere que el archivo sea ejecutable ( chmod a+x ...) o que, en el caso de un script, anteponga la ruta al intérprete del script y que, en el caso de un script, , existe una línea hashbang adecuada al principio del archivo.

Respuesta2

use esta línea cron en su lugar

* * * * * DISPLAY=:0 GSETTINGS_BACKEND=dconf /bin/wallch.sh

También podría usar */2 en la columna de horas para un cambio de fondo cada dos horas (todas las horas pares)

Consejo fuera de tema: esta no es una regla, solo una forma de mantener los scripts separados, úselo /usr/local/binpara sus scripts de administración. :)

información relacionada