Veja esta pergunta semelhante sobre o stackoverflow . O comando pgrep
pode verificar a existência de um processo em execução.
O comman pgrep -f <file>
retornará o número de instâncias atuais do arquivo especificado. Por exemplo:
[user@localhost ~]$ pgrep -f /sbin/init
1
[user@localhost ~]$
Ele não retornará nada se o arquivo não estiver associado a um processo.
Isso pode ser incorporado em um script bash que executará o script se ainda não estiver em execução:
#!/bin/bash
if [[ ! $(pgrep -f script.sh) ]]; then
script.sh
fi