pidof não oferece uma maneira de especificar /path/to/script para corresponder aos comandos do formulário interpretername /path/to/script . Ele sempre olha para o nome do arquivo do executável listado no arquivo /proc/pid/stat .
Mas funcionará se o seu script começar com shebang #! e se você invocar o script com /path/to/script .
Como alternativa, a maioria dos sistemas GNU / Linux oferece um comando pgrep , que pode corresponder a toda ou parte de uma linha de comando. No seu exemplo, você pode usar
pgrep -x -f 'python /some/dir/script.py -v'
Isto irá corresponder à linha de comando exata. Se você quiser combinar uma linha de comando parcial, você pode fazer algo como
pgrep -x -f 'python /some/dir/script.py .*'
Você pode omitir o -x para colocar um .* implícito no início e no final do padrão, mas isso também corresponderá ao seu processo su - user -c python /some/dir/script.py -v .
Como você mencionou nos comentários, a melhor maneira de garantir que seu comando não execute várias instâncias ao mesmo tempo é usar o bloqueio de arquivo, como fcntl.flock .