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

کمک و پشتیبانی => انجمن عمومی => نویسنده: Droid در 06 فروردین 1396، 09:00 ق‌ظ

عنوان: اجرا دستور یا اسکریپت بعد از resume (حل شد)
ارسال شده توسط: Droid در 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
از اوبونتو ۱۶.۰۴ استفاده میکنم، لطفا راهنمایی بفرمایید.
عنوان: پاسخ : اجرا دستور یا اسکریپت بعد از resume
ارسال شده توسط: Ma$oud در 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نتیجه را تست کنید!   :)
عنوان: پاسخ : اجرا دستور یا اسکریپت بعد از resume
ارسال شده توسط: Droid در 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


 ](*,)
عنوان: پاسخ : اجرا دستور یا اسکریپت بعد از resume
ارسال شده توسط: Ma$oud در 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 باید دسترسی اجرایی داده باشید!  ;)
عنوان: پاسخ : اجرا دستور یا اسکریپت بعد از resume
ارسال شده توسط: Droid در 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


راه حل فعلی  ](*,)
عنوان: پاسخ : اجرا دستور یا اسکریپت بعد از resume
ارسال شده توسط: Droid در 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 ممنونم از وقتی که گذاشتی.