Dicas · Linux

Rodando simulações em uma rede Linux

Notas para executar simulações em R e Matlab sem bloquear uma sessão Linux.

Nas redes de computadores das universidades é comum encontrar computadores bloqueados com o aviso “Rodando simulações”. Esta nota descreve uma forma de rodar uma simulação em uma rede Linux deixando o computador disponível para outros usuários.

Desvinculando o processo do seu login

Suponha que você queira rodar o algoritmo Simulacao.R no software estatístico R. O procedimento mais conhecido é digitar R no terminal e chamar o script com:

source('Simulacao.R')

Outra possibilidade é executar:

echo "source('Simulacao.R')" | R --no-save > teste.txt

Esse comando executa o arquivo Simulacao.R e salva os resultados em teste.txt, sem salvar o workspace. Para mais opções, veja man R.

Se você executar qualquer um dos dois comandos e finalizar sua sessão, o kernel automaticamente encerrará todos os programas em execução vinculados ao seu login.

Uma forma simples e eficiente para evitar esse problema é utilizar o comando nohup:

nohup echo "source('Simulacao.R')" | R --no-save > teste.txt &

Assim, você pode finalizar a sessão e, em outro momento, abrir o arquivo teste.txt para verificar os resultados.

Outra possibilidade, útil para quem tem em casa um computador conectado à internet, é fazer login remotamente via ssh na rede da universidade e executar o comando desejado.


Nota enviada por Francyelle Lima Silva — Doutoranda IME/USP, 2013.

Rodando simulações do Matlab em uma rede Linux

Suponha que o usuário queira rodar o algoritmo Simulacao.m no Matlab. O procedimento é:

  1. Chamar esse script com o comando screen matlab -nodisplay -r Simulacao no terminal. Neste caso, screen faz a mesma função que nohup, porém é mais eficiente para o Matlab.
  2. Para salvar os resultados em .txt, dentro do script é possível usar save Resultados.txt C -ascii, em que Resultados deve ser a saída de alguma função ou os resultados do código.