내 홈 폴더에 gnome-run 애플리케이션이 있습니다. 이제 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 실행 자체가 실제 프로세스를 시작하는 스크립트가 아닌지 확인하세요. ps -A | wc -l
실행 전과 실행 후의 차이가 있는지 확인하세요 (실행 중인 모든 프로세스가 포함됨).
편집하다:
답변을 수락하셨으므로 참고할 수 있도록 명령줄 인수가 있는 명령 실행에 대한 지원을 추가해야겠다고 생각했습니다. 다음과 같이 명령을 실행합니다.
./mystarter 'cmd args'
예:
./mystarter 'ncmpcpp -c ~/.ncmpcpp'
이 명령은 이미 실행 중인지 조회 하지만 실행 중이 아닐 ncmpcpp
때는 전체 명령(인수 포함)을 실행합니다 .ncmpcpp