স্থগিত থেকে পুনরায় শুরু করার পরে একটি কমান্ড কিভাবে কার্যকর করা যায়?


44

আমার ল্যাপটপে স্থগিত / পুনরায় কাজ শুরু করার জন্য আমার একটি স্ক্রিপ্ট কার্যকর করা হয়েছে। তারপর আমি আরেকটি সিরিজ আছে xinput, xkbsetএবং xmodmapযে কমান্ড মৃত্যুদন্ড কার্যকর করা হয় যখন আমি একটি অধিবেশন শুরু দুই আঙুল দিয়ে স্ক্রলিং এবং কীবোর্ড শর্টকাট সেটআপ করুন আছে। আমি যখন সাসপেন্ড থেকে পুনরায় শুরু করি, তখন দুটি আঙুলের স্ক্রোলিং এবং আমার কীবোর্ড শর্টকাট কাজ করবে না। আমাকে দ্বিতীয় ফাইলটিতে কমান্ডগুলি নিজেই প্রয়োগ করতে হবে। এটি স্বয়ংক্রিয়ভাবে সম্পন্ন করার জন্য আমি কীভাবে স্থগিত / পুনরায় সূচনা স্ক্রিপ্টগুলিতে যুক্ত করতে পারি? নিচে দেখ:

স্থগিত / স্ক্রিপ্ট পুনরায় শুরু

/etc/pm/sleep.d/20_custom-ehci_hcd

#!/bin/sh
#inspired by http://art.ubuntuforums.org/showpost.php?p=9744970&postcount=19
#...and http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug    
# tidied by tqzzaa :)

VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1

unbindDev() {
  echo -n > $DEV_LIST 2>/dev/null
  for driver in $DRIVERS; do
    DDIR=$DRIVERS_DIR/${driver}_hcd
    for dev in `ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"`; do
      echo -n "$dev" > $DDIR/unbind
      echo "$driver $dev" >> $DEV_LIST
    done
  done
}

bindDev() {
  if [ -s $DEV_LIST ]; then
    while read driver dev; do
      DDIR=$DRIVERS_DIR/${driver}_hcd
      while [ $((MAX_BIND_ATTEMPTS)) -gt 0 ]; do
          echo -n "$dev" > $DDIR/bind
          if [ ! -L "$DDIR/$dev" ]; then
            sleep $BIND_WAIT
          else
            break
          fi
          MAX_BIND_ATTEMPTS=$((MAX_BIND_ATTEMPTS-1))
      done  
    done < $DEV_LIST
  fi
  rm $DEV_LIST 2>/dev/null
}

case "$1" in
  hibernate|suspend) unbindDev;;
  resume|thaw)       bindDev;;
esac

টাচপ্যাড দুই-আঙুলের স্ক্রোলিং এবং কীবোর্ড শর্টকাট স্ক্রিপ্ট

xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Two-Finger Scrolling" 8 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 10
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8
setxkbmap -layout gb
xkbset m
xkbset exp =m
xmodmap -e "keycode 135 = Pointer_Button2"

এটি Askubuntu.com/questions/226278/run-script-on-wakeup/483714 এর সদৃশ বলে মনে হচ্ছে । Askubuntu.com/a/483714/170127 এও আমার মন্তব্য দেখুন ।
জামাদগনি

উত্তর:


41

আপনার স্ক্রিপ্টগুলি /etc/pm/sleep.dস্থগিতের পরে চালানোর জন্য ডিরেক্টরিতে রাখতে পারেন। আপনার স্ক্রিপ্টটি কেবল পুনরায় শুরু করার সময় চালানো হবে এবং স্থগিতের প্রক্রিয়া চলাকালীন নয় a উদাহরণস্বরূপ, আপনার টাচপ্যাড স্ক্রিপ্টটি দেখতে এমন হবে:

case "${1}" in
    resume|thaw)
        DISPLAY=:0.0 ; export DISPLAY
        xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Two-Finger Scrolling" 8 1
        xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1
        xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 10
        xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8
        setxkbmap -layout gb
        xkbset m
        xkbset exp =m
        su $USER -c "sleep 3; /usr/bin/xmodmap -e "keycode 135 = Pointer_Button2"" &
;;
esac

নিশ্চিত হয়ে নিন যে আপনার স্ক্রিপ্টটি বিশ্বব্যাপী নির্বাহযোগ্য হিসাবে চিহ্নিত হয়েছে এবং সংশ্লিষ্ট ব্যবহারকারীর সাথে $ USER পরিবর্তন করুন।

