receive command como um parâmetro no bash

1

Eu tenho um script simples chamado single-instance que executa o comando dado se não houver nenhum processo sob esse comando em execução. Se eu codificar o comando após a instrução else, ele não terá problemas para executar, mas se eu substituir o comando hard-coded por $ 1 ou $ @, não obtenho nenhuma nova instância do comando. Existe um mecanismo de segurança no bash para evitar esse comando?

#!/bin/bash
if ps ax | grep -v grep | grep $1 > /dev/null;then
    wmctrl -xa $1
else
    # works fine if I switch $1 to terminator
    $1
fi

A parte da instrução if funciona bem. Eu só recebo uma instância do processo, desde que eu invoque usando este script.

    
por Forethinker 04.12.2012 / 04:55

2 respostas

1

Grep vê o nome do comando que é invocado por 'single-instance' eu adicionei o daemon na opção grep porque alguns programas têm o processo daemon em execução mesmo que sua instância no Gerenciador de Janelas não exista.

#!/bin/bash
if ps -fp $(pgrep -d, "$1") egrep -v "single-instance|daemon" | grep $1;then
    wmctrl -xa $1
else
    $1
fi

Obrigado Mikel por me guiar para descobrir isso.

    
por 04.12.2012 / 07:39
0

O que você está tentando fazer? Manter algum tipo de daemon em execução o tempo todo? Talvez você devesse dar uma olhada em systemd .

    
por 24.01.2013 / 04:17

Tags