Запустить сценарий при пробуждении? [Дубликат]

Есть довольно много команд, которые вы можете использовать с banshee, сейчас это время, но вот сценарий, который я написал, потому что я не мог найти способ играть в интеллектуальный плейлист при входе в систему. Это было несколько месяцев назад, это был один из моих первых сценариев, и я сделал это для удовольствия, так что это очень плохо, я его не пробовал, но это должно по крайней мере дать вам пример того, как использовать банши на терминале:

   #!/bin/bash
    banshee --hide &
    sleep 3;
    banshee --play;

    while true; do
        pos=`banshee --query-position| sed s/position:\ //| sed s/,.*//`;
        dur=`banshee --query-duration| sed s/duration:\ //| sed s/,.*//`;
        left="$(expr $dur - $pos)";

        rating=`banshee --query-rating|sed s/rating:\ //`;
        isHumour="$(banshee --query-uri|sed s/.*Music//|grep /Humour)";

      if [[ $pos -lt "3" ]] && ([[ $rating -lt "2" ]] || [[ -n "$isHumour" ]]);
      then
        echo "next";
        exec banshee --next &
      else
        echo "sleep for" $left;
        sleep "$left";
        pos=`banshee --query-position| sed s/position:\ //| sed s/,.*//`;
        dur=`banshee --query-duration| sed s/duration:\ //| sed s/,.*//`;
        left= expr $dur - $pos;
        echo $left;
    fi;
    sleep 0.0001;
    done;
    exit 0;

Надеюсь, это поможет, извините, если это смущает вас ...

1
задан 7 December 2012 в 02:18

3 ответа

В 15.04, Vivid, вам нужно разместить свои скрипты в:

/lib/systemd/system-sleep/

Пример сценария, основанного на одном из вики Arch (systemd sleep Hooks):

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    # Place your pre suspend commands here, or `exit 0` if no pre suspend action required
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
    ;;
esac

Не забудьте сделать свой скрипт выполнимым!

sudo chmod a+x /lib/systemd/system-sleep/your-script

Подробнее см. man systemd-sleep.

Нет необходимости в sudo, так как ваш скрипт будет запущен как root

note: ссылка на вики Arch по объекту ( systemd sleep Hooks ) указывает (неправильно для 15.04), что вы должны поместить свои скрипты в /usr/lib/systemd/system-sleep/, но это не будет работать в Ubuntu 15.04. Поместите свои скрипты в /lib/systemd/system-sleep/, если вы используете 15.04.

30
ответ дан 25 May 2018 в 03:36
  • 1
    Разве эти сценарии не должны входить в / etc где-то вроде /etc/pm/sleep.d? – Damn Terminal 16 May 2015 в 19:29
  • 2
    Это тоже моя мысль, но это то, куда они идут. – SpmP 21 May 2015 в 22:40
  • 3
    Спасибо за это - потраченные годы пытаются выяснить, почему мои скрипты в /etc/pm/sleep.d не запускаются в 15.10. – Nick Craig-Wood 20 December 2015 в 15:25

Это не отдельный отдельный ответ, но поскольку я не могу комментировать (из-за ограничения репутации), я просто хотел бы добавить важное дополнение к ответу mfisch, который также работал для меня.

[d1 ] Обратите внимание, что HOME и PATH (и, возможно, другие переменные среды), вероятно, не будут совпадать с вашей обычной средой оболочки. У меня были проблемы с решением mfisch, которое, похоже, не работало для скриптов, которые мне нужно было выполнить в резюме, но оказалось, что это были мои скрипты, виноватые, так как они ожидали, что HOME будет настроен на мой каталог пользователя (я один пользователь в моей системе), а для PATH включить /usr/local/bin и в момент возобновления, ни одно из них не гарантируется (и в случае HOME, возможно, нецелесообразно). Поэтому вам, возможно, придется адаптировать свои сценарии / программы, чтобы не зависеть от этих env-vars ...

5
ответ дан 25 May 2018 в 03:36
  • 1
    Да, система репутации иногда отстой. Не раз я не вносил вклад из-за низкой репутации (newb на этом сайте), чтобы опубликовать комментарий. В любом случае хорошая точка +1 для вас. – dmnc 1 December 2014 в 17:51
  • 2
    Если вы чувствуете, что ваш вклад стоит того, чтобы улучшить другой ответ, предложите поправку к нему с помощью ссылки edit ниже. – David Foerster 22 March 2015 в 14:20

Поскольку у меня нет достаточной репутации для написания комментариев, я перепишу решение из mfisch в добавлении ответа для Lindh-E:

РЕШЕНИЕ:

РЕШЕНИЕ: предоставляет кучу скриптов, которые запускаются во время сна / возобновления.

Что вам нужно:

Создать сценарий под названием 99MyScript.sh (99 позволяет запустить его после другие скрипты) Добавьте свой скрипт в /usr/lib/pm-utils/sleep.d. Назначьте право исполнения: sudo chmod + x /usr/lib/pm-utils/sleep.d/99MyScript.sh Проверьте это :) [!d6 ]

ВНИМАНИЕ:

вам нужно быть осторожным, так как привинчивание, скорее всего, сломается. Если система выйдет из строя или замерзает, вы можете удалить скрипт или исправить его, но вам придется выполнить жесткий цикл питания, чтобы восстановить вашу систему.

ВНИМАНИЕ: [!d15 ]

Посмотрите существующие скрипты в /usr/lib/pm-utils/sleep.d. Сценарий под названием 95led довольно прост и будет хорошей моделью для начала. 95led предоставляет случаи для спящего режима / приостановки и оттаивания / возобновления, если вы хотите только возобновить, вы должны написать свой скрипт следующим образом:

#!/bin/sh

case "$1" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac
4
ответ дан 25 May 2018 в 03:36

Другие вопросы по тегам:

Похожие вопросы: