/etc/systemd/system/writehello.service

/etc/systemd/system/writehello.service

对于任何使用 systemd 来管理进程并遵循以下规则的操作系统Linux 基金会的文件系统层次结构标准

我最近问除了 systemd 单元文件之外去哪里: 在 Arch Linux 上,我的 systemd 单元文件应该放在哪里?

我想运行一个蟒蛇脚本每 5 分钟一次(不要与调用 python 脚本的 systemd 单元文件脚本混淆)。我读了这个问题的答案: 使用 systemd 每 30 分钟运行一次脚本

这就是我的问题所在。您应该或者可以在哪里存储由 systemd 运行的脚本?是否有为这些保留的位置,特别是在 Arch Linux 上?

  • 例如,日志放置在/var/log
  • 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

这是一个相应的计时器。这都是有记录的东西。

[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

答案1

我也在思考同样的问题,想看看其他人的意见。我的看法是,/usr/local/sbinsbin把应该由管理员运行的东西放在哪里。

您的分析是正确的,这/usr/local是专门用于安装不受包管理器管理的内容的位置。但bin适用于普通用户应该可以运行的东西。无论哪种情况,root除了/usr/local.据我所知,这是惯例(对于整个 /usr/ )。

/opt通常用于系统默认不使用的软件包,用户应该设置一些环境变量以供 bin/man/etc 访问。特定包的目录。阅读我上面提供的链接。

RHEL FSH 概述以及最新的 FHS 文档

答案2

以下是存储将要运行的内容的理想位置(有关详细信息,请参阅链接):

引用自文件系统层次结构标准 HS v2.3

本地安装的系统管理程序应放置在 /usr/local/sbin 中。

据我所知,当 FHS 文档提到“系统”时,它指的是某个“root”用户。

  1. /usr/local/bin或者/usr/local/sbin 独特的到此计算机(包管理器不可用,例如脚本、CD 中的软件),即未从公共源安装到所有计算机(不是包管理器)。/usr/local/bin所有用户都可以运行东西。/usr/local/sbinstuff只能由root运行(它是系统“二进制”目录)。

  2. /usr/bin 不独特(计算机之间共享的东西,例如来自包管理器,即包管理器使用此位置

  3. /root/binA根用户可以创建此目录而不是使用/usr/local/sbin.这是一个存放只有一个东西的好地方根用户运行或可以看到(此文件夹只能由 root 或组 root 执行,因此除 root 之外的任何人都看不到其内容)您甚至可以在其中创建一个 bin 文件夹以保持一致,但无论如何没有人知道:)

  4. /home/<user>/bin 标准用户可以创建这个目录。它是存储由 systemd 作为标准用户运行的脚本的好地方。

结论是1号将是存储由 systemd 守护进程/服务运行的脚本的理想位置。

这说得通,

  1. 这是一个标准位置
  2. 它与您的包管理器包隔离

答案3

您可以将脚本存储在/usr/bin/usr/local/bin(首选)或/opt

您必须参考 ExecStart=单元文件的 key In service 部分中的脚本

相关内容