cut
походит на подходящий инструмент для этого:
bash-4.2$ s='id;some text here with possible ; inside'
bash-4.2$ id="$( cut -d ';' -f 1 <<< "$s" )"; echo "$id"
id
bash-4.2$ string="$( cut -d ';' -f 2- <<< "$s" )"; echo "$string"
some text here with possible ; inside
Но read
еще более подходит:
bash-4.2$ IFS=';' read -r id string <<< "$s"
bash-4.2$ echo "$id"
id
bash-4.2$ echo "$string"
some text here with possible ; inside
acpid
демон должен получить события батареи подсистемой ACPI. Когда Вы отключаете/включаете ноутбук должны быть связанные события батареи. События могут быть связаны с действиями как питание от/приостанавливать/быть в спящем режиме системы и так далее.
Во-первых, попытайтесь проверить его путем наблюдения /var/log/messages
или связанные файлы журнала, когда Вы отключаете ноутбук. Должно быть что-то как
... ACPI action undefined: ...
Если нет ничего, что можно попробовать acpi_listen
команда, которая соединяется с acpid и прислушивается к событиям.
Затем можно настроить универсальный обработчик событий под /etc/acpi/events
каталог для событий батареи. Создайте там файл, например. battery.conf
со следующим содержанием:
event=battery.*
action=/etc/acpi/actions/battery.sh
Это говорит, что любое событие батареи должно быть обработано сценарием battery.sh
. В этом сценарии я контролировал бы состояние батареи, доступное от /proc/acpi/battery/*/state
файл. Особенно, проверьте строку, "заряжающую состояние", которое должно измениться на "разряд", когда Вы отключаете ноутбук или "заряжаться/заряжать" при включении его назад.
На основе этой информации можно выполнить быть в спящем режиме команду от обработчика событий battery.sh
. Кроме того, можно найти некоторые другие полезные примеры, например, на GitHub.
acpi_listen
ничего не показывает мне, когда я отключаю ноутбук. Единственная разница, которую я вижу, - то, что, если я выполняю acpi, он говорит "зарядку" при включении, но "разряд", когда я отключаю. Совет? – Jake 23.08.2013, 06:42