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」ユーザーを指すことです。
/usr/local/bin
または/usr/local/sbin
ユニークこのコンピュータ(パッケージマネージャは利用できません(スクリプト、CDのソフトウェアなど))、つまり通常のソースからすべてのコンピュータにインストールされていません(パッケージマネージャではありません。)。/usr/local/bin
すべてのユーザーがタスクを実行できます。/usr/local/sbin
stuffはルート(システム「バイナリ」ディレクトリ)でのみ実行できます。/usr/bin
ユニークではない(たとえば、パッケージマネージャからコンピュータ間で共有されるもの、パッケージマネージャはこの場所を使用します。)/root/bin
ㅏrootユーザーこのディレクトリは/usr/local/sbin
。rootユーザーrun または visible (このフォルダは root または group root によってのみ実行できるため、その内容は root 以外の誰にも表示されません.)/home/<user>/bin
標準ユーザーこのディレクトリを作成できます。標準ユーザーとしてsystemdが実行するスクリプトを保存するのに最適な場所です。
結論は番号1systemdデーモン/サービスが実行するスクリプトを保存するのに理想的な場所です。
言葉になりますね。
- 標準位置です。
- パッケージマネージャパッケージから隔離されています。
答え3
スクリプト/usr/bin
または/usr/local/bin
(優先)または/opt
ExecStart=
ユニットファイルの「Key In service」セクションのスクリプトを参照する必要があります。