Não funciona Sh no Cron do Centos [RESOLVIDO]

1. Não funciona Sh no Cron do Centos [RESOLVIDO]

Valter Cesar Bertucio
bertucio

(usa CentOS)

Enviado em 15/07/2014 - 08:27h

Olá a todos, bom dia.

Por favor uma ajuda.
Eu tenho um servidor Centos 6.5 x86_64 com Cpanel/Whm
Eu rodo neste servidor um sistema Open Sim para um jogo virtual.
Eu pensei em criar um script que verifique se todas as ilhas(processos) estão on line, caso ele verifique que não esta on line ele irá colocar ela on line.
Se eu rodar esta linha no meu terminal ele verifica a ilha se esta on line e caso não esteja ele coloca ela on line.

/home/worlddow/server/world/opensim/start1.sh

Excelente funcionando perfeitamente.
Agora se eu for no CRON e colocar esta mesma linha para ele fazer isso a cada 1 minuto, ele verifica se está ativo vê que não está ativo e tenta levantar a ilha (processo) e não consegue, e fica tentando direto. O que eu recebo do CRON é o seguinte:

OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida nao esta ligado! iniciando...
OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida iniciando OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida iniciando programa

E eu fico recebendo esta mensagem direto e nada dele conseguir levantar a ilha(processo). Lembrando que esta mesma linha no terminal ele levanta a ilha(processo) normal.

Conteúdo do meu start1.sh

#!/bin/sh
export TERM=xterm
# Name of program in ps-list
NAME1="OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida"
# Start command
cd /home/worlddow/server/world/opensim/bin-17-06-2014
START1="screen -dmS Atlantida mono --runtime=v4.0 OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida"
# check if Robust.exe running
if ( ps ax | grep -v "grep $NAME1" | grep "$NAME1" ) then
echo "$NAME1 esta ativo..."
# check if MonoServer.exe running
else
echo "$NAME1 nao esta ligado! iniciando..."
$START1 &
echo "$NAME1 iniciando"
echo "$NAME1 iniciando programa $START2"
fi
exit 0

Será que alguém poderia me ajudar dizendo o que estou fazendo de errado?
Agradeço pela ajuda.



  


2. Re: Não funciona Sh no Cron do Centos [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/07/2014 - 17:03h

Você roda um comando de dentro do screen. Se o cron não envia uma mensagem de erro por e-mail, então o comando screen, em si, está funcionando, mas talvez o comando dentro dele não esteja.

Minha sugestão é você executar o screen numa forma parecida com a seguinte:

screen -d -m -S Atlantida sh -c 'mono --runtime=v4.0 OpenSim.exe -inidirectory=/home/worlddow/server/world/opensim/atlantida; read' 


Desse modo, seu serviço vai executar dentro de um shell e, depois que ele terminar, o comando read vai impedir que esse shell termine, permitindo que você execute um “screen -r” e veja eventuais mensagens de erro que possam ter ocorrido.

Em tempo: lembre-se de que algumas variáveis de ambiente que você define durante sua sessão de login podem não estar definidas ou ter valores diferentes quando a execução é via cron. Em particular, o valor da variável PATH é bem conservador, e as variáveis referentes a idioma podem ser bem diferentes.


3. Re: Não funciona Sh no Cron do Centos [RESOLVIDO]

Valter Cesar Bertucio
bertucio

(usa CentOS)

Enviado em 16/07/2014 - 08:36h

Olá

Eu fiz o que você falou, só não entendi uma coisa.

Eu verifiquei no screen e apareceu assim:

mono: command not found


não entendi porque ele não encontra, uma vez que antes eu indico que ele precisa entrar na pasta

cd /home/worlddow/server/world/opensim/bin-17-06-2014


Obrigado, pela ajuda.


4. Re: Não funciona Sh no Cron do Centos [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/07/2014 - 14:53h

Como eu indiquei, o valor da variável PATH é conservador.

Ao contrário do mundo Microsoft, estar em um diretório não significa que executáveis nesse diretório serão procurados para execução.

A razão disso é segurança. Imagine, por exemplo, que eu sou administrador (root) de uma máquina e que desconfio que um usuário qualquer esteja fazendo coisas indevidas. Para verificar as intenções dele, eu entro no diretório dele e executo um ls, para procurar arquivos suspeitos. O que você acha que aconteceria se ele tivesse colocado nesse diretório um arquivo executável chamado “ls”, justamente esperando o dia em que o administrador chegasse para fuçar nos arquivos dele, e que esse programinha “ls” alternativo fizesse coisas curiosas, tais como dar acesso privilegiado para esse suspeito, roubar dados confidenciais de outros usuários, ou destruir uma ou mais partições do disco.

Para executar coisas no diretório corrente, muita gente inclui o diretório corrente, referido como “.”, na variável PATH. Por razões de segurança, como a que expus acima, eu considero isso uma abominação (e, como eu, muita gente, tanto que o default é não o incluir).

Assim sendo, se você tiver um programa chamado prog dentro do diretório /algum/diretorio, minha recomendação é proceder de um dos seguintes modos.

# Se você precisar executar prog com pouca frequência, mas ele precisa
# estar dentro de /algum/diretorio ao ser executado
cd /algum/diretorio
./prog


# Se você precisar executar executar prog com pouca frequência, e ele não
# depende do diretório corrente para executar
/algum/diretorio/prog


# Se você executa prog com muita frequência durante sua sessão de login,
# e isso pode ser feito a partir de qualquer diretório, então a variável
# PATH pode conter /algum/diretorio no início da sessão (.bash_login ou
# .profile, que ficam dentro do seu diretório HOME). Desse modo, ao longo
# da sessão você poderá digitar somente "prog".
if [ ! -z "$PATH" ]; then
if ! echo "$PATH" | egrep -q '(^|.*:)/algum/diretorio(:.*|$)'; then
PATH="${PATH}:/algum/diretorio"
fi
else
PATH="/algum/diretorio"
fi
export PATH



5. Re: Não funciona Sh no Cron do Centos [RESOLVIDO]

Valter Cesar Bertucio
bertucio

(usa CentOS)

Enviado em 17/07/2014 - 19:03h

Ok, obrigado, vou tentar.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts