Tôi cố gắng chạy chương trình RealTimeSync khi tiếp tục hệ thống từ chế độ ngủ bằng cách sử dụng tập lệnh nằm trong /lib/systemd/system-ngủ/
trong tập tin RealTimeSync_kill_suspend.sh
với các nội dung sau:
#!/bin/sh
trường hợp $1 trong
trước)
echo "$(date) - $1: Killing RealTimeSync" >> /home/bart/Applications/FreeFileSync/suspend_resume.log
giết -9 `ps -aux | pgrep RealTimeSync`
lối ra
;;
bưu kiện)
echo "$(date) - $1: Gọi tập lệnh tiếp tục RealTimeSync" >> /home/bart/Applications/FreeFileSync/suspend_resume.log
sh /home/bart/Applications/FreeFileSync/RealTimeSync_resume.sh
;;
thoát hiểm
Tôi biết rằng nó thực thi tập lệnh con RealTimeSync_resume.sh
với các nội dung sau:
#!/bin/sh
echo "$(date) - Running RealTimeSync" >> /home/bart/Applications/FreeFileSync/suspend_resume.log
/home/bart/Applications/FreeFileSync/RealTimeSync /home/bart/Documents/Documents_backup.ffs_real &
echo "$(date) - RealTimeSync sẽ chạy" >> /home/bart/Applications/FreeFileSync/suspend_resume.log
lối ra
vì nó xuống dòng sau cả hai tiếng vang
tuyên bố trong RealTimeSync_kill_suspend.sh
kịch bản và dòng sau cả hai tiếng vang
tuyên bố trong RealTimeSync_resume.sh
tập lệnh con vào một tệp nhật ký Susume_resume.log
:
czw, 5 sie 2021, 16:55:50 CEST - trước: Killing RealTimeSync
czw, 5 sie 2021, 16:55:58 CEST - bài đăng: Gọi tập lệnh tiếp tục RealTimeSync
czw, 5 sie 2021, 16:55:58 CEST - Chạy RealTimeSync
czw, 5 sie 2021, 16:56:28 CEST - RealTimeSync sẽ chạy
Nhưng khi tôi tìm kiếm quá trình với ps-aux | grep RealTimeSync
nó không hiển thị bất kỳ kết quả phù hợp nào, chỉ:
bart 31262 0.0 0.0 12252 2612 điểm/0 S+ 17:38 0:00 grep --color=auto RealTimeSync
Khi tôi chạy tập lệnh con với sh /home/bart/Applications/FreeFileSync/RealTimeSync_resume.sh
Tôi nhận được quy trình chính xác đang chạy với ps-aux | grep RealTimeSync
:
bart 31066 0,0 0,0 212 68 điểm/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 điểm/0 Sl 17:37 0:00 /home/bart/Applications/FreeFileSync/Bin/RealTimeSync_x86_64 /home/bart/Documents/Documents_backup.ffs_real
bart 31262 0.0 0.0 12252 2612 điểm/0 S+ 17:38 0:00 grep --color=auto RealTimeSync
Tất cả các tập tin được đề cập có -rwxr-xr-x
quyền hạn.
Sau khi tìm kiếm trên các diễn đàn, tôi nhận thấy rằng RealTimeSync cần một số dịch vụ được kích hoạt khi đăng nhập không khả dụng, ví dụ: những người gặp sự cố với việc chạy tập lệnh bắt đầu đồng bộ cần máy chủ X để kết nối với:
khai báo -x HIỂN THỊ = ": 0,0"
khai báo -x XAUTHORITY="/home/<your user>/.Xmasterity"
đồng bộ VertEdgeScroll=1 VertTwoFingerScroll=1 HorizTwoFingerScroll=1 HorizEdgeScroll=1
từ chủ đề diễn đàn này: https://ubuntuforums.org/showthread.php?t=2380045
Tôi sẽ biết ơn nếu được giúp đỡ.
CHỈNH SỬA 1
Tôi thấy rằng "FreeFileSync và ReadTimeSync cần quyền truy cập vào màn hình X11 đồ họa, vì vậy chúng không thể chạy qua chế độ hệ thống. Ở chế độ người dùng, systemd biết về phiên đồ họa của người dùng và sử dụng nó." Vì vậy, có 2 giải pháp tiềm năng:
Một trong hai đề cập ở trên, mã hóa cứng TRƯNG BÀY
và XAUTHORITY
, không được khuyến khích vì giá trị HIỂN THỊ có thể khác nhau từ phiên này sang phiên khác.
Hoặc chạy dưới dạng dịch vụ người dùng, không phải dịch vụ hệ thống, vì màn hình được khởi tạo cho người dùng.
Điều này tôi đã tìm thấy ở đây, khắc phục sự cố khi chạy FreeFileSync dưới dạng dịch vụ hệ thống: https://unix.stackexchange.com/questions/529115/system-service-error-unable-to-initialize-gtk-is-display-set-properly
Thật không may, tôi gặp sự cố khi triển khai các giải pháp này, tôi rất biết ơn nếu được trợ giúp.
CHỈNH SỬA 2
Ok, tôi đóng đinh nó! Bây giờ tôi chạy RealTimeSync từ tập lệnh chính, mặc dù tôi đoán điều này không tạo ra bất kỳ sự khác biệt nào, điều quan trọng là khởi tạo 'HIỂN THỊ' như sau:
#!/bin/sh
trường hợp $1 trong
trước)
echo "$(date) - $1: Killing RealTimeSync" >> /home/bart/Applications/FreeFileSync/suspend_resume.log
giết -9 `ps -aux | pgrep RealTimeSync`
lối ra
;;
bưu kiện)
echo "$(date) - Gọi tập lệnh tiếp tục 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
;;
thoát hiểm
Và đặt chủ sở hữu của tập lệnh này thành root: chown root:root <script_name>
Giải pháp là từ đây: bắt đầu tập lệnh sau khi tiếp tục với tư cách là người dùng đã đăng nhập (không phải root)
Theo tôi hiểu, đây là một cách giải quyết hơn là giải pháp thích hợp như mã hóa cứng TRƯNG BÀY
có thể gây ra vấn đề, nhưng tạm thời hoạt động. Trong trường hợp bất kỳ ai biết cách chạy đúng cách này với tư cách là người dùng chưa root, tôi rất biết ơn về bất kỳ gợi ý nào.