Eu tentei criar um script de inicialização do systemd que inicia uma verificação do rkhunter 30 minutos após o início do sistema do meu laptop, assim:
[Unit]
Description=starts rkhunter and displays any findings with zenity
[Service]
ExecStartPre=/bin/sleep 1800
ExecStart=/usr/local/sbin/rkhunter-check
[Install]
WantedBy=default.target
Mas isso falha com um erro de tempo limite
Job for rkhunter.service failed because a timeout was exceeded.
Parece que o ExecStartPre não funciona assim.
Como resolvo isso?
Uma solução perfeita seria:
- primeira execução 30 minutos após a inicialização
- repita a cada 48 horas (caso você nunca desligue seu laptop)
Use uma unidade de timer para agendar os horários de início do serviço. Uma unidade de timer é flexível o suficiente para que você possa usar uma única para agendar tanto a execução inicial, 30 minutos após a inicialização, quanto as repetições 48 horas após a primeira execução. (E você pode até decidir se deseja 48 horas após o início ou 48 horas após o término da execução.)
Arquivo
rkhunter.service
:Arquivo
rkhunter.timer
:Observe que você não precisa de uma
[Install]
seção em sua unidade de serviço, pois não deseja "habilitá-la", pois isso a executaria durante a sequência de inicialização e o que você deseja é executá-la apenas 30 minutos depois.Você desejará habilitar a unidade de timer , para que ela seja habilitada na inicialização e inicie a unidade de serviço nos horários configurados. Então:
Se você já tinha o serviço ativado, você vai querer desativá-lo explicitamente, pois agora ele deve ser iniciado apenas pela sua unidade de timer:
Se você nunca habilitou esse serviço antes e está implementando essa configuração do zero, não há necessidade desse comando.
Após a reinicialização, isso deve funcionar conforme você descreveu seus requisitos.
Se você quiser usar um comando de suspensão longa no serviço,
ExecStartPre
você precisa desabilitar o tempo limite comTimeoutStartSec=infinity
:Se você deseja iniciar o serviço repetidamente a cada 48h, adicione um timer conforme sugerido por @filbranden