2013-06-21 2 views
2

나는 Oracle Linux를 사용 중입니다. 다음을 수행하는 쉘 스크립트가 있습니다.리눅스에 열려있는 모든 그놈 터미널의 목록 또는 이름

#some stuff happening here 

gnome-terminal --title='my application' -x /path/my_application -param val 

#some more stuff 

이제 스크립트가 여러 번 실행될 가능성이 있습니다. 그러나 아직 실행 중이 아니면 my_application 만 시작하면됩니다. 그 다음 코드를 찾았습니다 :

ps cax | grep my_application > /dev/null 
if [ $? -eq 0 ]; then 
    echo "My application already running." 
else 
    gnome-terminal --title='my application' -x /path/my_application -param val 
fi 

이 작동합니다. 여기 내가 문제가있는 곳이야. 두 번째 쉘 스크립트가 있습니다. 또한 my_application이지만 다른 매개 변수로 실행됩니다. 두 스크립트가 함께 실행될 수도 있습니다. 이 경우 다른 매개 변수가 있기 때문에 실행중인 my_application의 두 인스턴스가 있어야합니다. 내 아이디어는 각각의 그놈 터미널에 다른 제목을주고 그 타이틀이있는 그놈 터미널이 이미 존재하는지 확인한 후에 my_application을 시작하는 것입니다.

그렇다고 완전히 잘못 될 수도 있으므로 제안을 환영합니다.

요약하면 두 가지 스크립트가 모두 동일한 응용 프로그램을 시작하지만 매개 변수가 다릅니다. 두 스크립트는 함께 실행될 수도 있고 여러 번 실행될 수도 있습니다. 주어진 스크립트가 응용 프로그램을 시작한 경우 해당 스크립트가 다시 실행될 때 응용 프로그램이 다시 시작되지 않아야합니다 (응용 프로그램이 아직 실행중인 경우). 그러나 응용 프로그램을 시작하는 한 스크립트가 다른 응용 프로그램을 시작하지 못하게해서는 안됩니다.

답변

2

스크립트 1 :

CMD="gnome-terminal --title='my application' -x /path/my_application -param val" 

flock -n /var/lock/mylock1 $CMD || echo "My application already running." 

스크립트 2 :

CMD="gnome-terminal --title='my application' -x /path/my_application -param val" 

flock -n /var/lock/mylock2 $CMD || echo "My application already running." 
+0

나는 무리에 대해 알고하지 않았다, 그 주셔서 감사합니다 그래서. 그러나이 특정 솔루션은 작동하지 않습니다. 대신 gnome-terminal --title = 'my application'-x flock -n/var/lock/mylock1/path/my_application -param val과 같은 형태 여야합니다. – PhilBel

관련 문제