У меня есть маленький сценарий. Это вырвано из учебника 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 минут с момента его последнего ввода.
Есть ли простой способ добиться этого? Под легким я подразумеваю не изменять настройки системы и т. Д.
Спасибо.
Оберните его в подоболочке:
sudo sh -c "/path/to/script; shutdown -h now"
проблемой там является сценарий, будет работать как корень также. Это не могло бы быть проблемой (рассмотрите его в своем случае), но можно работать вокруг этого при помощи sudo
снова, чтобы внезапно повернуть назад вниз к Вашему $USER
(который будет заменен, потому что мы используем двойные кавычки):
sudo sh -c "sudo -u $USER /path/to/script; shutdown"
Это - немного hacky, но это должно работать.