2017-12-12 22 views
1
イムは、現在、rc.localには、このスクリプトを使用して画面のセッション内のPythonスクリプトを実行している

にsystemdサービス - 起動時に画面内のPythonスクリプト

screen -L -dmS pi python /home/pi/truck/main2.py & 

しかし、私はそれは私が再起動することができますにsystemdを介して実行したいと思いますPythonスクリプトがクラッシュした場合。

は私が/systemd/system/myscript.service

[Unit] 
Description=myscript 
After=network.target 

[Service] 
Type=simple 
Restart=on-failure 
RestartSec=3 
ExecStart=/usr/bin/screen -L -dmS pi python /home/pi/truck/main2.py 

[Install] 
WantedBy=multi-user.target 

でサービスを作成しようとしたが、それは文句を言わないscreenセッション内で私のスクリプトを実行しますか?

実行中の画面のリストが表示された場合、画面セッション「pi」が死んでいることが示されます。以下のような明示的なパスを持つ

答えて

0

てみてください...

ExecStart=/usr/bin/bash -c '/usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py' 

通常、あなたは、コールの繰り返しによってこれらをデバッグすることができます。
例えば 、ターミナル試みで(及び各成功を進める)、その後、必要に応じて#3作品は、あなたがそれをコピー

  1. /usr/bin/python /home/pi/truck/main2.py
  2. /usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py
  3. /usr/bin/bash -c '/usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py'

場合サービスファイルに追加します。その日の終わりに、それは実際にはsystemdのすべてです。別のユーザーとしてスクリプトを実行しようとしていた場合、デバッグする場合はルートのように、su - piのようなものを使用して、サービスファイル内でUser=piをテストして使用します。

関連する問題