62400


AWS EC2 Amazon Linux2 上で python のプログラムを ec2-user 権限で自動起動したいです

`/etc/systemd/system/test.service` の中に

[code]

    User=ec2-user
    
[/code]

をかいたところ起動ユーザは ec2-user で動くようになったのですが  
`.aws/config` が読み込めず AWS リソースへのアクセスがエラーになります  
おそらく HOME という環境変数が存在しないせい？かと思うのですが

[code]

    [Service]
    ExecStart=HOME=/home/ec2-user /home/ec2-user/.pyenv/shims/python -u /var/www/test/current/scripts/test.py
    User=ec2-user
    Group=ec2-user
    
[/code]

と書いてみても

[code]

    Executable path is not absolute, ignoring: ...
    
[/code]

となってサービスファイルの書き方的にダメ見たいです

完全に ec2-user と同じ環境状態で自動起動を行うにはどうすればいいのでしょうか

ec2-user でログインし状態であればカレントディレクトリに関係なく

[code]

    python absolute_path/test.py
    
[/code]

で実行できます

OS: Amazon Linux2 です


CC BY-SA 4.0
2020-01-19T10:07:12.113
62360
2020-01-20T15:02:00.887
2020-01-20T15:02:00.887
32986
question
linux amazon-linux systemd
systemd からのサービス起動時にHOME環境変数を設定したい


`systemd.service`(5) の `ExecStart` (など) はシェルスクリプトを利用せずに直接起動 (`exec`(2))
されます。なのでシェルの構文 (シェルスクリプト) を書きたい場合は `ExecStart=/bin/sh -c '<シェルスクリプト>'`
のような書き方をする必要があります。サービスプロセス向けに環境変数を設定したいだけであれば、`sh` を利用せずに
`Environment="HOME=/home/ec2-user"` を追加するだけで充分かと。


CC BY-SA 4.0
2020-01-20T13:39:08.527
62400
2020-01-20T13:39:08.527
3061
62360
answer