Есть ли назначенное место для сценариев, которые (косвенно) автоматически выполняются systemd?

Arch Linux Question (или любая ОС, использующая systemd для управления процессами и следуя стандарту иерархии файловой системы Linux Foundation )

Недавно я спросил, где взять файл systemd: Где я могу поместить свой файл unitd в Arch Linux?

Я хотел бы запускать скрипт python каждые 5 минут (не путать с системным скриптом systemd, который вызывает скрипт python). Я прочитал ответы на этот вопрос: Запустите скрипт каждые 30 минут с помощью systemd

Вот где мой вопрос. Где или вы могли бы хранить скрипты, которые запускаются systemd? Есть ли зарезервированное место для них, особенно в Arch Linux?

  • Например, журналы помещаются в /var/log
  • systemd файлы systemd помещаются в /etc/systemd/system

/etc/systemd/system/writehello.service

Вот пример службы.

 [Unit] Description=Run python script that writes hello in file on /media/5TB/hello.txt [Service] Type=oneshot ExecStart=# <-- This is what I am looking for [Install] WantedBy=multi-user.target 

/etc/systemd/system/writehello.timer

Вот соответствующий таймер. Это все, задокументированное замечательными разработчиками Arch Linux (коричневое ношение).

 [Unit] Description=test [Timer] Persistent=true OnUnitActiveSec=10s OnBootSec=10s [Install] WantedBy=timers.target 

/path/to/writehello.py

Это путь, который я ищу.

 #!/usr/bin/env python import os import datetime now = datetime.datetime.now() f1 = open('/media/mydrive/hello.txt','a') f1.write('hello %s\n' % (now)) f1.close 

4 Solutions collect form web for “Есть ли назначенное место для сценариев, которые (косвенно) автоматически выполняются systemd?”

Я тоже думал об этом же вопросе и хотел посмотреть мнение другого. Я беру на себя это /usr/local/sbin поскольку sbin – это место, где вы помещаете вещи, которые должны запускаться администратором.

Ваш анализ корректен. /usr/local – это место, предназначенное для установки файлов, не управляемых менеджером пакетов. Но bin – это материал, который должен запускаться обычными пользователями. В любом случае вы не должны разрешать доступ на запись кому-либо, кроме root к файлам в /usr/local . Это соглашение, насколько я помню (для всего / usr /).

/opt обычно используется для пакетов, которые по умолчанию не используются в системе, и пользователь должен установить некоторые переменные среды для доступа к bin / man / etc. каталоги конкретной упаковки. Прочтите приведенные выше ссылки.

См. Обзор RHEL FSH, а также последнюю документацию FHS .

Обычно вы делаете это с помощью cron . Если вы беспокоитесь о том, что некоторые пользователи с низкими привилегиями могут злонамеренно редактировать скрипт python, просто дайте ему права на чтение, запретив писать этот файл.

Вы можете хранить свои скрипты в /usr/bin или /usr/local/bin (предпочтительно) или /opt

Вы должны обратиться к скрипту в ExecStart= key В разделе обслуживания файла unit

Вот идеальные места для хранения вещей, которые будут выполняться (см. Ссылки для деталей):

Цитата из стандарта иерархии файловой системы HS v2.3

Локально установленные программы администрирования системы должны быть помещены в / usr / local / sbin.

Я понял, что когда документация FHS относится к «системе», это относится к некоторому «корневому» пользователю.

  1. /usr/local/bin OR /usr/local/sbin уникальный для этого компьютера (недоступен менеджеру пакетов, например скриптам, программному обеспечению с компакт-диска), т.е. не установлен из общего источника на все компьютеры (а не диспетчер пакетов ). /usr/local/bin можно запускать всеми пользователями. /usr/local/sbin может запускаться только root (это системный «двоичный» каталог).

  2. /usr/bin не является уникальным (общий материал между компьютерами, например, из диспетчера пакетов, т.е. менеджер пакетов использует это местоположение )

  3. /root/bin пользователь root может создать этот каталог вместо использования /usr/local/sbin . Это хорошее место для хранения вещей, которые может видеть только пользователь root или может видеть (эта папка выполняется только root или групповым корнем, поэтому ее содержимое не отображается никому, кроме root). Вы даже можете сделать папку с бинами там держи все в порядке, но никто не знал бы так или иначе 🙂

  4. /home/<user>/bin стандартный пользователь может создать этот каталог. Это хорошее место для хранения скриптов, которые запускаются как стандартный пользователь systemd.

Вывод заключается в том, что номер 1 будет идеальным местом для хранения сценариев, которые запускаются демонами / службой systemd.

Это имеет смысл,

  1. это стандартное местоположение
  2. он изолирован от пакетов пакетов менеджера пакетов
  • Как заставить службу /etc/xdg/autostart/app.desktop ждать службы (systemd)?
  • Как запустить службу systemd после команды mount
  • Как автоматически создать папку времени выполнения с помощью службы systemd или tmpfiles.d?
  • Как systemd останавливает службы, у которых нет файла модуля
  • Вход в стандартный вывод
  • Идентификатор сервера MySQL не устанавливается с помощью Fedora 16
  • «Systemctl list-timers» показывает последние выполненные даты, которые далеки в будущем
  • Запуск состояния systemctl vs systemctl
  • systemd - единицы таймера, которые имитируют поведение anacron
  • Как запустить скрипт (когда USB-память подключена) автоматически в Debian Jessie (Raspberry Pi)?
  • SIGKILLing после льготного периода
  • Linux и Unix - лучшая ОС в мире.