ラズパーの起動時にスクリプトを実行する方法

ページ名:ラズパーの起動時にスクリプトを実行する方法

メディアセンター、ウェブサーバー、ゲーム機、単なるコンピュータなど、Raspberry Piの起動時に特定のプログラムやスクリプトを自動的に起動させたい理由は無数にあります。このWikiHowでは、スクリプトをサービスとして追加(デスクトップがロードされる前)するか、自動起動ファイルに追加(デスクトップがロードされた後)することで、起動時にスクリプトを強制的に起動する方法を説明します。

方法1

スクリプトをサービスとして追加する

  1. スクリプト用の.serviceファイルを作成します。この方法では、LXDEが起動する前のブート時にスクリプトを実行するサービスを作成する方法を説明します。スクリプトがすぐにアクティブにならない依存関係(ネットワークやグラフィカルなものなど)を必要とする場合、サービスはそれらのプロセスがロードされるまで待つようにスクリプトに指示します。この構造に従ってファイル(scriptname.service)を作成し、必要に応じてパスと説明を置き換えてください:

    [ユニット]

    説明=私のサービス

    After=network-online.target

    [サービス]

    実行開始=/usr/bin/python3 -u main.py

    WorkingDirectory=/home/pi/myscript

    標準出力=継承

    StandardError=継承

    再起動=常に

    ユーザー=pi

    [インストール]

    WantedBy=multi-user.target

  2. サービスを/etc/system/systemにコピーする。これはroot権限で行う必要があるので、sudoを使ってください。以下に例を示す:
    • sudo cp myscript.service /etc/systemd/system/myscript.service
  3. サービスを実行してテストする。サービスが自動的に開始するように設定する前に、スクリプトが実行されたときに正しく実行されることを確認したい。サービスを通してスクリプトを実行するには、次のようにsystemctlコマンドを使う:
    • sudo systemctl start myscript.service
    • 必要であれば、startをstopに置き換えて同じコマンドを実行することで、サービスを停止できます。
  4. ブート時にサービスが実行されるように設定する。スクリプトがエラーなしで実行される限り、スクリプトがブート時に実行されるようにするコマンドを実行できます:
    • sudo systemctl enable myscript.service
方法2

自動起動ファイルの使用

  1. 要件と動作方法を理解してください。この方法では、PIXELデスクトップ環境と最新バージョンのRaspbianオペレーティングシステムが必要です。Raspberry PiのPIXELデスクトップが構築されているフレームワークであるLXDEデスクトップ環境で、起動時にコマンドを実行する「autostart」ファイルを編集することで実現できます。この方法は、以下のようなシナリオに適しています:
    • スクリプトの実行にデスクトップ環境が必要な場合
    • スクリプトをターミナル・ウィンドウから実行する必要がある
    • スクリプトを自動起動するユーザーを指定したい。
  2. nanoテキストエディタでautostartファイルを開きます。新しいターミナル・ウィンドウで、以下のコマンドを実行します:
    • sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
  3. 矢印キーで2行目の終わりまで移動し、↵ Enterキーを押します。これで@xscreensaver -no-splashエントリの上に新しい行が作成されます。多くのユーザーからこの行より下に追加したコマンドは正常に実行されないという報告があるので、カスタムコマンドは@xscreensaverエントリーの上に追加するのが一般的です。
  4. スクリプトを起動するコマンドを追加します。スクリプトを起動するために通常使用するターミナルコマンドを入力することができます。例えば、ユーザー "pi "のホームディレクトリにある "myscript.sh "というbashスクリプトを実行するには、次のコマンドを入力します:/home/pi/myscript.sh。同様に、スクリプトの実行にスーパーユーザー権限が必要な場合は、コマンドの前にsudoを付けることもできる。
  5. すべてのファイル名にフルパスを含める。例えば、ユーザー "pi "のホームディレクトリにある "myscript.py "というスーパーユーザーパーミッションが必要なPythonスクリプトを実行するには、sudo /usr/bin/python/home/pi/myscript.pyのように、Pythonスクリプト本体とPythonインタプリタの両方のフルパスを入力します。
  6. 起動時に新しいターミナルウィンドウでスクリプトを実行するかどうかを決めます。このためには、@lxterminal コマンドに -e 修飾子をつけ、スクリプトのフルパスを引用符で囲んでください。例えば

      例:@lxterminal -e "/home/pi/myscript.sh"

    • これにより、新しいターミナルウィンドウからスクリプトが実行されます。
  7. スクリプトを起動するための適切なコマンドを入力します。入力したらCtrl+Xを押し、画面の指示に従って変更を保存します。
    • これ以上スクリプトを起動時に実行させたくない場合は、autostartファイルをもう一度編集し、前回追加した行を削除してください。保存して終了すると、スクリプトは起動時に自動的に実行されなくなります。
  8. 再起動してテストする。sudo rebootを使ってRaspberry Piを再起動してください。スクリプトが設計通りに動作すれば、ウィンドウ・マネージャーが起動したときにスクリプトが起動します。
この記事は、CC BY-NC-SAで公開されている「 How to Execute a Script at Startup on the Raspberry Pi」を改変して作成しました。特に断りのない限り、CC BY-NC-SAで利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