como usar o módulo no crontab

0

quando eu digito "módulo disponível", ele fornece informações de módulos disponíveis.

--------------------------------- /tool/applic/module-3.2.10/Modules/3.2.10/modulefiles ----------------------------
Applic/Abaqus_2016_sp1       Applic/FDTD-8.15.716-1       Applic/Raphael_2006.12-SP2   Applic/Synopsys_sx_C2009-sp1

e quero salvar essas informações a cada 1 min. usando crontab .

então eu "crontab -e" e edito assim

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * module add something
*/1 * * * * module list >> croninfo.txt     
*/1 * * * * module available >> croninfo.txt

mas croninfo.txt está vazio. Parece que o "módulo" não está funcionando.

como posso fazer o módulo funcionar para que eu possa adicionar módulos.

    
por 최원우 20.10.2016 / 09:50

1 resposta

1

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).

    
por 20.10.2016 / 10:07

Tags