Veja este comando chamado at
link
você pode executar comandos em um horário específico
Use isso para iniciar seu aplicativo em um horário específico
Eu quero o seguinte comportamento: if Estou logado, e é um certo tempo, e o programa ainda não foi iniciado, inicie o programa. Como posso conseguir isso?
Veja este comando chamado at
link
você pode executar comandos em um horário específico
Use isso para iniciar seu aplicativo em um horário específico
Supondo que este aplicativo é um aplicativo gráfico que requer um X display para conectar, eu escreveria um script que dorme por X segundos e então executaria o aplicativo, onde X é o número de segundos até o tempo desejado. Em seguida, execute isso por meio de aplicativos de inicialização.
Algo parecido com isto:
#!/usr/bin/env bash
# run at 16:30
h=16 m=30
while true; do
# grab current hour and minute
read now_h now_m < <(date "+%H %M")
# calculate approximate number of seconds until 16:30 using modular
# arithmetics
(( s = (1440 + (10#$h*60 + 10#$m) - (10#$now_h*60 + 10#$now_m)) % 1440 * 60 ))
printf "Sleeping %d seconds\n" "$s"
sleep "$s" && theapp
done
Isso deve executar o aplicativo entre 16:30 e 16:31 todos os dias enquanto você estiver conectado.
Eu escreveria um script para ser executado pelo CRON.
Para verificar se um usuário está logado:
who -a | grep fred
Onde fred
é o nome do usuário que você deseja verificar.
ps -ef | grep appname
Irá retornar algo se encontrar appname
em execução para que você possa verificar isso.
Certifique-se de executar o script com as credenciais de usuário apropriadas (root?)
Então, por exemplo, aqui está um pequeno trecho de script que mostra o teste da saída do cmd | grep ....
:
#!/bin/bash
if who -a | grep fred > /dev/null; then
echo "Fred is logged in"
if ps -ef | grep appname > /dev/null; then
echo "User is logged in and app is running"
else
echo "User is logged in BUT appname is not running"
# ---- Do stuff here ----
fi
else
echo "Fred is NOT logged in"
fi
Uma coisa a notar é que a maneira como codifiquei grep
significa que ele faz uma pesquisa curinga por padrão, então grep jul
encontraria julian
e july
, etc.