webdevqa.jp.net

システムの起動時に常に特定のpythonスクリプトを実行する

システムの起動時にシャットダウンするまで、特定のpythonスクリプトをシステムで常に自動的に実行するにはどうすればよいですか?

その小さなスクリプトをいくつかのinitスクリプトなどに入れるだけの簡単な方法があり、それを呼び出さなくても実行を続けることができます。

違いがあれば、Ubuntu10.04を使用しています。

2
zubinmehta

スクリプトを/etc/init.d/に配置しますか? http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/

6
Chris

(Gnomeの下で)[システム] >> [環境設定] >> [セッション]に移動して、ここにスクリプトを追加できます。

1
sputnikus

ユーザーがログインした後に実行する必要があるが、システムがシャットダウンされるまで実行されるとのことです。通常、Xセッションで実行されるものは、セッションがシャットダウンされると停止するため、これは少し矛盾します。さらに、X-windows以外のセッションで実行する場合は、複数回の実行との反応に十分注意するか、1回だけ開始するように注意する必要があります。

そうは言っても、スクリプトを実行する方法は次のとおりです。

  • ユーザーのcrontabで、次のように時間指定に「@reboot」を使用します。@reboot /path/to/scriptこれにより、指定されたユーザーとして実行され、システムの起動時に開始され、システムが停止するかシステムがシャットダウンされるまで実行されます。
  • 「設定」アプリケーション(XFCE:アプリケーション->設定-> Xfce 4設定、GNOME:システム->環境設定など)に移動し、セッションで開始されるアプリケーションを変更します。セッションの一部として実行するスクリプトを追加できます。これは、セッションの実行中に開始および実行されますが、スクリプトが終了しても再起動されません。
  • セッションスクリプトは、バックグラウンドでPythonプログラムを実行するスクリプトでラップできるため、セッションログアウト後も実行を継続できますが、ユーザーがログアウトした場合は必ず確認する必要があります。また、複数のコピーを開始しないという点で戻ってきます。
  • X Windowsセッションではなく、SSHなどを介してシェルセッションから実行する場合は、.profile(.bash_profile、.zprofileなど)に配置できます。ただし、上記のようにバックグラウンドで処理し、複数のコピーが実行されていないことを確認する必要があります。
  • /etc/rc.localに配置して、ユーザーとして( "su"を介して)実行することもできますが、ログイン時ではなく、起動時に開始されます。個人的には、これよりもcront + @rebootをお勧めします。
  • 「/ etc/init」でupstartスクリプトを作成できます。これにより、上記のように起動時にスクリプトが開始されますが、何らかの理由でスクリプトが停止した場合は、スクリプトを再起動させることができます。これは、実行を継続する必要がある場合に最適なオプションです。
1