init.d script não envia dados gráficos

0

Eu tenho um programa java de servidor cliente. O trabalho do cliente é capturar a tela e enviar dados para o servidor. Uma função adicional é abrir o site fornecido pelo servidor e enviar algum texto para o servidor. Eu queria que o cliente fosse executado na inicialização, então escrevi um script e usei-o em /etc/init.d e usei update-rc.d scriptname defaults e, em seguida, reiniciei. Na reinicialização, o texto que devo receber funciona perfeitamente. Mas não consigo navegar ou receber tela capturada do cliente.

O script que usei no init.d é o seguinte:

#!/bin/sh

### START INIT INFO
# Provides: suscript
# Required-Start:    $remote_fs $syslog $local_fs $network
# Required-Stop:     $remote_fs $syslog $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

java -jar /etc/capture/capture.jar

Eu corro o jar do cliente como root. Como trago os dados gráficos para o servidor?

    
por Joker 10.06.2014 / 14:59

1 resposta

3

Java has Rectangle class to capture screenshots, so I am using it to capture the screen which occurs in front of me as desktop. I think most probably we will be using it for screenshot of an X session.

Pode haver várias sessões X (ou nenhuma) e, em qualquer caso, o seu processo não está associado a nenhuma delas, por isso é difícil dizer como pode ser considerado ter alguma tela capturar. Só porque está sendo executado em um sistema que possui um monitor físico conectado, não significa que o processo esteja sendo executado no monitor. Está rodando em segundo plano do sistema.

Se você tem um meio de garantir que o processo está sendo executado em uma sessão X, você deve explicar o que é isso - isso não acontece automaticamente. Além disso:

# Required-Start:    $remote_fs $syslog $local_fs $network

Nada disso inclui nada sobre o X, e muito provavelmente este serviço será iniciado antes de qualquer GUI rodando (tendo em mente que uma tela inicial é apenas uma imagem, não uma GUI). Sendo esse o caso, as partes dele que exigem essa interface falharão.

Supondo que você esteja usando um gerenciador de exibição, você vai querer ver como o sistema init agendou seu processo em relação a isso e definir seus pré-requisitos para que ele seja iniciado após o DM.

    
por 10.06.2014 / 15:39