2017-08-17 11 views
0

私はデーモンとして実行したいPythonスクリプトを持っています。問題は、私ができることですSystemd Execstart

SIGINT、私はそのユニットファイルを作成することによって、 /etc/systemd/system/service

をやっていると私はsystemctl start/stop/restart myservice

として、それを実行したいと私はSIGUPなどのシステムの信号を処理しています。このstartstop引数に応じて、私のスクリプトをPython main.py start/stop/restartとして実行し、私のロジックが動作します。

単位ファイルに変換した後、このpythonファイルはExecStartによって呼び出され、そこに引数を渡す方法はわかりません。

[Unit] 
    Description=This service monitors docker daemon for events 
    After=multi-user.target 

    [Service] 
    Type=simple 
    ExecStart=/home/PycharmProjects/python_tests/service-discovery/utils/auto_registeration_script/main.py 
    User=root 
    WorkingDirectory=/home/PycharmProjects/python_tests/service-discovery/utils/auto_registeration_script/ 
    Restart=on-failure 

    [Install] 
    WantedBy=multi-user.target 
+1

どのような引数を渡そうとしていますか?あらかじめそれらを知っていれば 'ExecStart'行に追加するか、サービスを構成する別の方法として環境変数を使用することができます –

+0

systemctlのCMDからstart/stop/restartを実行し、execstartにarguementとして渡したい私のスクリプトは、引数に基づいて実行することができるようにpythonスクリプト –

+0

あなたは私にこの@omu_negruを行う方法の例を教えてください –

答えて

0

"main.py start"と "main.py stop"を実際に実行しているわけではありませんか?その場合、あなたは "フォーク"サービスをプログラムしました。

[Unit] 
Description=This service monitors docker daemon for events 
After=multi-user.target 

[Service] 
Type=forking 
Environment=script=/home/PycharmProjects/python_tests/service-discovery/utils/auto_registeration_script/main.py 
ExecStart=$script start 
ExecStop=$script stop 
User=root 
WorkingDirectory=/home/PycharmProjects/python_tests/service-discovery/utils/auto_registeration_script/ 
Restart=on-failure 

[Install] 
WantedBy=multi-user.target 
関連する問題