init.d 스크립트가 그래픽 데이터를 보내지 않습니다

init.d 스크립트가 그래픽 데이터를 보내지 않습니다

클라이언트 서버 Java 프로그램이 있습니다. 클라이언트의 임무는 화면을 캡처하고 데이터를 서버로 보내는 것입니다. 다른 기능은 서버가 제공한 웹사이트를 열고 일부 텍스트를 서버로 보내는 것입니다. 클라이언트가 시작 시 실행되기를 원했기 때문에 스크립트를 작성하여 사용한 /etc/init.d다음 update-rc.d scriptname defaults다시 시작했습니다. 다시 시작한 후 수신되어야 하는 텍스트가 완벽하게 작동합니다. 하지만 클라이언트에서 캡처한 화면을 탐색하거나 수신할 수 없습니다.

init.d에서 사용하는 스크립트는 다음과 같습니다.

#!/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

클라이언트 jar를 루트로 실행하고 있습니다. 그래픽 데이터를 서버로 전송하는 방법은 무엇입니까?

답변1

Java에는 스크린샷을 캡처하기 위한 Rectangle 클래스가 있으므로 이를 사용하여 내 앞에 나타나는 화면을 데스크탑으로 캡처합니다. 아마도 X 세션의 스크린샷을 찍는 데 사용할 것 같습니다.

X 세션이 여러 개 있을 수도 있고 없을 수도 있으며 어떤 경우에도 프로세스는 다음과 동일합니다.어느따라서 캡처할 화면을 갖는 것을 고려하는 방법을 말하기는 어렵습니다. 물리적 모니터가 연결된 시스템에서 실행되고 있다고 해서 프로세스가 해당 모니터에서 실행되고 있다는 의미는 아닙니다. 달리기백그라운드에서체계적인.

프로세스가 X 세션에서 실행되도록 하는 방법이 있다면 그것이 무엇인지 설명해야 합니다. 자동으로 발생하지 않습니다. 더 멀리:

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

이들 중 어느 것도 X에 대한 내용을 포함하지 않으며 GUI가 실행되기 전에 서비스가 시작될 가능성이 높습니다(스플래시 화면은 GUI가 아닌 이미지일 뿐이라는 점을 기억하십시오). 이 경우 해당 인터페이스가 필요한 부분은 실패하게 됩니다.

디스플레이 관리자를 사용한다고 가정하면 init 시스템이 이와 관련된 프로세스를 예약하는 방법을 살펴보고 시작하기 위한 전제 조건을 설정해야 합니다.뒤쪽에DM.

관련 정보