Q: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
質問
syslogを実行すると、systemctl start listdir
ルートディレクトリ( "/")が現在の作業ディレクトリに書き込まれます。もちろん、プロセスを開始する前にディレクトリが変更されると/usr/local
仮定しているので、現在のディレクトリと見なします。ExecStartPre
明らかに私はそれがsystemd
シェルスクリプトのように動作することを想像しました(たとえそれがシェルスクリプトではないことを知っているにもかかわらず)。誰かが私が何をすべきかを教えてもらえますか?を使用して作業ディレクトリを設定できますかsystemd
?ありがとうございます!
編集する:私のシステムログにエラーが報告されます。 (ちょうど気づきました。)
Executable path is not absolute, ignoring: chdir /usr/local
したがって、chdir
実行可能ファイル自体ではなくシェルコマンドです。わかりましたが、ディレクトリを変更するために使用できる他の方法はありますかsystemd
?
ベストアンサー1
systemd >= 227 では、次のものを使用できます。
[Service]
WorkingDirectory=/usr/local
そこからスクリプトを実行してみてください。
(文書管理システム)