/etc/systemd/system/writehello.service

/etc/systemd/system/writehello.service

systemdを使用してプロセスを管理し、次の規則に従うすべてのオペレーティングシステムの場合Linux Foundationのファイルシステム階層標準

私は最近、systemdユニットファイルに加えてどこに行くべきか尋ねました。 Arch Linuxでは、システムデバイスファイルをどこに配置する必要がありますか?

Pythonスクリプト5分ごとに(Pythonスクリプトを呼び出すシステム単位のファイルスクリプトと混同しないでください)。私はこの質問に対する答えを読んだ。 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/sbinということです。sbin

あなたの分析は正しいです。これは/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はルート(システム「バイナリ」ディレクトリ)でのみ実行できます。

  2. /usr/bin ユニークではない(たとえば、パッケージマネージャからコンピュータ間で共有されるもの、パッケージマネージャはこの場所を使用します。)

  3. /root/binrootユーザーこのディレクトリは/usr/local/sbinrootユーザーrun または visible (このフォルダは root または group root によってのみ実行できるため、その内容は root 以外の誰にも表示されません.)

  4. /home/<user>/bin 標準ユーザーこのディレクトリを作成できます。標準ユーザーとしてsystemdが実行するスクリプトを保存するのに最適な場所です。

結論は番号1systemdデーモン/サービスが実行するスクリプトを保存するのに理想的な場所です。

言葉になりますね。

  1. 標準位置です。
  2. パッケージマネージャパッケージから隔離されています。

答え3

スクリプト/usr/binまたは/usr/local/bin(優先)または/opt

ExecStart=ユニットファイルの「Key In service」セクションのスクリプトを参照する必要があります。

関連情報