Iniciando um node.js via cron falha silenciosamente

0

No momento, estou tentando configurar um cronjob que iniciará um servidor node.js sempre que o servidor estiver inativo.

Para isso, escrevi um script simples para testar e iniciar o servidor do nó.

#!/bin/bash

ts=$(date +%T)

if pgrep -f "node"
then
    echo $ts": node running"
else
    echo $ts": node not running"
    '/usr/bin/node' '/home/pi/project/serveronly/index.js' > '/home/pi/project/node.log'
fi

O crontab correspondente é:

m   h   dom   mon   dow   command
*   *    *     *     *    /home/pi/project/sanity_check.sh >> /home/pi/project/cron.log 2&>1

meu registro mostra o seguinte: Se eu simplesmente iniciar o script, ele iniciará o servidor e registrará a saída node.js corretamente.

Para o script iniciado pelo cron, ele parece assim: Se uma instância de node.js estiver atualmente em execução, ela detectará isso e registrará em conformidade. Se nenhum for detectado, ele fará o login em cron.log corretamente, mas não registrará nada em node.log e não iniciará um servidor.

    
por Junge 05.07.2018 / 14:22

1 resposta

0

  1. Você não está fornecendo o caminho completo para /home/pi/project/serveronly/index.js - está faltando a barra inicial, portanto, o programa do nó não está conseguindo encontrar seu script.

  2. o comando é substituído com sucesso um arquivo no seu diretório pessoal, home/pi/project/node.log ; presumivelmente é isso que você quis dizer com project.log . Se você quiser anexar a esse log, use dois sinais maiores que um, não um.

Eu usaria isso, em vez disso:

/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log
    
por 05.07.2018 / 14:33