Выключить / спать после завершения скрипта

У меня есть маленький сценарий. Это вырвано из учебника Youtube, непроверенное, уродливое и не очень хорошее. Это не сделано и не предназначено для общественного использования. Вот оно:

#!/bin/bash

sudo apt-get -y install git g++ gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev lib32bz2-dev xserver-xorg-dev:i386 libfreetype6-dev:i386 libmirclient-dev:i386 libosmesa6:i386 libosmesa-dev libjpeg-turbo8-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxrandr-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libdbus-1-dev:i386 libgnutls-dev:i386 libncurses5-dev:i386 libsane-dev:i386 libv4l-dev:i386 libgphoto2-6-dev:i386 liblcms2-dev:i386 liblcms1-dev:i386 gstreamer0.10-plugins-base:i386 libcapi20-dev:i386 libcups2-dev:i386 libfontconfig1-dev:i386 libgsm1-dev:i386 libtiff5-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libxrender-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libpng12-dev:i386 libssl-dev:i386 libldap2-dev:i386 unixodbc-dev:i386

sudo apt-get -y build-dep wine1.7

cd /usr/lib/i386-linux-gnu
sudo ln -s libfreetype.so.6 libfreetype.so
sudo ln -s libOSMesa.so.6 libOSMesa.so

git clone git://source.winehq.org/git/wine.git ~/wine-git
cd ~/wine-git

cat "/home/krabica/Dokumenty/TextFiles/0099-EndlessSpace-WGL-ShareList-Hack.patch" | patch -p1

./configure
make

Я предупреждал вас.

Как видите, этот скрипт вызывает несколько команд, некоторые из которых являются root, а некоторые - обычным пользователем, в данном случае «krabica» («box» (как в «картонной коробке») на английском языке).

Проблема в том, что компиляция Wine на моем ноутбуке занимает более 2 часов, поэтому я хочу оставить его включенным, пока я сплю, но я хочу, чтобы мой ноутбук выключался / спал или что-то еще (введите состояние, в котором компьютер и вентилятор не работает, чтобы сэкономить энергию и позволить мне спать в тишине).

Проблема в том, что shutdown нужно называть sudo, иначе это не сработает. Но, когда сценарий завершается, пароль больше не находится в кэше, и вам нужно ввести его снова (не очень удобно, когда вы спите).

Я пытался запустить path/to/script && sudo shutdown, но это тоже не сработало. Он хочет пароль через 15 минут с момента его последнего ввода.

Есть ли простой способ добиться этого? Под легким я подразумеваю не изменять настройки системы и т. Д.

Спасибо.

1
задан 29 June 2014 в 14:46

1 ответ

Оберните его в подоболочке:

sudo sh -c "/path/to/script; shutdown -h now"

проблемой там является сценарий, будет работать как корень также. Это не могло бы быть проблемой (рассмотрите его в своем случае), но можно работать вокруг этого при помощи sudo снова, чтобы внезапно повернуть назад вниз к Вашему $USER (который будет заменен, потому что мы используем двойные кавычки):

sudo sh -c "sudo -u $USER /path/to/script; shutdown"

Это - немного hacky, но это должно работать.

3
ответ дан 29 June 2014 в 14:46

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

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