Existem duas possibilidades óbvias aqui.
Primeiro, você deve ter em mente que cron
executa seus comandos com um ambiente normalmente diferente do obtido em um shell interativo iniciado a partir de uma sessão conectada. Você parece ter explicado isso adicionando uma atribuição PATH
, mas é importante lembrar. Como complemento, o cron executa os comandos com o diretório de trabalho atual configurado no diretório home do usuário proprietário , se não é isso que você quer, você precisa se ajustar de acordo.
Segundo, os comandos com o mesmo especificador de tempo são executados em uma ordem indeterminada. Quando você escreve
*/1 * * * * module add something
*/1 * * * * module list >> croninfo.txt
*/1 * * * * module available >> croninfo.txt
você pode pensar que eles serão executados sequencialmente, um após o outro, mas na verdade, o cron está livre para executá-los em qualquer ordem que ele goste no momento. Dependendo de quanto tempo cada comando leva para iniciar e executar, é perfeitamente possível ter vários comandos diferentes executando simultaneamente.
Se você quiser executar um conjunto de comandos sequencialmente, geralmente a melhor abordagem é criar um script simples que execute os comandos na ordem correta e só execute esse script a partir do cron.
Fazer isso também permitirá que você use algo como #!/bin/bash -x
para obter mais detalhes sobre a execução do script, o que pode ajudar a identificar problemas.
A propósito, você não precisa do especificador /1
; *
e */1
são equivalentes em qualquer implementação sã do cron. O especificador /n
é mais útil quando você deseja que n
seja algo diferente de 1; por exemplo, para executar um comando a cada três minutos ( */3
no campo do primeiro especificador de tempo).