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.