/Etc/init.d/a_script এ কীভাবে বিজ্ঞপ্তি-প্রেরণ কাজ করবেন


1

আমি যখন notify-send 'test'/etc/init.d/a_script এ লিখি , আমি কোনও বিজ্ঞপ্তি দেখতে পাচ্ছি না। নিম্নলিখিত কোড দেখুন:

#!/bin/bash

### BEGIN INIT INFO
# Provides:    someone
# Required-Start:  $remote_fs $syslog
# Required-Stop:  $remote_fs $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 6
# Short-Description:  OpenBSD Secure Shell sv
### END INIT INFO
## Fill in name of program here.

case "$1" in
start)
notify-send 'test'
exit 0
;;

stop)
exit 0
;;
reload|restart|force-reload)
exit 0
;;
restart_for_debug)
exit 0
;;
**)
echo "usg: $0 {start|stop|restart|restart_for_debug}" 1>&2
exit 1
;;
esac

আমার প্রশ্ন হ'ল উপরের কোডটি কীভাবে সংক্ষিপ্ত বিজ্ঞপ্তি দেওয়া যায়sudo service this_script start

উত্তর:


0

notify-sendডি-বাসের মাধ্যমে যোগাযোগ করে তাই এটির কাজ করার জন্য একটি ডি-বাস ঠিকানা প্রয়োজন। আপনি স্টার্টআপ স্ক্রিপ্টগুলি ব্যবহার করে কল করার সময় ঠিকানাটি সংরক্ষণ করা হয় না service। নিম্নলিখিত আদেশগুলি নির্বাচিত ব্যবহারকারীর সেশনের ঠিকানা পুনরুদ্ধার করে:

user=username
dbusaddr1="$(
    grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" gnome-session | head -n1)/environ" |
    sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"

তারপরে আপনি notify-sendঠিকানা দিয়ে কল করতে পারেন । আপনাকে ব্যবহারকারীর পরিবর্তন করতে হবে কারণ এটি এর অধীনে কাজ করে না root:

su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\"$dbusaddr1\" notify-send 'test'"

আপনি এই নিবন্ধে কিছু অতিরিক্ত তথ্য পেতে পারেন: কীভাবে ইউদেব বিধি লিখবেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.