나는 달리고 있다
- 아치 리눅스 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
그게 다야, 작업 솔루션