web-dev-qa-db-ja.com

systemdサービスとしてのPythonプログラムのセットアップ

特定のシステム統計を記録するプログラムを作成しました。そのプログラムをLinuxサービスとして実行して、簡単に管理(開始、停止など)できるようにします。調査と試行に何時間も費やしましたが、systemdサービスファイルを正しく構成できないようです。

これまでのところ、サービスファイルにこれがあります:(clopperはユーザー名、resourciterはpythonプログラム名です)

[Unit]
Description=Simplified Resourciter logger service
After=syslog.target

[Service]
Type=simple
User=clopper
Group=clopper
WorkingDirectory=/home/clopper/resourciter/
ExecStart=/usr/bin/python3 /home/clopper/resourciter/runMonitor.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

しかし、サービスを開始しようとするとこのエラーが発生し続けます。

pam_unix(Sudo:auth): auth could not identify password for [clopper]

Systemdサービスファイルの設定の詳細については、明確なリファレンスを見つけることができないようです。

何か案は?

1
Jyclop

PythonスクリプトはSudoを使用してrootとしてコマンドを実行しようとしています。

スクリプトをサービスとして実行する場合、スクリプトには端末が接続されていないため、そのままでは実際には機能しません。したがって、Sudoには、スクリプトを実行するためのパスワードを要求する方法がありませんルートとしてコマンド。

パスワードを要求せずに端末を接続することなくコマンドを実行するようにSudoを構成する方法があります...しかし、そのルートに進む前に、代わりにSudoを使用せずにスクリプト全体をルートとして実行することを検討してくださいその中?それは物事を単純化するでしょう...

2
filbranden