UbuntuのUPSTART機能を使用して、Pythonスクリプトをrootで起動せずにどのように再起動できますか?

UbuntuのUPSTART機能を使用して、Pythonスクリプトをrootで起動せずにどのように再起動できますか?

私はPythonスクリプトを実行するためにUbuntuの起動機能を使用しています。これにより、Pythonスクリプトが何らかの理由で死亡または終了すると、自動的に再起動され、すべてが機能します。

UPSTARTだから私はPythonスクリプトを自動的に再起動するUbuntuの機能を利用することにしました。

testing.confこれらのファイルを作成した後/etc/init/testing.conf-

start on runlevel [2345]
stop on runlevel [016]

chdir /tekooz
respawn

post-stop script
  sleep 30
end script

exec python testing.py

以下でsudoコマンドを実行して起動すると、プロセスが使用されており、ps axPythonスクリプトが正しく実行されていることがわかります。上記のプロセスのpidを確認すると、常にrootとして実行されていることがわかります。ルートとして実行したくありません。代わりにdedsアカウントで実行したいです。

deds@bx13:/$ sudo start testing
testing start/running, process 3635
deds@bx13:/$ ps aux | grep testing
root      3635  2.4  0.1 364136 15660 ?        Ssl  12:24   0:00 python testing.py

testing.confファイルを保存してから別のコマンドで実行する必要がある他の場所がありますか?

sudoasを介してPythonスクリプトを起動したくないので、sudo start testingrootで起動したくなく、dedsアカウントで起動したいと思います。別の方法がありますか?

ベストアンサー1

2つのオプションがあります。このコマンドを使用する開始バージョンがinitctl --version1.4 以降の場合は、test.conf ファイルに次の行を追加します。

setuid deds
setgid deds

それ以外の場合は、exec行を次に変更します。

exec sudo -u deds python testing.py

おすすめ記事