EDIT: Note que estou falando apenas sobre o PID 1 porque não consigo falar inglês e achei que você deseja verificar o seu processo de inicialização principal. Mude isso para a unidade em que você está interessado. Tenho certeza que o systemd vai cuspir PID para você de alguma forma. Ou se não, ps ax |grep [commandname]
fará isso. Você provavelmente precisará ajustar a diferença de tempo entre o tempo de atividade e o tempo decorrido do processo, apenas adicione um +3
ou o que quer que seja para bc line./EDIT
Eu não estou usando o systemd, então pegue isso com um pouco de sal. A maneira agnóstica do sistema de inicialização seria comparar a hora de início do processo em que você está interessado e o tempo de atividade do sistema. Você pode obtê-los com ps -o etimes [PID]
. Tradicionalmente, o PID 1 é reservado para o processo init, mas não sei se o sistema adere a ele. Verifique com ps 1
se é realmente o processo que você está interessado e ajuste se não. Você pode obter o tempo de atividade do sistema em segundos (entre outros) com cat /proc/uptime |cut -d "." -f 1
. Delimitador para cut
é ponto, pois ps
também elimina os decimais.
compare-os com bc ou com o seu jeito favorito. Exemplo de linha de comando poderia ser:
echo $(cut -d "." -f 1 /proc/uptime)"-"$(ps -o etimes [PID] |tail -n 1 |tr -d ' \t')|bc
A saída esperada é 0 se o processo for iniciado no tempo de inicialização. Você pode verificar se corresponde às suas descobertas. Para scripts de shell, eu o executaria através de if / then testes e aceito talvez + -3 segundos como tempo de boot. Um segundo pelo menos. Caso contrário, você poderá receber ocasionalmente uma resposta diferente de zero se os tempos de disponibilidade forem diferentes, mesmo que seja uma pequena fração de segundo, o que pode levar a erros de depuração difíceis.