A execução de Cronjob @reboot retorna esse arquivo no compartilhamento nfs não existe.
Exemplo
@reboot python /abs/path/to/script.py
o correio do crontab na inicialização lê "mais ou menos"
/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.
O script pode ser executado a partir da linha de comando sem problemas.
Teoria é que o cronjob está sendo executado antes da montagem ser executada.
As questões.
- Esta teoria está correta?
- Existe uma maneira de forçar o trabalho até que a unidade seja montada? .... Além de apenas colocar um sono 60 no comando. ;) Eu já tentei isso, mas é um sucesso e preciso do script para executar 100% do tempo rapidamente.
Respostas:
Você pode usar o comando mountpoint para garantir que a montagem ocorra antes de executar seu comando, por exemplo (assumindo / abs é o ponto de montagem)
fonte
mountpoint
- isso é bastante útil!Não sei ao certo qual é o problema, pois o cron inicia após a rede. (Pelo menos no Red Hat e derivativos.) Suas montarias estão
/etc/fstab
com_netdev
opção ou então onde?A maneira padrão de executar algo na inicialização é incluí-lo
/etc/rc.local
. Isso será executado depois que a rede for inicializada e todos os outros serviços forem iniciados. (Incluindo montagem de sistemas de arquivos remotos.)(Ou existe um motivo para executar o script apenas após uma reinicialização literal?)
fonte
Aqui estão algumas idéias para você:
verifique se o NFS está montado. Caso contrário, monte-o e execute seu script:
[ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py
execute seu script na
start()
função do script init do NFS:fonte
Para ter certeza absoluta de que o script python é capaz de executar. Você precisaria envolvê-lo em um script armazenado no armazenamento local para verificar se o ponto de montagem subiu.
Algo como (pseudo código de aviso):
fonte