Crontab para rodar script de screenshot [RESOLVIDO]

1. Crontab para rodar script de screenshot [RESOLVIDO]

Luiz Henrique
LuizCosta

(usa CentOS)

Enviado em 11/02/2020 - 14:53h

Fala Pessoal tudo bem?

Eu to tentando realizar uma tarefa no cron que seria simplesmente tirar um print da minha tela a cada 5 minutos, porém ta dando erro na hora que executo esse comando pelo cron.

o comando é esse:

import -window root /home/luiz/tela.png

ok, se eu executo esse comando no terminal, OK, ele executa e salva o print la na minha pasta

Porém se eu executo no cron dá o seguinte erro:

import-im6.q16: unable to open x server `' @ error/import.c/ImportImageCommand/358.

eu ja dei chmod na pasta no script em tudo quanto é lugar e por algum motivo não ta indo, inclusive executei a job no cron pelo root mas tbm não vai.

Se alguém puder me ajudar, ficaria grato, abraço!


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/02/2020 - 01:23h

Acesso ao ambiente gráfico normalmente é afetado por variáveis de ambiente, tais como DISPLAY e XAUTHORITY. Se for uma aplicação mais voltada para FreeDesktop e comunicação via DBUS, outras ainda podem ser necessárias (por exemplo: DBUS_SESSION_BUS_ADDRESS e DESKTOP_SESSION). E mesmo os valores de coisas mais básicas, tais como PATH, LANG ou LC_... podem influenciar a aplicação e ser diferentes quando a tarefa é executada via cron.

É muito improvável que as variáveis relativas à sessão X11 e/ou FreeDesktop estejam definidas no momento em que o serviço cron (ou equivalente) execute seu crontab, pois todas elas têm a ver com uma sessão de login interativo, podendo inclusive mudar entre um login e outro. Isso é difícil de o cron, sem alguma ajuda se sua parte, tentar simular, de modo que ele nem sequer tenta tal simulação.

Dá para fazer via cron? Dá, mas eu não estou certo de se é o melhor caminho. Se o que você quer capturar é tirar fotos periódicas da sua sessão de login, possivelmente seria melhor usar um agendador de tarefas especificamente vinculado à sessão (mas confesso que eu não sei se existe um programa assim; ao procurar rapidamente sobre “task scheduler” para Gnome e para KDE, só encontrei interfaces para manipular crontabs).

Mesmo que você queira capturas de tela forçadas, ainda que seja outra pessoa logada, em vez de você, ou ainda que não haja ninguém logado, ainda assim eu creio que possa haver caminhos simples do que o cron, tal como, por exemplo, colocar um script executando em loop como parte da inicialização do display (etapa de Xsetup).

Por exemplo, imagine o seguinte script.

#!/bin/sh

MAX_FAILURES=5

[ -z "$DISPLAY" ] && exit 1

failures=0
while : ; do
if ! import -window root "/tmp/tela-$DISPLAY.png"; then
# Falha de execução pode indicar que a sessão já terminou. Mesmo assim,
# tenta mais algumas ezes antes de interromper as captura, pois a causa
# ode também ser por uma situação temporária. De todo modo, você pode
# tentar sofisticar um pouco mais a detecção e tratamento de erros.
failures=`expr $faillures + 1`
[ $failures -gt $MAX_FAILURES ] && exit 1
fi
sleep 300 # Pausa de 5 minutos (300 segundos)
done & # Executa o laço de repetição num subshell e em background (um arremedo de daemon).

exit 0 # Volta ao Xsetup (ou ao programa que o chamou).


Se você colocar o script acima como parte das rotinas do Xsetup, ele deve (não testei) herdar os valores já definidos de variáveis de ambiente, satisfazendo requisitos do comando de captura da tela, e vai executar (como root) ao longo de toda a vida do processo que exibe o ambiente gráfico, mesmo antes de o usuário fazer login ou até depois do logout (se o gerenciador de sessão estiver configurado para preservar o mesmo processo do servidor X11). Mas você também pode colocá-lo como script a ser executado no início da sua sessão de login (por meio, por exemplo, do painel de controle do KDE ou Gnome), e pode até executá-lo manualmente.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: Crontab para rodar script de screenshot [RESOLVIDO]

John Doe
Xampef

(usa Linux Mint)

Enviado em 12/02/2020 - 07:42h

O Github tem um script de trabalho para sua pergunta.


4. Re: Crontab para rodar script de screenshot [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/02/2020 - 08:10h

Use o systemd






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts