एनाक्रॉन में जीयूआई अनुप्रयोग


2

मैं हर दिन स्क्रिप्ट / कमांड का एक गुच्छा चलाने की कोशिश कर रहा हूं।

इस प्रयोजन के लिए मैंने एक उपयोगकर्ता-स्पेस एनाक्रोन को कॉन्फ़िगर किया है जैसा कि समझाया गया है यहाँ । क्रोन द्वारा एनाक्रोन प्रति घंटा शुरू किया जाता है:

की सामग्री /var/spool/cron/rawing:

@hourly /usr/sbin/anacron -s -t ${HOME}/.anacron/etc/anacrontab -S ${HOME}/.anacron/spool

यह ठीक काम करता है। हालाँकि, मैंने अपने एनाक्रॉसैब से किसी भी ग्राफिकल एप्लिकेशन को चलाने में कामयाबी नहीं पाई है। मैंने कोशिश की:

@daily 0 gui_test_env      env SCREEN=:0 zenity --info
@daily 0 gui_test_screen   SCREEN=:0 zenity --info

ये दोनों त्रुटि संदेश के साथ विफल हो जाते हैं

Unable to init server: Could not connect: Connection refused

(zenity:6034): Gtk-WARNING **: cannot open display: 

भी

@daily 0 notify_test    SCREEN=:0.0 && notify-send "foobar"

त्रुटि संदेश का उत्पादन नहीं किया, लेकिन एक अधिसूचना भी प्रदर्शित नहीं की। दूसरी ओर, एक पायथन स्क्रिप्ट जो डेस्कटॉप सूचनाएँ प्रदर्शित करती है संदेश के साथ विफल हो गई

Unable to init server: Could not connect: Connection refused
Traceback (most recent call last):
  File "/home/rawing/Desktop/folder/python/misc/confirm_run.py", line 36, in <module>
    n.show()
GLib.Error: g-spawn-exit-error-quark: Error spawning command line 'dbus-launch --autolaunch=db6d4465f8584b8faa8abfb09b242b95 --binary-syntax --close-stderr': Child process exited with code 1 (1)

यदि यह मायने रखता है, तो अजगर कोड इस तरह दिखता है (छोटा):

from gi.repository import Notify
Notify.init('test')
n= Notify.Notification.new('title', 'question', "dialog-question")
n.set_urgency(Notify.Urgency.NORMAL)
n.show()

जोड़ा जा रहा है xhost local:rawing > /dev/null मेरे लिए ~/.bashrc जैसे कि सुझाव दिया गया है यहाँ मदद भी नहीं की।


अद्यतन करें: मैंने GUI अनुप्रयोगों का उपयोग करने में कामयाबी हासिल की है DISPLAY=:0 XAUTHORITY=/home/rawing/.Xauthority some_gui_app। डेस्कटॉप सूचनाएं अभी भी काम नहीं करती हैं। त्रुटि है:

Traceback (most recent call last):
  File "/home/rawing/Desktop/folder/python/misc/confirm_run.py", line 36, in <module>
    n.show()
GLib.Error: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files (2)

P.S .: इस कार्य को करने के लिए सुझाव के बिना anacron का भी स्वागत है। मैंने सोचा कि एनाक्रॉन यह आसान बना देगा ... मुझे पता है कि मैं बहुत आशावादी था।


org.freedesktop.Notifications was not provided by any .service files मैंने इसी तरह के त्रुटि संदेशों की रिपोर्ट देखी है (उदाहरण के लिए, यहाँ आर्क पर और यहाँ उबंटू पर) जिसके लिए एक अधिसूचना-डेमॉन स्थापित करके समस्या का समाधान किया गया था। क्या आपने कोशिश की है?
John1024

@ John1024: स्थापित करना notification-daemon करने के लिए त्रुटि वापस कर दी GLib.Error: g-spawn-exit-error-quark: Error spawning command line 'dbus-launch --autolaunch=2a4dc02c073e450399e9f344111fbbbb --binary-syntax --close-stderr': Child process exited with code 1 (1)
Aran-Fey

