Quiero escribir un crontab que abra Firefox cada minuto (sólo para probarlo, sé que no tiene ningún sentido). Mi problema es que aunque crontab esté activo no pasa nada. Así es como se ve mi crontab:
SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox
¿Alguna idea de por qué no funciona?
Respuesta1
export DISPLAY=:0.0 xhost localuser /usr/bin/firefox
Con solo mirar el comando cron anterior, puedo ver por qué no funciona. El uso del export
comando es
export name[=word]...
En los shells POSIX, el resto de las palabras siguientes export DISPLAY=:0.0
se tratarán como otras variables del shell que deben exportarse al entorno, no como comandos que se ejecutarán. POSIX (Número 7, edición de 2018) también especifica que unnombredebiera ser
una palabra que consta únicamente de guiones bajos, dígitos y letras del conjunto de caracteres portátiles.
Esto significa que los nombres de las variables del shell no pueden contener caracteres como, /
por lo que intentar incluirlos /usr/bin/firefox
en la lista de nombres de variables a exportar arrojaría un error con un mensaje como not a valid identifier
o bad variable name
.
Además, el xhost
comando se utiliza incorrectamente. Ejecútelo xhost
solo para ver si necesita agregar su cuenta de usuario como usuario permitido. Esto sólo debería necesitarse ejecutarse una vez y no debería programarse mediante cron.
A menos que exista algún otro mecanismo que impida que los programas se conecten al servidor de visualización X, las líneas anteriores pueden simplemente reemplazarse con:
DISPLAY=:0.0
* * * * * /usr/bin/firefox
Esto debería abrir una nueva ventana de Firefox cada minuto. Tampoco es necesario especificar la SHELL
variable de entorno y, dado que está especificando la ruta completa para el firefox
ejecutable, tampoco es necesario configurar la PATH
variable.
Ver también:Especificación POSIX paraexport