Creé un programa que requiere una secuencia de instrucciones de línea de comando para extraer nueva información y actualizar las bases de datos.
¿Hay alguna manera de automatizar este proceso para no tener que escribir todo esto en la terminal cada vez que me siento? Tal vez haga que los primeros 3 pasos se ejecuten cada hora y el paso 4 se ejecute a las 2 a. m., ya que puede tardar mucho en completarse.
Paso 1:En terminales:
...Documents/dota2/dotaapi2/ python match_scraper.py
Paso 2:en la terminal
psql dota2apidb
update games set online=1 where online is null;
Paso 3:En terminales:
...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
Etapa 4:En la terminal: (ejecutar una vez solo a las 2 a.m.)
...Documents/dota2/dotaapi2/ python gosu_merge.py
...Documents/dota2/dotaapi2/ python unticketed.py
Respuesta1
Una solución podría ser configurar cronjobs para bloquear/desbloquear el directorio del juego. Para hacerlo, siga los pasos a continuación.
Asegúrate de que cron-daemon esté instalado
sudo apt-get install cron
Configurar el cronjob para que se ejecute como root
Comience a editar el cronjob emitiendo el siguiente comando:
sudo crontab -e
Agregue las siguientes líneas al editor:
00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py
(Solo para dejar en claro que debe usar comandos y rutas adecuadas, tal vez poner algo de eso en scripts bash preparados para poder reducir la cantidad de crons en ejecución)
Respuesta2
ponga los pasos 1,2,3 en script1.sh ponga el paso 4 en script2.sh
Luego configuracronpara que el usuario adecuado ejecute los scripts según su programación:
minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command
01 * * * * /usr/bin/directory/script1.sh
30 2 * * * /usr/bin/directory/script2.sh
script1.sh se ejecutará en el minuto 01 si cada hora de cada día, mientras que script2.sh se ejecutará en el minuto 30 de la hora 0200 todos los días.