2016-09-10 13 views
1

私は起動時にrootとして実行したいpythonスクリプトを持っています。私はそれをサービスファイルとして追加する必要があると信じていますが、ルート権限があるかどうかわかりません。これは私のサービスファイルを持っている方法です。 Pythonファイルは、root以外では実行されません。Pythonスクリプトのスタートアップサービスを作成してArch Linuxでrootとして実行する

[Unit] 
Description= Description here 

[Service] 
Type=simple 
ExecStart=/usr/bin/python /home/script.py 
StandardOutput=null 

[Install] 
WantedBy=multi-user.target 
Alias=script.service 

助けてください。

+0

cronを使用できますか? – benten

答えて

0

Systemdはrootとしてマルチユーザサービスを実行するので、何か助けが必要なのか分かりません。

+0

私はPythonスクリプトが実行されていることを知っています。それは最善の方法ではないかもしれませんが、必要なのはサービスファイルに何か間違っています.ExecStartで何かがあるかもしれません。 –

+0

@ Nimda_R2 ExecStartはokです。このスクリプトをインストールしていて、期待通りに動かない(そうしなかった)場合は、ここでデバッグのヒントをご覧ください。これをファイルstartに加える: 'import getpass; ファイルが作成されていない場合は、スクリプトを間違ってインストールしただけで、システムに関連する問題が発生しています。 –

+0

だから、whoamiファイルの出力はrootですが、私はプログラムがrootで実行されているかどうかをチェックするコードセクションがあるので、プログラムがrootで実行されていないと言うことができます。ルートを検出しません。これは混乱しています。私は.serviceが動作していることを知っています。私はpythonは動作していますが、スクリプトはrootなしで正しく動作しません。 .serviceファイルに追加する必要があるものはありますか? –

0

これは機能しています。私がpythonスクリプトからルートチェックを削除した後、すべて正常に機能しました。また、サービスファイルからType=simple部分を削除しました。それらの2つの事の後、それはうまくいった。

ルートチェック部分を削除しました。

from os import getenv 
user = getenv("SUDO_USER") 
if user is None: 
    print ("This program needs to run as root") 
    exit(0) 

は、サービス・ファイルには、今私はsudo python script.pyを使用すると、プログラムが正常に走った、私は根のチェックアウトを取るために必要な、なぜ私はまだ理解していないこの

[Unit] 
Description= Description here 

[Service] 
ExecStart=/usr/bin/python /home/script.py 
StandardOutput=null 

[Install] 
WantedBy=multi-user.target 
Alias=script.service 

のように見えます。何らかの理由で、スクリプトがsystemctlで実行されたときにルートチェックに失敗します。

関連する問題