Problema crontab intermitente

1

Minha entrada crontab não consegue localizar scripts no diretório pessoal do meu usuário. As entradas crontab são executadas exatamente na programação, conforme especificado, e, ocasionalmente, o script é executado corretamente, mas na maioria das vezes, ele produz apenas uma saída assim:

/bin/sh: 1: /home/<user>/script/check_cgi.pl: not found

A entrada do crontab para isso é:

5,35 * * * *    /home/<user>/scripts/check_cgi.pl >>/tmp/check_cgi.pl.out 2>&1

Eu verifiquei que o script existe e que o root pode ver o sistema de arquivos e que o comando é executado corretamente se eu sudo para root.

Alguém tem alguma sugestão sobre o motivo pelo qual o cron frequentemente não conseguiria encontrar um arquivo e como resolvê-lo?

EDITAR

Este é o crontab do root (editado pelo sudo crontab -e), daí a relevância de verificar se o root pode ver o script.

As permissões no script são:

-rwxrwxr-x 1 <user> <user>  700 Apr 20 09:27 check_cgi.pl

e as permissões de diretório 775 ou 755 também, então não há problema com o root ter permissões para executar o script.

Parece que o cron começou a "encontrar" o script depois que eu adicionei um novo trabalho cron para executar "find /"; como se forçar o cron a percorrer toda a árvore de diretórios permitisse "encontrar" o script novamente.

Existem 4 scripts, todos contidos no mesmo diretório. Eles correm em vários momentos (a cada 15 minutos, a cada 30 minutos, uma vez por dia) e todos eles têm esse problema ao mesmo tempo. E quando o problema acontece, todos funcionam bem.

EDIT 2

Eu encontrei o problema ... Ao executar cada hora a tarefa cron "ll -lR / home", descobri que por volta das 15.00 começou a reportar incorretamente o conteúdo do diretório / home /. Em vez da coleção correta de diretórios (incluindo o diretório de scripts necessários), ele mostrava o conteúdo completamente diferente:

lrwxrwxrwx 1 <user> <user> 56 Jan 18 20:53 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
lrwxrwxrwx 1 <user> <user> 52 Jan 18 20:53 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt

E quando vejo o arquivo /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt, ele me diz:

THIS DIRECTORY HAS BEEN UNMOUNTED TO PROTECT YOUR DATA.
From the graphical desktop, click on:
 "Access Your Private Data"
or
From the command line, run:
 ecryptfs-mount-private

Então, essa parece ser a resposta. O diretório pessoal é configurado como um sistema de arquivos criptografado e o sistema operacional desmonta-o em períodos de pouco uso "para proteger seus dados".

Eu só preciso descobrir como desabilitar esse comportamento permanentemente ou quando as tarefas do cron são executadas. Eu acho que a resposta está dentro do ecryptfs-mount-private ...

    
por Shaka Zulu 24.04.2014 / 10:53

2 respostas

2

A ajuda do ubuntu descreve este problema link

Caveats
There are a few minor caveats that one must keep in mind about these encrypted configurations.
When you are not logged into your system, data in your home directory is not accessible in plain text. This, of course, is by design. This is what keeps an attacker from gaining access to your files. However, this means that:
1.    Your cronjobs may not have access to your Home Directory 

A solução é, penso eu, não ter diretórios pessoais criptografados, ou mover os arquivos para algum lugar que o root possa ver (como o diretório base do root).

    
por Shaka Zulu 24.04.2014 / 21:33
-1

É estranho que o script corra bem ocasionalmente.

Mas, na minha experiência, a maioria dos problemas relacionados ao crontab é um privilégio.

o crontab executa o script com seu próprio privilégio, não com o root.

Portanto, e quanto a "chmod 707" ou "777" ao seu script e à pasta do seu usuário?

    
por Jun 24.04.2014 / 11:45