यह धागा थोड़ा पुराना है, क्षमा करें, लेकिन मुझे उम्मीद है कि मैं अभी भी विषय के लिए कुछ उपयोगी जोड़ सकता हूं। (जोसेफ कुफनर ने भी एक अच्छी पटकथा लिखी, यह मेरे स्वाद के लिए थोड़ा लंबा था, और यह PHP का उपयोग करता है)
मुझे मूल प्रश्न (सभी सक्रिय एक्स-उपयोगकर्ताओं को संदेश भेजने के लिए) के रूप में वर्णित टूल की भी आवश्यकता थी। और यहाँ जवाबों के आधार पर, मैंने इस छोटी सी बैश-केवल स्क्रिप्ट को लिखा, जो सक्रिय एक्स-उपयोगकर्ताओं ('कौन' का उपयोग करके) की खोज करता है, और फिर प्रत्येक सक्रिय उपयोगकर्ता के लिए सूचना-भेज रहा है।
और सबसे अच्छा: आप मेरी स्क्रिप्ट का उपयोग ठीक वैसे ही कर सकते हैं जैसे "सूचना-भेजें", इसके सभी मापदंडों के साथ! ;-)
सूचित-भेज-सब:
#!/bin/bash
PATH=/usr/bin:/bin
XUSERS=($(who|grep -E "\(:[0-9](\.[0-9])*\)"|awk '{print $1$5}'|sort -u))
for XUSER in $XUSERS; do
NAME=(${XUSER/(/ })
DISPLAY=${NAME[1]/)/}
DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
PATH=${PATH} \
notify-send "$@"
done
उपरोक्त कोड को "सूचित-भेजें-सभी" नामक फ़ाइल में कॉपी करें, इसे निष्पादन योग्य बनाएं और इसे / usr / स्थानीय / बिन या / usr / बिन (जैसा आप चाहें) पर कॉपी करें । फिर इसे इस तरह से चलाएँ जैसे कंसोल सत्र में रूट:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
मैं कई महीनों से इसका इस्तेमाल कर रहा हूं, विभिन्न मशीनों पर, और अब तक कोई समस्या नहीं है, और मैंने इसे MATE और Cinnamon डेस्कटॉप के साथ परीक्षण किया है। साथ ही इसे क्रोन और एनाक्रोन के भीतर सफलतापूर्वक चलाना।
मैंने यह स्क्रिप्ट ArchLinux के तहत / के लिए लिखी है, इसलिए कृपया मुझे बताएं कि क्या आपको किसी अन्य लिनक्स वितरण या डेस्कटॉप पर समस्या हो रही है।