El script no se ejecuta a través de Crontab, pero funciona bien independiente -- ron camp askubuntu Relacionados El problema

Script doesn't run via crontab but works fine standalone


60
vote

problema

Español

Tengo un script que me recuerda reiniciar mi computadora si uptime es más que, por ejemplo, 3 días (aunque se establece en 0 días ahora solo para verificar si el script se está ejecutando como mi computadora tiene He estado solo durante un día ..).

Me doy cuenta de que no es el guión más elegante, ¡pero estoy intentando! ABCDEFGHIJKLMNABCDEFGHIJKLMN7

  ABCDEFGHIJKLMNABCDEFGHIJKLMN8   

Lo he hecho ejecutable por chmod + x checkup.sh y funciona bien cuando lo ejecuto fro the terminal a través de partition C0

Mi entrada de crontab para este script es:

ABCDEFGHIJKLMNABCDEFGHIJKLMN11

Entonces se ejecuta a las 14: 46hrs diariamente ...

Entonces ... Estoy pensando que debería correr, a menos que no hiciera algo realmente tonto. Además, ¿cree que está bien mover este script de bash a partition C2 ?

Original en ingles

I have a script that reminds me to restart my computer if uptime is more than, say 3 days (although its set to 0 days now just to check if the script is running as my computer has been up only over a day..).

I realize it isn't the most elegant script but I am trying! :)

#!/bin/bash  up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')  [[ $up -gt 0 ]] && xmessage -center "Restart!" 

I have made it executable by chmod + x checkup.sh and it works fine when I run it fro the terminal via ./checkup.sh

My crontab entry for this script is:

46 14 * * * /home/username/Desktop/./checkup.sh

So it runs at 14:46hrs daily...

So... I am thinking it should run, unless I didn't something really silly. Also, do you think it's ok to move this bash script to /bin?

  
         
         

Lista de respuestas

77
 
vote
vote
La mejor respuesta
 

Una cosa a la vez:

Primero le daremos una carpeta Bin basada por el usuario:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN5   

Quieres usar crontab. Vamos a empezar con algo realmente simple:

  * * * * * touch /tmp/testing.txt   

De acuerdo, para que funcione

Ahora intentemos ejecutar un script que hace el mismo

  * * * * * /home/username/bin/touchtest.sh   

para ejecutar una vez un minuto hasta que lo entienda
No, no necesitas un ./ en el medio de la línea. ./ es para cuando está dando URL relativa.
Bien, para que funcione

Ahora intentemos ejecutar un script que llama xmessage

  ABCDEFGHIJKLMNABCDEFGHIJKLMN8   

no funciona

Primero debemos no depender de las variables de entorno. Esto incluye la configuración de la ruta, la configuración X11 o cualquier otra cosa (las variables de Python y Ruby Environment Entorno vienen a la mente ...)

Hagamos que nuestro se vea un poco como el archivo CRON adecuado de Anacron ... ahorré esto como prueba

  ABCDEFGHIJKLMNABCDEFGHIJKLMN9   

configurado para ejecutar una vez por minuto

#auto eth0 #iface eth0 dhcp inet auto eth1 iface eth1 dhcp inet 0 para importarlo

en el script

  #auto eth0 #iface eth0 dhcp inet auto eth1 iface eth1 dhcp inet 1  

De acuerdo, para que funcione ... ¿Qué hicimos?
Cambiamos todos los comandos para no depender de las rutas que no establecimos explícitamente
Corrimos nuestro guión explícitamente con bash
Le dijimos al guión que esperamos estar en la pantalla: 0.0

 

One thing at a time:

First let's give you a user based bin folder:

cd ~/ && mkdir bin 

You want to use crontab. Let's start with something really simple:

* * * * * touch /tmp/testing.txt 

Okay, so that works

Now let's try running a script that does the same

* * * * * /home/username/bin/touchtest.sh 

to run once a minute until you get it working
No you don't need a ./ in the middle of the line. ./ is for when you are giving relative urls.
Okay, so that works

Now let's try running a script that calls xmessage

* * * * * /home/username/bin/rebootwarn.sh 

not working

First we need to not depend on environment variables. This includes path setting, x11 settings, or anything else(python and ruby environment variables come to mind...)

Let's make ours look a bit like anacron's proper cron file..I saved this as test

#Borrowed from anacron SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #End borrowed from anacron  * * * * *   /bin/bash /home/username/bin/test.sh 

Set to run once a minute

crontab test to import it

On to the script

#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin export DISPLAY=:0.0 up=$(uptime | grep "day" > /home/dnaneet/uptime.foo && awk < /home/dnaneet/uptime.foo '{ print $3 }')  [[ $up -gt 0 ]] && xmessage -center "Restart!"` 

