Aguardando arquivo de unidade
Aqui está um protótipo que faz o que você está procurando. Para começar, aqui está um arquivo de unidade do systemd, waity.service
:
$ cat /etc/systemd/system/waity.service
[Unit]
Description=Waity Service
After=systend-user-sessions.service
[Service]
Type=simple
ExecStart=/opt/bin/waity.sh
Script de espera
Ele executa um script que faz a interrogação do systemd para ver se ele está pronto para iniciar:
$ cat /opt/bin/waity.sh
#!/bin/bash
while $(sleep 10); do
echo "waiting for systemd to finish booting..."
if systemctl is-system-running | grep -qE "running|degraded"; then
break
fi
done
echo "systemd finished booting..."
echo "...do something else..."
Exemplo de execução
Agora ative este serviço:
$ systemctl enable --now waity.service
Agora, quando iniciarmos nosso sistema, esse serviço ficará em um loop de 10 segundos até ver que a ação is-system-running
de systemctl
retornará um estado running
ou degraded
. Qualquer uma dessas é uma indicação de que o sistema concluiu a inicialização.
O status deste serviço:
$ systemctl status waity.service
● waity.service - Waity Service
Loaded: loaded (/etc/systemd/system/waity.service; static; vendor preset: disabled)
Active: inactive (dead)
Aug 03 22:06:01 centos7 waity.sh[4519]: Got unexpected auxiliary data with level=1 and type=2
Aug 03 22:06:01 centos7 waity.sh[4519]: Got unexpected auxiliary data with level=1 and type=2
Aug 03 22:06:01 centos7 waity.sh[4519]: systemd finished booting...
Aug 03 22:06:01 centos7 waity.sh[4519]: ...do something else...
Aug 03 22:06:01 centos7 systemd[1]: Child 4519 belongs to waity.service
Aug 03 22:06:01 centos7 systemd[1]: waity.service: main process exited, code=exited, status=0/SUCCESS
Aug 03 22:06:01 centos7 systemd[1]: waity.service changed running -> dead
Aug 03 22:06:01 centos7 systemd[1]: waity.service: cgroup is empty
Aug 03 22:06:01 centos7 systemd[1]: Collecting waity.service
Aug 03 22:07:17 centos7 systemd[1]: Collecting waity.service
Podemos ver nas mensagens acima que detectamos uma inicialização concluída:
Aug 03 22:06:01 centos7 waity.sh[4519]: systemd finished booting...
Aug 03 22:06:01 centos7 waity.sh[4519]: ...do something else...
Nesse momento, poderíamos fazer o ...do something else...
. Quando tudo isso estiver completo, este serviço irá para um estado concluído / morto.