यह त्रुटि संदेश कई सॉफ़्टवेयर बग्स से संबद्ध प्रतीत होता है। यदि आप एक मैक पर हैं, तो आपको इसकी आवश्यकता हो सकती है सॉफ्टवेयर अपडेट । फेडोरा पर, आपको प्राप्त करने के लिए अपग्रेड करने की आवश्यकता हो सकती है यह बग ठीक करें । जो भी वितरण आप पर हैं, आप अभी हाल के संस्करण में अपग्रेड करना चाहते हैं।
John1024

मैं एक ही समस्या कर रहा हूँ systemd टाइमर से एक अजगर स्क्रिप्ट चलाने की कोशिश कर रहा। (GLib.Error: g-spawn-exit-error-quark: Error spawning command line 'dbus-launch --autolaunch= & Lt; / स्निप & gt; - क्या आपने कुछ भी पता लगाया?
nak

जवाबों:


1

एनएएस पर क्रोन से निपटने में, मैंने सीखा है कि कमांड को सीधे निष्पादित करना अक्सर उल्टा होता है। इसका समाधान एक स्क्रिप्ट को तैयार करना है जो आंतरिक रूप से सब कुछ करता है। फिर क्रोन कार्य को पूरी तरह से काम करने वाली स्क्रिप्ट को कॉल करना है। इसके लिए युगल विशेष क्रियाओं की आवश्यकता होती है।

  • स्क्रिप्ट को क्राफ्ट करें (यह अतिरिक्त लाइन की तरह सरल हो सकता है #!bin/bash पहली पंक्ति के रूप में
  • हर रास्ते के लिए निरपेक्ष रास्तों का उपयोग करें (अक्सर एक क्रोन वातावरण का वातावरण में कोई रास्ता नहीं है, अगर इसमें बिल्कुल भी वातावरण नहीं है)

[संपादित करें] मैं समझता हूं कि यह प्रश्न पोस्ट में प्रदान की गई डिटेल का एक बहुत विस्तार करता है। यह कुछ हद तक जानबूझकर है।

थोड़ा परीक्षण और त्रुटि के साथ, यहां मुझे काम करने के लिए मिला है।

mkdir -p /home/username/bin/cron
nano -w /home/username/bin/cron/testscreen.sh

(नैनो में, निम्नलिखित डालें)

#!/bin/bash
/usr/bin/env SCREEN=:0 DISPLAY=:0 XAUTHORITY=/home/username/.Xauthority /usr/bin/zenity --info

स्क्रिप्ट को सहेजें।

chmod +x /home/username/bin/cron/testscreen.sh
crontab -e 

निम्नलिखित लाइन को जोड़ें, समय को अपनी विशेष आवश्यकता के अनुसार समायोजित करें।

20   8  *   *   *     /home/username/bin/cron/testscreen.sh

अधिकतर, मुझे बस अपने एक्सटरम के वातावरण से क्रोन में पर्यावरण की ओर देखना था और यह पता लगाना था कि मुख्य टुकड़े क्या गायब थे। परीक्षण के लिए "अभी से एक मिनट" ट्रिगर करने के लिए क्रोन इवेंट प्राप्त करने के लिए कुछ त्वरित फुटवर्क लिया, लेकिन मुझे यह काम करने के लिए मिला, इसलिए इसे आपके लिए काम करना चाहिए।


आप कह रहे हैं कि मुझे "SCREEN =: 0 zenity --info" को बैश स्क्रिप्ट में डालना चाहिए और फिर क्रॉन को उस स्क्रिप्ट को निष्पादित करना चाहिए? यदि हां, तो इससे कुछ भी नहीं बदला।
Aran-Fey

@Rawing उत्तर संशोधित / विस्तारित।
killermist

जैसा मैंने पहले कहा, इससे कोई फर्क नहीं पड़ता।
Aran-Fey

यदि आप मेरे द्वारा बताए गए चरणों का पालन करते हैं, तो यह काम नहीं करता है? उस कदम को नीचे लाने के लिए कुछ काम किया गया, लेकिन एक बार मैंने ऐसा किया, यह हर बार अनुमानित रूप से काम करता है।
killermist

GUI एप्लिकेशन इस बात पर ध्यान दिए बिना काम करते हैं कि मैं किसी स्क्रिप्ट का उपयोग करता हूं, लेकिन डेस्कटॉप सूचनाएं किसी भी तरह से काम नहीं करती हैं।
Aran-Fey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.