O problema aqui é que ps
por padrão mostra apenas o comando base em sua saída, não a linha de comando inteira incluindo argumentos.
Se você iniciar seu script com bash TestEric.sh
, o comando base será bash
. Se você executá-lo como TestEric.sh
(possivelmente incluindo seu caminho), o comando base será esse e não o bash.
Você pode usar facilmente pgrep
em vez de ps
para listar processos filtrados por nome. Ele tem um sinalizador -f
que faz com que ele corresponda ao padrão fornecido em toda a linha de comando, em vez de apenas no comando base.
O sinalizador -a
faz com que exiba toda a linha de comando em sua saída para fins de depuração, em vez de apenas o PID. Depois de verificar se funciona, você pode / deve removê-lo novamente no script.
Tente isto:
pgrep -f -a TestEric.sh
Mais tarde, você pode contar os processos usando wc
contando as linhas de saída pgrep
:
pgrep -f TestEric.sh | wc -l