質問: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ますか?