서버로 사용하고 싶은 원격 위치에 컴퓨터가 있습니다. 항상 뚜껑을 닫아두고 화면이 꺼지면 항상 실행되도록 설정해두었어요. 이 서버를 사용하여 소프트웨어를 실행하기 때문입니다. 실행 중인 애플리케이션에 대한 업데이트를 얻기 위해 스크린샷을 찍고 싶습니다. X 서버가 실행되지 않을 때 활성 창의 이미지를 저장할 수 있는 방법이 있는지 궁금합니다.
업데이트: ps -e | grep X
Xorg의 출력 PID: 581. 그래서 내 Xserver가 실행 중입니다.
업데이트: X11 전달을 사용하지 않습니다.
업데이트: 가능하다면 원격 컴퓨터의 활성 창(firefox)의 스크린샷을 찍어야 합니다. 해당 스크린샷을 내 원격 컴퓨터에 저장하고 사용하세요.scp host1:/path/to/screenshot/ localhost:/destinationfile
답변1
이와 같은 유틸리티를 사용하고 싶습니다scrot
.
ssh
원격 시스템에서 다음 명령을 실행할 수 있습니다.
scrot '%Y-%m-%d_$wx$h.png' -e 'mv $f /home/user/shots/'
이 명령은 파일 이름을 사용하여 현재 화면의 스크린샷을 찍고 파일 이 있는 경우 YEAR-MONTH-DAY_SCREENWIDTH_SCREENHEIGHT.png
해당 디렉터리로 파일을 이동합니다 . /shots
입력 없이 주기적으로 실행해야 하는 경우예약 된 일들.
실행하려는 명령을 사용하여 bash 스크립트를 만듭니다. 매시간 명령을 실행하려는 경우 다음과 같습니다.
#!/bin/bash
scrot '%Y-%m-%d-%H.png' -e 'mv $f /home/user/screenshots/'
이 파일을 적절한 위치에 저장하고 /home/user/scripts
실행 가능하게 만듭니다( chmod +x screenshot.sh
) .
매시간 실행하려면 사용자의 crontab에 다음 줄이 포함되어야 합니다( crontab -e
사용자의 crontab을 편집하려면 실행).
1 * * * * /home/user/scripts/screenshot.sh >/dev/null 2>&1
이는 screenshot.sh
매 시간의 첫 번째 1분에 실행됩니다.
또는 스크립트를 저장 /etc/cron.hourly
하고 매시간 실행되도록 할 수 있습니다.
여기확인해야 할 crontab 사용에 관한 관련 기사입니다.
scrot
귀하의 요구 사항을 충족하는지, cronjob이 제대로 작동하는지 테스트하십시오 . 그런 다음 프로세스를 더욱 자동화하여 자동으로 이미지를 이메일로 보내거나 .push를 통해 컴퓨터에 푸시할 수 있습니다 scp
.
행운을 빌어요!
답변2
X에서 실행 중인 항목이 있으면 X는 여전히 실행 중입니다. X를 죽이면 X를 사용하는 대부분의 프로그램이 종료됩니다.
따라서 몇 가지 작업을 수행할 수 있습니다(예를 들어 원격 용어에 DISPLAY 변수를 설정해야 한다는 점을 기억하세요 DISPLAY=:0
).
import -window root screenshot.png
Imagemagick에는 실행 시 스크린샷을 제공하는 "가져오기"라는 유틸리티가 있습니다 .- scrot는 스크린샷을 찍을 수 있지만 명령줄을 모릅니다.
- x11vnc를 사용하면 vnc를 통해 실행 중인 X 디스플레이에 액세스할 수 있습니다.