質問:systemdでプロセスを開始し、そのプロセスに選択した作業ディレクトリを割り当てることはできますか?
開始したいサービスがありますsystemd
。そのサービスが開始されると、現在の作業ディレクトリを割り当てることができます。私が使用していた場合、これを行う方法を知っていますinit
が、私は問題を抱えていsystemd
ます。
これが私が仕事をしようとしてきたことです。
私のサービス
Pythonで記述された単純なユーティリティ( "listdir")を作成し、次の場所に配置しました/opt/bin/listdir
。
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
構成ファイル
次に、listdir.service
ファイルを作成して、systemd
ここに配置しました/lib/systemd/system/listdir.service
。
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
問題
systemctl start listdir
システムログを実行すると、ルートディレクトリ( "/")が現在の作業ディレクトリとして記録されます。もちろん、プロセスを開始する前にディレクトリを変更する/usr/local
と思ったので、現在のディレクトリとして期待していましたExecStartPre
。
明らかに、それsystemd
がシェルスクリプトのようなもので動作することを想像しています(シェルスクリプトではないことはわかっていますが)。誰かが私にすべきことを教えてもらえますか?を使用して作業ディレクトリを設定することも可能systemd
ですか?ありがとう!
編集:私のシステムログはエラーを報告しています。(さっき気付いた。)
Executable path is not absolute, ignoring: chdir /usr/local
ですから、chdir
シェルコマンドであり、実行可能ファイルそのものではありません。はい。しかし、まだディレクトリを変更する方法はありsystemd
ますか?