2012-10-16 3 views
2

우분투를 사용하여, 우분투 서버를위한 쉘 스크립트 (bash)를 만들고 싶습니다. 그러면 firefox 인스턴스가 열리고 닫힙니다. 그 특정 인스턴스의 브라우저는입니까?bash를 사용하는 프로세스 열기 및 닫기

파이어 폭스의 인스턴스를 열려면, 내가 쓸 수 있습니다 :

firefox www.example.com 

내가 모든 파이어 폭스 인스턴스를 검색하는 것을 읽고,하고 수동 내가 쓸 수 종료 :

ps aux | grep firefox 
pidof firefox 
kill #process# 

그러나 처음에 열어 본 인스턴스 인스턴스를 검색 할 수있는 방법이 있습니까? 당신은 실행중인 모든 프로세스의 ID를 얻기 위해 jobs을 사용할 수 있습니다

답변

1

(예를 들어 스크립트 내부) 그 쉘

#!/bin/bash 

firefox www.example.com & 
PID=`jobs -p` 

kill $PID 

이 옵션에 대한 help jobs를 참조하십시오에서 시작했다. jobs모든 프로세스가이 쉘으로 시작 했으므로이 방법을 따르고 여러 프로세스를 종료하려는 경우 올바른 프로세스를 찾으려면 jobs의 출력에서 ​​추가 구문 분석을 수행해야 할 수 있습니다.

+0

: 당신이 종료 파이어 폭스 당신이 위험을 줄이기 위해 다음과 같이 뭔가 킬 (kill)을 변경할 수있는 평균 시간에 다른 프로세스에있는 할당 $ {PID}에 대해 걱정하는 경우

#!/bin/bash firefox www.example.com & declare -i PID=$! # blah, blah, blah kill ${PID} 

또한 시작된 인스턴스와 PID가'PID'에 저장된 경우'kill' ** 및 ** 프로세스를 호출하기 전에 이미 종료 된 인스턴스가 있으면이 프로세스는 매우 어려운 경쟁 조건을 초래합니다. 그러면 잘못된 프로세스가'kill' 될 것입니다! – alk

+0

@leenremm : 여러 프로세스를 시작할 때 더 잘 작동하는 Brian의 답변도 많이 얻으십시오. 또한 Brian과 나의 대답은 모두 alk가 지적한 경쟁 조건을 가지고 있습니다. –

1

백그라운드에서 프로세스를 시작하고 해당 PID를 기억하십시오.

ps -p ${PID} | fgrep firefox && kill ${PID}