No Linux, você pode usar pgrep para obter PIDs de prováveis suspeitos e inspecionar o primeiro argumento desses PIDs (disponível em /proc/$PID/cmdline ). /proc/$PID/cmdline tem todos os argumentos (incluindo o argumento 0) do processo, separados por ASCII NUL ( ). sed
Algo como:
pgrep bash | xargs -I {} sed -nz '2{p; q}' /proc/{}/cmdline | grep -Fqzx "$0"
Isso pressupõe as linhas separadas por nulo grep e sed . O cmdline imprime a segunda linha dos respectivos arquivos grep (argumento 1), que seria o nome do script. sed procura correspondências exatas do nome do seu script. Você poderia fazer a correspondência inteira em %code% , mas não estou com vontade de fazer malabarismos com citações.
Isso falhará se você chamar seu script por caminhos diferentes:
/home/user/myscript
cd /home; usr/myscript
myscript
No entanto, deve ser seguro contra espaços em branco em nomes de scripts.