내 홈 폴더에 gnome에서 실행되는 응용 프로그램이 있습니다. 이제 Meta+를 누르면 실행하고 싶은 애플리케이션을 추가했습니다 R.CCSM). 내 홈 폴더에서 실행하여 응용 프로그램을 실행합니다 ./gnome-run
.
출력물에서 신청 과정의 흔적을 찾을 수 없습니다 ps -A
.
문제는 gnome-run 프로그램을 열고 키 조합을 누르면 응용 프로그램이 닫히기를 원한다는 것입니다. 응용 프로그램이 실행 중인지 확인하기 위해 bash 파일을 만드는 방법이 있습니까? 그렇다면 닫고 그렇지 않으면 시작하십시오.
답변1
이 셸 스크립트는 모든 프로그램 시작 및 중지를 처리해야 합니다.
#!/bin/bash
BASECMD=${1%%\ *}
PID=$(pgrep "$BASECMD")
if [ "$?" -eq "0" ]; then
echo "at least one instance of "$BASECMD" found, killing all instances"
kill $PID
else
echo "no running instances of "$BASECMD" found, starting one"
$1
fi
아래에 저장한다고 가정하면 ~/mystarter
이를 사용하여 모든 명령을 실행할 수 있습니다 ~/mystarter <name>
. 예를 들어 귀하의 경우에는 Meta+를 R다음에 바인드합니다.
~/mystarter gnome-run
그리고 스크립트가 실행 가능한지 확인하십시오. 또한 매번 전체 위치를 입력할 필요가 없도록 chmod u+x ~/mystarter
어딘가에 두는 것이 좋습니다 .PATH
gnome-run
에 나타나지 않는다는 사실은 ps -A
gnome run 자체가 실제 프로세스를 시작하는 스크립트가 아닌지 확인하십시오. ps -A | wc -l
시작 전후의 차이점을 확인하십시오 (실행 중인 모든 프로세스가 계산됩니다).
편집하다:
이제 답변을 수락하셨으므로 이것이 참조점이 될 수 있도록 명령줄 인수를 사용하여 명령을 실행하는 지원을 추가해야겠다고 생각했습니다. 다음 명령을 실행하십시오.
./mystarter 'cmd args'
예를 들어:
./mystarter 'ncmpcpp -c ~/.ncmpcpp'
이 명령은 단순히 이미 실행 중인지 확인하고, ncmpcpp
그렇지 않은 경우 전체 명령(인수 포함)을 실행합니다.ncmpcpp