
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"
답변1
마침내 여기서 해결 방법을 찾았습니다. 다음을 포함하는 두 번째 스크립트가 필요합니다.
#!/bin/bash
echo /pathto/runApp | at now
이 스크립트는 udev 규칙에서 호출되어야 합니다. 작동하려면 at
설치해야 하며 를 atd
호출하여 활성화해야 합니다 sudo systemctl enable atd --now
. 조금 해킹적이지만 적어도 작동합니다.
게시물이 더 쉬운 가이드가 될 수 있도록 systemd 접근 방식을 삭제했습니다.