আপনি বিকাল-সাসপেন্ড ম্যানপেজে ( man pm-suspend) বা ডকুমেন্টেশনটি /usr/share/doc/pm-utils(বিশেষত /usr/share/doc/pm-utils/HOWTO.hooks.gz) এর মাধ্যমে আরও বিস্তারিত তথ্য পেতে পারেন ।


2
এটি আপনার যা পছন্দ তাই বলা যেতে পারে। এটি বিকাল-সাসপেন্ড ম্যানপেজে প্রতি 00-49 এর মধ্যে একটি নম্বর দিয়ে শুরু করা ভাল ধারণা: "00 - 49 ব্যবহারকারী এবং সর্বাধিক প্যাকেজ সরবরাহিত হুক। যদি কোনও হুক ধরে নেয় যে সমস্ত সাধারণ পরিষেবা এবং ব্যবহারকারী স্থান অবকাঠামো এখনও চলছে, এটা এখানে থাকা উচিত। "
ফাদার

3
আর একটি (এখন মুছে ফেলা) উত্তরের উত্তর ছিল: 'দয়া করে নিম্নলিখিত বাগের প্রতিবেদনটি নোট করুন: প্রবর্তিত স্ক্রিপ্টগুলিতে আপগ্রেড করার পরে লঞ্চপ্যাড.net / বুন্টু /+ সোর্স / পিএম- ইউটিস /+ বাগ / ১1৫৫০৯7 এ রাখা দরকার /lib/systemd/system-sleep/'
উইলফ

8
উপর উবুন্টু 15,10 , স্ক্রিপ্টের মধ্যে হতে হয়েছে /lib/systemd/system-sleep/পরিবর্তে /etc/pm/sleep
মার্ক বেলমন্ট

7
উপর উবুন্টু 16,04 আর্গুমেন্ট স্ক্রিপ্ট দেওয়া হয় preস্থগিত প্রবেশের আগে এবং postপরিবর্তে সারসংকলন পর suspendএবংresume
Germar

3
ইয়াক্কেটি (16.10) এ এখানে সর্বশেষ দুটি মন্তব্য চেষ্টা করেছিলেন এবং এটি কার্যকর হয়নি। কীভাবে সমস্যা সমাধান করবেন?
গ্রিংগো সুভে

7

উবুন্টু 16.04 এ আমাকে এইভাবে পরিষেবা তৈরি করতে হয়েছিল:

  1. ফাইল তৈরি করুন

    sudo gedit /etc/systemd/system/somename.service
  2. ভিতরে রাখা

    [Unit]
    Description=Some description
    Before=sleep.target
    StopWhenUnneeded=yes
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStop=-/path/to/your/script.sh
    
    [Install]
    WantedBy=sleep.target
  3. পরিষেবা সক্ষম করুন

    sudo systemctl enable somename
  4. (alচ্ছিক) স্থগিতাদেশ থেকে পুনরায় শুরু করার পরে যদি কাজ না করে> ত্রুটি পরীক্ষা করে check

    journalctl -u somename.service

এটি উবুন্টুতে 18.04 এ কাজ করে বলে মনে হচ্ছে, ধন্যবাদ!
কেলুনিক

উবুন্টু যদি এটি ব্যবহার না করে থাকে তবে /etc/pm/sleep.d ছেড়ে যায় কেন? এটি বিভ্রান্তিকর এবং বিভ্রান্তিকর।
জোনাথন নিউফিল্ড

এটি আমার জন্য উবুন্টু ১৮.০৪ (আসলে কে.ডি. নিওন) তে কাজ করেছিল, তবে আমাকে একটি করতে হয়েছিল): [পরিষেবা] এর অধীনে, ইউজার = টাইম লিখুন যাতে স্ক্রিপ্টটি আমার ব্যবহারকারী হিসাবে খ খায়) আমার স্ক্রিপ্টে, DISPLAY =: 0.0; এক্সপ্লোর পরিচালনা প্রদর্শন
টিম রিচার্ডসন

3

এই ফাইলটি খুলুন:

sudo vim / lib / systemd / system-ঘুম / hdparm

সূচিপত্র:

#! / বিন / SH

কেস $ 1 ইন 
  পোস্ট)
    /usr/lib/pm-utils/power.d/95hdparm-apm পুনরায় শুরু
    ## আপনার স্ক্রিপ্টটি চালানোর জন্য আপনার আদেশটি আটকান
    ;; esac

আপনার কমান্ড অ্যাডমিন সুবিধা সহ কার্যকর করা হবে ।

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