Este é meu padrão de crontab que armazeno em minha conta do Github:
source ~/.profile
0 0 * * *
# More cron commands
Como exercício, tentei canalizar os dados stdout curl
para o meu crontab (mudei o caminho do Github para o padrão geral).
1) Tentei usar um pipe simples:
curl https://raw.githubusercontent.com/user/repo/master/cronjobs | crontab
Isso falhou com o erro:
"-":0: minuto ruim
erros no arquivo crontab, não é possível instalar.
2) Eu tentei usar um heredoc:
curl https://raw.githubusercontent.com/user/repo/master/cronjobs | cat > crontab
Isso falhou com o erro:
Nenhuma modificação feita
3) Tentei ecoar a curl
saída em crontab
.
echo "curl $(https://raw.githubusercontent.com/user/repo/master/cronjobs)" | crontab
Isso falhou com o erro:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0...: command not found
100 505 100 505 0 0 804 0 --:--:-- --:--:-- --:--:-- 804
(23) Failed writing body
Você pode ver que tentei três maneiras diferentes de enviar os dados de stdout para crontab e ainda nada funciona. O que mais me resta se quiser passar diretamente para o crontab e não para os cron.d
arquivos?
Este é o erro que ocorre
crontab
se o arquivo/dados fornecidos não for um arquivo crontab adequado. (Acho que o número ali é um número de linha, mas não sei dizer por que às vezes mostra zero.) A páginacrontab(5)
de manual diz:Então, presumivelmente, o que você digitou tinha algo que não era nenhum desses.
Tudo bem:
Isso não é:
2) Este não é um here-doc, apenas um pipe com um gato extra e um redirecionamento para o arquivo
crontab
. Isso não executa o comando chamadocrontab
.3) Isso deve gerar um erro do shell, provavelmente você não tem um comando chamado
https://raw.githubusercontent.com/user/repo/master/cronjobs
.A primeira linha,
não é uma linha válida para ter no crontab de alguém:
Se você deseja obter o seu
~/.profile
como se estivesse executando um shell de login, considere iniciar seus scripts de shell comoem vez disso (para
bash
, usesh -l
para/bin/sh
), ou possivelmenteÉ incomum querer obter uma fonte
~/.profile
em um trabalho cron. Se você tiver uma variável de ambiente específica (ou conjunto de variáveis) que precise ser definida no script, seria melhor defini-la no script para manter o script independente.Uma alternativa para isso é usar um arquivo de ambiente separado e iniciar seu script como