노트북이 절전 모드를 취소하고 인터넷 연결을 감지한 후 Tint2를 다시 시작하는 방법은 무엇입니까?

노트북이 절전 모드를 취소하고 인터넷 연결을 감지한 후 Tint2를 다시 시작하는 방법은 무엇입니까?

나는 달리고 있다

  • 아치 리눅스 6.4.2-arch1-1 및
  • openbox wm v3.6.1이 함께 제공됩니다.
  • Tint2 바 버전 17.0.2 및
  • 시스템화 v253.5-2-arch

모든 것이 최신 상태입니다.

내 Tint2 열에는 날씨 등과 같은 시간 관련 정보가 표시됩니다.

나는 Tint2 열이 몇 초마다 업데이트되는 것을 원하지 않습니다. 그렇게 하면 너무 많은 시스템 리소스를 사용하고 새 데이터를 너무 자주 폴링하여 날씨 사이트 등에서 차단될 수 있기 때문입니다.

그래서 Tint2를 1시간마다 업데이트하도록 설정했는데, 이는 합리적인 것 같습니다.

그런데 노트북을 절전 모드로 전환했다가 다시 켜면 인터넷에 연결되기 전에 Tint2가 시작되므로 정보 업데이트(예: 날씨)를 수집하기 전에 새로 고쳐집니다.

잠들지 않은 직후에 Tint2를 다시 시작하는 방법을 제안할 수 있는 사람이 있습니까?뒤쪽에인터넷 연결을 확인하세요.

그래서 원한다

  • 다음 중 하나를 수행하십시오. 절전 취소, 다시 시작, 전원 켜기, 최대 절전 모드 취소
  • 인터넷 연결이 감지되면 Tint2를 다시 시작하세요(예: 쓸모없는 오래된 일기 예보 대신 새로운 일기 예보를 갖게 됩니다).

내 생각엔 이것이 악용과 관련될 수도 있다 systemd.

이것이 내가 지금까지 가지고 있는 것입니다:

systemd라는 서비스 파일을 만들어서 restart_tint2.service넣었습니다 /etc/systemd/system/.

[Unit]
Description=This service runs once only after the arch linux laptop is 1 turned on after suspend 2 re-booted 3 turned on after being switched off 4 turned on after being hibernated

After=suspend.target


[Service]
Type=oneshot
ExecStart=/home/$USER/Dropbox/linux_config/script_tint2_restart_after_sleep/restart_tint2.sh


[Install]
WantedBy=suspend.target

이 스크립트를 가리키는 것은 ...

#!/bin/bash

# function to check internet connectivity
check_internet() {
  ping -c 1 8.8.8.8 >/dev/null 2>&1
}

# function to restart tint2
restart_tint2() {
  if pgrep -x "tint2" >/dev/null; then
    pkill -x "tint2"
  fi

  sleep 1

  tint2 & disown
}

# check internet connectivity
check_internet

# if internet is not available, wait and check again
while [ $? -ne 0 ]; do
  sleep 5
  check_internet
done

# restart tint2 after internet connection is detected
restart_tint2


exit 0

노트북을 일시 중지하고 전원 버튼을 사용하여 다시 깨우면 Tint2가 종료되지만 다시 시작되지는 않습니다.

내가 어디서 잘못되었는지 잘 모르겠습니다.

이 목표를 달성하기 위해서는 어떤 방식으로든 열려 있어야 합니다.

답변1

systemd service라는 텍스트 파일을 생성하여 이 콘텐츠 restart_tint2.service에 넣습니다./etc/systemd/system/

[Unit]
Description=This service runs once only after the arch linux laptop is 1 turned on after suspend 2 re-booted 3 turned on after being switched off 4 turned on after being hibernated

After=suspend.target hibernate.target


[Service]
Type=oneshot  
# point to the location of the script given below
ExecStart=/home/$USER/Dropbox/linux_config/script_tint2_restart_after_sleep/restart_tint2.sh


[Install]
WantedBy=suspend.target

restart_tint2.sh조건이 충족되면 위의 서비스 파일은 다음 스크립트(이렇게 함)를 호출합니다.

#!/bin/bash



# function to check internet connectivity

check_internet() {
  ping -c 1 8.8.8.8 >/dev/null 2>&1
}



# function to restart tint2

restart_tint2() {

# the below is the only solution that works, 
#  both killing, then re-starting tint2

killall -SIGUSR1 tint2


}

# check for internet connectivity

check_internet

# if internet is not available, wait and check again
while [ $? -ne 0 ]; do
  sleep 5
  check_internet
done

# restart tint2 after internet connection is detected
restart_tint2


exit 0

그게 다야, 작업 솔루션

관련 정보