Execute um script (R) como um serviço [server 2012R2]

2

(noob completa do windows aqui, eu uso o Linux desde criança)

Se eu apenas executar:

C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe  C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R

no terminal DOS do servidor windows como administrador, funciona bem.

Agora eu preciso executar este script como um serviço (política do lugar que me paga comida);

Eu olhei um pouco na internet e coloquei isso no terminal DOS do servidor windows:

sc create myRScript5 binPath= "cmd.exe /c C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe  C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R" DisplayName= "My R script 5" 

O serviço é exibido corretamente na lista. Eu clique com o botão direito e pressione 'start'. Eu recebo:

Error 1053: The Service did not respond to the start request 

Eu também tentei algumas variantes mais ou menos inspiradas, como:

sc create myRScript3 binPath= "C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe \"C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\progtest.R\"" DisplayName= "My R script 3" 

Eu devo estar fazendo algo estúpido, mas não sei o que. FWIW aqui é code_15.R

setwd("C:/Users/NPX9sx9000010190CAL/Desktop/el_leo")


library(doSNOW)

print('boom')
set.seed(123)
x = runif(10)
write.table(x, 'yahoo.txt')

EDITAR

Alguns estou tentando solução SqlACID (provavelmente botching em algum lugar).

Eu instalei o srvany.

Eu criei um arquivo

C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\rrr.bat 

que contém:

C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe  C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R

Eu iniciei o terminal do Windows como administrador e executei:

sc create "MyFirstService" binPath= "C:\Temp\SrvAny.exe" start= auto

Eu obtenho

[SC] CreateService SUCCESS

do terminal do Windows. Eu inicio o RegEdit e descobri

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyFirstService

Eu criei um parâmetro chave

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyFirstService\Parameters

Dentro dele, criei uma nova string Application do tipo REG_SZ e com value_data:

C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\rrr.bat

Em seguida, vou para Serviços, localizo MyFirstService e clico com o botão direito do mouse em Run;

Eu tenho

Error 2: The system could not find the file specified
    
por user189035 08.08.2017 / 17:50

1 resposta

3

Espera-se que os serviços respondam às solicitações de início / parada de maneiras muito específicas, e o cmd.exe não é capaz de fazer isso; costumava haver um "service wrapper" que encapsulava um executável genérico como um serviço, ele era fornecido com o Windows Server Resource Kit , procure por SRVANY.EXE, não tenho idéia se funcionaria com sistemas operacionais mais novos ou se há alternativas, mas vale a pena tentar.

OP resolveu o problema usando uma tarefa agendada executando um arquivo em lotes em vez de um serviço.

OP aqui: Um colega contribuiu com o seguinte:

schtasks /create /sc ONCE /tn OP /tr C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\R.bat /st 09:35
    
por 08.08.2017 / 18:22