「sample.txt」ファイルを作成するPythonファイル「test.py」を、「/home/user/」内に置きます。
def main():
path = "sample.txt"
f = open(path, "w")
f.close()
if __name__ == "__main__":
main()
直接「test.py」を実行すると同じ階層の「/home/user/」内に「sample.txt」が作成されます。
今度は起動時に「test.py」を実行するようにsystemdを使って設定します。
[Unit]
Description=test
[Service]
ExecStart=/usr/bin/python3 /home/user/test.py
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
起動時に「test.py」を実行するサービスを有効にして再起動します。
先程は同じ階層の「/home/user/」内に「sample.txt」ファイルが作成されていましたが、今回はファイルが見当たらないと思います。
ファイルの作成に失敗したわけではなく、ルートディレクトリ「/」内に「sample.txt」が作成されていました。
※ルートディレクトリとは、階層の一番上にあるディレクトリのことです。
原因は作業ディレクトリの指定がないことでした。
作業ディレクトリは「WorkingDirectory」で指定することができます。
[Unit]
Description=test
[Service]
WorkingDirectory=/home/user/
ExecStart=/usr/bin/python3 /home/user/test.py
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
作業ディレクトリを「test.py」と同じ階層の「/home/user/」と指定することで、起動時の自動実行でも「sample.txt」は「/home/user」内に作成されるようになりました。