Странное взаимодействие crontab-сценария (удар)

Я разламываю это на 3 отличных фазы. Встроенное микропрограммное обеспечение, где Вы узнаете об аппаратных средствах, Ядре, которое берет информацию, предоставленную встроенным микропрограммным обеспечением, и использует его, чтобы найти и загрузить драйверы, модули, в конечном счете ведя к фазе ОС, которая включает все шаги, необходимые для взятия Вас полностью к полностью под управлением пакету ОС и приложению, которое способно к предоставлению указанных услуг.

1) встроенное микропрограммное обеспечение

  • x86/64: загрузки BIOS, настраивает устройства, выбирает устройство загрузки (сеть/диск/CD/usb)
  • SPARC: nvram загружает OpenBoot, настраивает устройства, выбирает устройство загрузки (сеть/диск/CD/usb)

2) ядро

  • если загрузочный носитель является сетевым, существует предварительный шаг здесь для инициализации RARP/протокола BOOTP на SPARC, или для DHCP на SPARC, если устройства загрузки явно установлены использовать DHCP (например: загрузите net:dhcp). На x86/64 стороне существует также предварительный шаг, который использует DHCP в процессе, известном как PXE. RARP/протокол BOOTP не является опциями с PXE. И SPARC и x86_64 методы используются, чтобы настроить IP-адреса и получить информацию о ядре и местоположениях медиа в сети.
  • ядро загружается из загрузочного носителя (сеть/диск/CD/usb)

3) ОС

  • загрузки ядра. в этой фазе настраиваются основы. загружающееся ядро использует загрузочный архив для загрузки отдельных файлов, пока не, имеет достаточно информации для монтирования локальных файловых систем самой, затем операции доступа к файлу обрабатываются соответствующим драйвером.
  • SMF играет роль здесь, поскольку ядро загружает ОС в начальный сервисный этап, который обычно был бы этапом многопользовательского сервера, но мог бы быть однопользовательским этапом, если бы Вы загружались в однопользовательский режим. Эта часть инициализации ОС загружает все сервисы, которые требуются, чтобы сервер функционировал.
  • Один начальный этап достигается, затем дополнительный (дополнительно), сервисы запускаются через средство SMF svc.startd. Вы могли думать об этом как о 'прикладном уровне' процесса начальной загрузки. Это - то, где SSH запустился бы, или Apache, или Weblogic или Sendmail, или безотносительно других приложений, Вы используете. Это сервисы, которые считают требуемыми Администратором, а не требуемыми ядром, как в предыдущем маркере.

Это не может быть вполне столь детализировано, как Вы надеетесь на, но это должно служить довольно хорошей основой для запущения Вас. У Oracle и других есть документы онлайн, которые входят в очень большой уровень детализации на отдельных частях процесса начальной загрузки. Хорошим началом могла бы быть Глава 7 SPARC и Начальная загрузка на базе x86, затем быстрый поиск Google 'solaris последовательность начальной загрузки' найдет Вас документами, которые можно использовать для сравнения последовательностей начальной загрузки более старых версий Соляриса к последнему выпуску.

2
06.04.2013, 20:15
3 ответа

Записи в системах crontab (/etc/crontab) или к каталогам (/etc/cron.d - или - /etc/cron.hourly, и т.д.) выполненный как корень. Вероятно, имеет место, что корень не имеет способности получить доступ к дисплею данного пользователя по умолчанию.

Я предложил бы делать crontab записи с помощью способности пользователя добавить crontabs. Это может быть выполнено при помощи команды crontab -e в оболочке вошел в систему как указанный пользователь.

Команда crontab -e откроет текстовый редактор (обычно vi или vim) где можно добавить записи с помощью того же синтаксиса, который Вы использовали бы для добавления записей в системы /etc/crontab файл.

Это учебное руководство касается основ добавления crontab записи.

Также при добавлении crontab пользователя через crontab -e и для Вашего сценария нужен доступ к Вашему дисплею (скажите запуск GUI) необходимо будет установить переменную среды (export DISPLAY=:0.0) так, чтобы GUI добрался, направил к требуемому дисплею.

Например,

% crontab -e

И добавьте следующую строку:

53 07 * * * export DISPLAY=:0.0;/home/username/bin/alarming
0
27.01.2020, 22:14
  • 1
    Это не система crontab, хотя; это - мой пользователь crontab. Я разъяснюсь. –  Garrigus Carraig 06.04.2013, 20:13
  • 2
    я должен был добавить точку с запятой, так, чтобы он теперь читал 53 07 * * * export DISPLAY=:0.0;/home/username/bin/alarming. Но, да, который работал.Спасибо. Идите вперед и сделайте это ответом. –  Garrigus Carraig 06.04.2013, 20:34
  • 3
    Да я должен был упомянуть это. Можно также перенести всю строку в свой собственный сценарий. Довольный это работало, обновил мой ответ для включения дополнительных деталей. –  slm♦ 06.04.2013, 20:46
  • 4
    Отметьте к любопытному: я узнал, что в Ubuntu/Debian с этой задачей приятно справляются at команда. –  Garrigus Carraig 06.04.2013, 22:27
  • 5
    при команде повсеместен через в значительной степени все нельды. –  slm♦ 07.04.2013, 01:14

Для запущения программы GUI необходимо установить DISPLAY переменная среды, и возможно XAUTHORITY также. Посмотрите Открытый окно на удаленном X дисплеев (почему "Не может открыть дисплей")? для получения дополнительной информации.

~ значение Вашего корневого каталога является функцией оболочки, Вы не можете использовать его в crontab. По той же причине Вы не можете использовать HOME. Используйте полный путь для своего корневого каталога:

PATH=/home/username/bin:/usr/bin:/bin

С ударом как Ваша оболочка, ~ на самом деле работы, потому что удар расширяется ~ в значении PATH. Но это - причуда удара, никакая другая оболочка или другая программа не прокладывают себе путь.

Команда env DISPLAY=:0 отображает текущую среду, кроме с DISPLAY набор к :0. Это не полезно. Вы, по-видимому, имели в виду export DISPLAY=:0.

Ваше расположение очень сложно. Крон разработан для повторения задач. Если Вы хотите запланировать фоновое задание только однажды, используйте в.

at 7:53 <<EOF
firefox --new-window http://www.bbc.co.uk/radio/player/bbc_world_service
EOF

В сохраняет DISPLAY переменная среды, поэтому если Вы работаете at команда от GUI, где Вы хотите, чтобы Firefox отобразил окно, Вы не должны устанавливать его вручную.

2
27.01.2020, 22:14
$ xauth extract - :0 | sudo xauth -f /root/.Xauthority merge -

Они также запускаются с другого tty, поэтому вам нужно

$ DISPLAY=:0 xclock
0
27.01.2020, 22:14

Теги

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