Как Павел Селиванов указывает в этой статье , необходимо установить DBUS_SESSION_BUS_ADDRESS
и DISPLAY
, чтобы включить задачи, связанные с графическим интерфейсом, из cronjob.
Он написал сценарий оболочки, который получает DBUS_SESSION_BUS_ADDRESS
для XFCE, Gnome, Unity, Cinnamon и KDE. Я могу подтвердить, что он работает под ubuntu:16.04
.
$ sudo nano /usr/local/bin/gui-cron
#!/bin/sh
[ "$#" -lt 1 ] && echo "Usage: $0 program options" && exit 1
program="$1"
shift
user=$(whoami)
env_reference_process=$( pgrep -u "$user" xfce4-session || pgrep -u "$user" cinnamon-session || pgrep -u "$user" gnome-session || pgrep -u "$user" gnome-shell || pgrep -u "$user" kdeinit )
export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/"$env_reference_process"/environ | grep -z ^DBUS_SESSION_BUS_ADDRESS= | sed 's/DBUS_SESSION_BUS_ADDRESS=//')
export DISPLAY=$(cat /proc/"$env_reference_process"/environ | grep -z ^DISPLAY= | sed 's/DISPLAY=//')
"$program" "$@"
Затем можно создать пользовательское задание cron, которое запускается по заданному расписанию с помощью синтаксиса crontab. Здесь, например. каждые 15 минут с 22 :00 до 05 :59:
$ crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/15 22-23,00-05 * * * gui-cron gnome-session-quit --power-off
Стандартное использование Unix состояло в том, чтобы иметь (небольшой )загрузочный диск (с /bin
, /lib
, /etc
, /tmp
, возможно /sbin
и очень немногим другим ), и смонтировать, например диск с /usr
, другой с /home
,... в соответствующих точках. Сегодняшние диски TiB делают этот (в основном )спорным... установка вашего дистрибутива, вероятно, установит (небольшой )раздел для загрузки и «остальной части диска», вы все еще можете настроить и смонтировать другие диски (даже сетевые файловые системы )под этим, и все это рассматривается как (в основном )цельный блок.
Установка этого (или использование LVM для создания логического тома, охватывающего несколько дисков и т. д. ), вероятно, означает установку с нуля.
Единственными файлами, к которым у вас должен быть доступ для загрузки системы Linux, являются ядро и initramfs (, если вы их используете; большинство дистрибутивов делают ). Есть два основных способа сделать это на текущих ПК :: они могут храниться в системном разделе EFI (ESP )или в разделе, выделенном для /boot
. Последняя конфигурация поддерживается большинством дистрибутивов.
Все остальное может размещаться в логическом томе или нескольких томах, построенных как угодно, на любом числе дисков (в пределах md
подсистемы ядра, но они достаточно высоки, чтобы не быть концерн ). Обычно у вас будет один том для /
и один для /home
и, возможно, другие (/usr/var
,... ), но вам это не обязательно.