bash 스크립트를 작성 중이며 응용 프로그램이 실행 중인지 확인하고 있습니다. 실행 중이 아니면 별도의 프로세스 (하위 프로세스가 아님)에서 시작해야합니다. 실행중인 경우 창을 최대화해야합니다. 나는 그것을 만들었지 만 스크립트 프로세스가 끝나기 때문에 새로운 프로세스가 시작된 직후 종료됩니다. &를 통해 백그라운드에서 실행하지 않으면 앱이 닫히지 않지만 앱을 최대화하기 위해 스크립트를 두 번 실행할 수 없습니다.
#!/bin/bash
if pgrep app
then
echo app is running
# Maximize the app
wmctrl -x -r WMClassOfapp -b "add,maximized_vert,maximized_horz"
else
echo app is not running
/usr/bin/app
fi
터미널에서 실행하면 제대로 작동합니다. udev 규칙에서 호출하면 앱이 종료됩니다. nohup을 사용하면 동일한 결과를 얻을 수 있습니다. 다음은 udev 규칙입니다.
ACTION=="add" \
, KERNEL=="hci0:3585" \
, SUBSYSTEM=="bluetooth" \
, ENV{DISPLAY}=":0" \
, ENV{HOME}="/home/user"
, RUN+="/home/user/runapp"
마침내 여기서 해결 방법을 찾았습니다. 다음을 포함하는 두 번째 스크립트가 필요합니다.
#!/bin/bash
echo /pathto/runApp | at now
이 스크립트는 udev 규칙에서 호출해야합니다. 작동 at
하려면을 (를) atd
호출 하여 활성화해야합니다 sudo systemctl enable atd --now
. 약간 해키하지만 적어도 작동합니다.
나는 체계적인 접근 방식을 삭제하여 게시물이 더 쉬운 가이드가 될 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다