Puncte:1

Rularea programului dintr-un script la reluarea din suspendare

drapel us

Încerc să rulez programul RealTimeSync la reluarea sistemului din repaus folosind scriptul aflat în /lib/systemd/system-sleep/ în dosar RealTimeSync_kill_suspend.sh cu urmatorul continut:

#!/bin/sh

caz de 1 USD in
        pre)
                echo „$(data) - $1: Killing RealTimeSync” >> /home/bart/Applications/FreeFileSync/suspend_resume.log
                kill -9 `ps -aux | pgrep RealTimeSync`
                Ieșire
                ;;
        post)
                echo „$(data) - $1: Se invocă scriptul de reluare RealTimeSync” >> /home/bart/Applications/FreeFileSync/suspend_resume.log
                sh /home/bart/Applications/FreeFileSync/RealTimeSync_resume.sh
;;
esac

Știu că execută subscript RealTimeSync_resume.sh cu urmatorul continut:

#!/bin/sh

echo „$(date) - Rulează RealTimeSync” >> /home/bart/Applications/FreeFileSync/suspend_resume.log

/home/bart/Applications/FreeFileSync/RealTimeSync /home/bart/Documents/Documents_backup.ffs_real &

echo „$(date) - RealTimeSync ar trebui să ruleze” >> /home/bart/Applications/FreeFileSync/suspend_resume.log

Ieșire

pe măsură ce scade linii după ambele ecou declarații în RealTimeSync_kill_suspend.sh scenariul și rândurile după ambele ecou declarații în RealTimeSync_resume.sh subscript într-un fișier jurnal suspend_resume.log:

czw, 5 sie 2021, 16:55:50 CEST - înainte: Killing RealTimeSync
czw, 5 sie 2021, 16:55:58 CEST - post: Invocarea scriptului de reluare RealTimeSync
czw, 5 sie 2021, 16:55:58 CEST - Rulează RealTimeSync
czw, 5 sie 2021, 16:56:28 CEST - RealTimeSync ar trebui să ruleze

Dar când caut procesul cu ps -aux | grep RealTimeSync nu arată nicio potrivire adecvată, doar:

bart 31262 0,0 0,0 12252 2612 puncte/0 S+ 17:38 0:00 grep --color=auto RealTimeSync

Când rulez subscript cu sh /home/bart/Applications/FreeFileSync/RealTimeSync_resume.sh Primesc procesul corect care rulează cu ps -aux | grep RealTimeSync:

bart 31066 0,0 0,0 212 68 puncte/0 S 17:37 0:00 /home/bart/Applications/FreeFileSync/RealTimeSync /home/bart/Documents/Documents_backup.ffs_real
bart 31071 0,3 0,1 442428 41260 puncte/0 Sl 17:37 0:00 /home/bart/Applications/FreeFileSync/Bin/RealTimeSync_x86_64 /home/bart/Documents/Documents_backup
bart 31262 0,0 0,0 12252 2612 puncte/0 S+ 17:38 0:00 grep --color=auto RealTimeSync

Toate fișierele menționate au -rwxr-xr-x permisiuni.

După ce am căutat pe forumuri, mi-am dat seama că RealTimeSync are nevoie de un serviciu care este activat la conectare și care nu este disponibil, de exemplu, persoanele care au avut probleme cu rularea scripturilor care pornesc synclients aveau nevoie de server X pentru a se conecta la:

declara -x DISPLAY=":0.0"
declara -x XAUTHORITY="/home/<utilizatorul tău>/.Xauthority"
synclient VertEdgeScroll=1 VertTwoFingerScroll=1 HorizTwoFingerScroll=1 HorizEdgeScroll=1

din acest forum-thread: https://ubuntuforums.org/showthread.php?t=2380045

Aș fi recunoscător pentru orice ajutor.

EDITARE 1

Am descoperit că „FreeFileSync și ReadTimeSync au nevoie de acces la afișajul grafic X11, deci nu pot rula prin modul sistem. În modul utilizator, systemd știe despre sesiunea grafică a utilizatorului și o folosește.” Deci există 2 soluții potențiale:

Oricare dintre cele menționate mai sus, hardcoding AFIŞA și AUTORITATEA X, descurajat deoarece valoarea DISPLAY poate diferi de la o sesiune la alta.

Sau rulează ca serviciu pentru utilizator, nu ca serviciu de sistem, deoarece afișajul este inițializat pentru utilizator.

Am găsit asta aici, depanarea rulării FreeFileSync ca serviciu de sistem: https://unix.stackexchange.com/questions/529115/system-service-error-unable-to-initialize-gtk-is-display-set-properly

Din păcate, am probleme la implementarea acestor soluții, aș fi recunoscător pentru orice ajutor.

EDITARE 2

Ok, am reușit! Rulez RealTimeSync din scriptul principal acum, deși cred că acest lucru nu face nicio diferență, important este să inițializați „DISPLAY” după cum urmează:

#!/bin/sh

caz de 1 USD in
        pre)
                echo „$(data) - $1: Killing RealTimeSync” >> /home/bart/Applications/FreeFileSync/suspend_resume.log
                kill -9 `ps -aux | pgrep RealTimeSync`
                Ieșire
                ;;
        post)
                echo „$(date) - Se invocă scriptul de reluare RealTimeSync” >> /home/bart/Applications/FreeFileSync/suspend_resume.log
                env DISPLAY=:1 sudo -u bart /home/bart/Applications/FreeFileSync/RealTimeSync /home/bart/Documents/Documents_backup.ffs_real
;;
esac

Și setați proprietarul acestui script la root: chown root:root <nume_script>

Solutia a fost de aici: porniți scriptul după reluare ca utilizator conectat (nu root)

După cum am înțeles, aceasta este mai degrabă o modalitate de ocolire decât o soluție adecvată ca hardcoding AFIŞA poate pune probleme, dar funcționează temporar. În cazul în care cineva știe cum să ruleze corect acest lucru ca utilizator, nu root, aș fi recunoscător pentru orice indicii.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.