Okay, so that works...what did we do?
We changed all the commands not to depend on paths we didn't explicitly set
We ran our script explicitly with bash
We told the script that we expect to be on DISPLAY :0.0

 
 
         
         
15
 
vote

El problema se resolvió leer el manual en Google:

Descripción:

  1. Tengo script usando #!/bin/bash como encabezado
  2. Puse el script en /home/wc3/palert/

análisis:

  1. Crontab no puede ejecutar mi guión
  2. , pero si corro manualmente, muestra la salida y también puedo ver el resultado en mi web
  3. significa que Crontab no puede obtener el medio ambiente, no como cuando ejecuta su script en la carpeta de su script

Respuesta:

  1. Ponga su entorno usando esta línea a continuación en su script con:

      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert   

    CAMBIAR ESTO: ABCDEFGHIJKLMNABCDEFGHIJKLMN3
    Con: el lugar que pones tu script por ejemplo. ABCDEFGHIJKLMNABCDEFGHIJKLMN4

Muestra:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN5   

intente poner su script en crontab.

 

The problem was solved read the manual in Google:

description:

  1. I have script using #!/bin/bash as header
  2. I put the script on /home/wc3/palert/

analysis:

  1. crontab can't run my script
  2. But if I run manually it show the output and also I can see the result on my web
  3. It means crontab can't get the environment not like when you run your script on your script folder

answer:

  1. put your environment using this line below on your script with:

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert 

    change this: /home/wc3/palert
    with: the place that you put your script e.g. /home/budi/script.sh

sample:

#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/budi # Script continues... 

Try put your script on crontab.

 
 
     
     
0
 
vote

En mi caso, todo fue porque no se carga el perfil en primer lugar. Así que solo usa -l o abcdefhijklmnabcdefghijklmn7 . Al igual que ABCDEFGHIJKLMNABCDEFGHIJKLMN8

 

In my case all was cause it is not loaded profile on a first place. So just use -l or --login. Like so @reboot bash -l /path/to/scirpt.sh >> /tmp/some.log

 
 

Relacionados problema

158  Cambio de editor de crontab predeterminado  ( Changing default crontab editor ) 
Estoy tratando de cambiar el editor predeterminado de nano a vim . He ejecutado los siguientes comandos: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 y ABCDEFG...

3  Cómo verificar el uso de la red en más de x minutos  ( How to check network usage over past x minutes ) 
Tengo una PC de medios (que también es un servidor de pruebas web en la LAN) que quiero reiniciar cada a menudo siempre que no esté en uso. Sin embargo, tengo...

1  Cómo activar el inicio de anacron si la unidad USB conecta  ( How to trigger anacron start if usb drive connected ) 
Hay un script en /usr/lib/pm-utils/power.d/anacron que reinicia a Anacon si los leptops están conectados a la alimentación. ¿Es posible tener un reinicio de...

19  Ubuntu 16.04: Las actualizaciones desatendidas se ejecutan en tiempos aleatorios  ( Ubuntu 16 04 unattended upgrades runs at random times ) 
He configurado actualizaciones desatendidas para instalar paquetes de seguridad y notificar por correo cuando lo hace. Me he dado cuenta de que la instalaci...

2  Los trabajos especificados en / etc / crontab se están ejecutando en el tiempo de Wong, ¿por qué? [duplicar]  ( The jobs specified in etc crontab are running at the wong time why ) 
Esta pregunta ya tiene respuestas aquí : ¿A qué hora ejecuta Cron? ...

3  Crontab y SSMTP  ( Crontab and ssmtp ) 
Mi servidor es Ubuntu 12.04.3 Los trabajos de Cron están funcionando bien. Puedo enviar correos electrónicos a través de la línea de comandos, ya sea utilizan...

0  Es posible convertir la computadora y mantenerlo fuera [duplicado]  ( It it possible to turn computer off and keep it off ) 
Esta pregunta ya tiene respuestas aquí : ¿Cómo restringo el tiempo de computación de mis hijos? ...

0  ¿Hay alguna manera de saber si el demonio de transmisión actualmente está activo?  ( Is there a way to know if transmission daemon currently active ) 
Tengo una computadora portátil que utilizo como una estación de medios conectada a mi televisor, de vez en cuando caería un sueño y olvidé apagar la computado...

7  Configuración de la copia de seguridad semanal de Cron  ( Setup cron weekly backup ) 
Quiero hacer una copia de seguridad de mi /var/lib/mysql y abcdefhijklmn/var/www carpetas y guárdelas como archivos tar.gz en mi servidor de archivos de r...

4  ¿Cómo puedo mostrar notificar: enviar mensajes activados por CRONTAB? [duplicar]  ( How can i show notify send messages triggered by crontab ) 
Esta pregunta ya tiene respuestas aquí : cron trabajo para ejecutar la secuencia de comandos de Pyth...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos