انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: اجرا دستور یا اسکریپت بعد از resume (حل شد)  (دفعات بازدید: 583 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
اجرا دستور یا اسکریپت بعد از resume (حل شد)
« : 06 فروردین 1396، 09:00 ق‌ظ »
اغلب اوقات وقتی سیستم رو suspend میکنم و دوباره روشن میکنمش گرافیک سیتسم میخوره بهم، نمیدونم چجوری ولی فهمیدم با این دستور حل میشه و توی alias ها ثبت کردم و بعد از resume معمولا مجبور میشم ترمینال رو بازکنم و اجراش کنم:
xrandr --output VGA-0 --mode 800x600 && xrandr --output VGA-0 --mode 1366x768
الان میخوام این پروسه به صورت خودکار بعد از resume شدن سیستم اجرا بشه، جستجو کردم، مثلا به لینک زیر رسیدم ولی جواب نگرفتم:
http://askubuntu.com/questions/226278/run-script-on-wakeup
از اوبونتو ۱۶.۰۴ استفاده میکنم، لطفا راهنمایی بفرمایید.
« آخرین ویرایش: 07 فروردین 1396، 05:43 ب‌ظ توسط Droid »

آفلاین Ma$oud

  • Sr. Member
  • *
  • ارسال: 293
  • جنسیت : پسر
پاسخ : اجرا دستور یا اسکریپت بعد از resume
« پاسخ #1 : 06 فروردین 1396، 11:08 ب‌ظ »
acpid رو نصب کنید :sudo apt install acpidاونو اجرا و enable کنید: sudo systemctl start acpid ; sudo systemctl enable acpidفایل زیرو ویرایش کنید: /etc/acpi/handler.shاول button/lid را پیدا کنید، حالا در قسمتی که نوشته open)
                  logger 'LID opened'
در ادامه دستور مورد نظر خود را اضافه کنید، یعنی باید اینجوری ویرایش شود : open)
                logger 'LID opened'
                xrandr --output VGA-0 --mode 800x600 && xrandr --output VGA-0 --mode 1366x768
فایل را ذخیره و acpid را ری استارت کنید: sudo systemctl restart acpidنتیجه را تست کنید!   :)

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : اجرا دستور یا اسکریپت بعد از resume
« پاسخ #2 : 07 فروردین 1396، 08:46 ق‌ظ »
ممنونم، ولی فایل handler.sh موجود نیست فقط اینها هستن:
asus-keyboard-backlight.sh  asus-wireless.sh  events  ibm-wireless.sh  powerbtn.sh  tosh-wireless.sh  undock.sh
داخل پوشه events:
asus-keyboard-backlight-down  asus-wireless-off  ibm-wireless   powerbtn       tosh-wireless
asus-keyboard-backlight-up    asus-wireless-on   lenovo-undock  thinkpad-cmos

handler.sh رو جستجو کردم تو گوگل همینجوری یه چیزی سر هم کردم ولی خب اجرا نشد، انگاری باید event تعریف بشه بعد اشاره کنه به این اسکریپت تا اجرا بشه،
#!/bin/sh
# Default acpi script that takes an entry for all actions

case "$1" in
    button/lid)
        case "$3" in
            open)
                xrandr --output VGA-0 --mode 800x600 && xrandr --output VGA-0 --mode 1366x768
                ;;
        esac
        ;;
    *)
        logger "ACPI group/action undefined: $1 / $2"
        ;;
esac


 ](*,)

آفلاین Ma$oud

  • Sr. Member
  • *
  • ارسال: 293
  • جنسیت : پسر
پاسخ : اجرا دستور یا اسکریپت بعد از resume
« پاسخ #3 : 07 فروردین 1396، 09:10 ق‌ظ »
من توی آرچ چنین چیزایی نداشتم !  ;D
این فایلو با این محتویات بسازید: /etc/acpi/events/anything

# Pass all events to our one handler script
event=.*
action=/etc/acpi/handler.sh %e

و سرویس acpid رو دوباره راه اندازی کنید.
و در آخر یادتون نره که به فایل handler.sh باید دسترسی اجرایی داده باشید!  ;)

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : اجرا دستور یا اسکریپت بعد از resume
« پاسخ #4 : 07 فروردین 1396، 02:45 ب‌ظ »
اتفاقا رسیدم به ویکی آرچ، داشتم همین مورد رو پیاده میکردم که ایمیل پاسخ شما اومد، ولی باز هم اجرا نشد.

داخل handler.sh و حتی powerbtn.sh یه حلقه اضافه کردم که متغیر های ورودی شون رو توی یه فایلی اضافه کنه ولی فایل ایجاد نشد، یعنی اسکریپت ها اصلا اجرا نمیشن.
#!/bin/sh
# Default acpi script that takes an entry for all actions
for i; do
    echo $i >> /tmp/test.txt
done
case "$1" in
    button/lid)
        case "$3" in
            open)
                xrandr --output VGA-0 --mode 800x600 && xrandr --output VGA-0 --mode 1366x768
                ;;
        esac
        ;;
    *)
        logger "ACPI group/action undefined: $1 / $2"
        ;;
esac

اینم وضعیت سرویس:
● acpid.service - ACPI event daemon
   Loaded: loaded (/lib/systemd/system/acpid.service; enabled; vendor preset: en
   Active: active (running) since Mon 2017-03-27 14:36:37 IRDT; 1min 10s ago
 Main PID: 11636 (acpid)
   CGroup: /system.slice/acpid.service
           └─11636 /usr/sbin/acpid

Mar 27 14:36:37 d3v systemd[1]: Started ACPI event daemon.
Mar 27 14:36:37 d3v acpid[11636]: starting up with netlink and the input layer
Mar 27 14:36:37 d3v acpid[11636]: 10 rules loaded
Mar 27 14:36:37 d3v acpid[11636]: waiting for events: event logging is off


راه حل فعلی  ](*,)

آفلاین Droid

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : اجرا دستور یا اسکریپت بعد از resume
« پاسخ #5 : 07 فروردین 1396، 03:05 ب‌ظ »
سوال بعضی ها برای ما جواب شد  \\:D/
http://askubuntu.com/q/776055

فایلی با محتوای زیر:
#! /bin/sh
 case $1 in
     pre)
        echo "$(date) off" >> /var/log/fixscreen.txt #debugging
    ;;
     post)
         xrandr --output VGA-0 --mode 800x600 && xrandr --output VGA-0 --mode 1366x768
         echo "$(date) on" >> /var/log/fixscreen.txt #debugging
    ;;
 esac

در مسیر:
/lib/systemd/system-sleep

 ایجاد کردم و دسترسی اجرایی رو بهش دادم و مشکل حل شد.
البته این جواب توی لینک اولی که گذاشتم با اندکی تقاوت موجود بود، شاید من درست اجراش نکردم.
Ma$oud ممنونم از وقتی که گذاشتی.
« آخرین ویرایش: 07 فروردین 1396، 03:09 ب‌ظ توسط Droid »