Raspberry Pi SBC (シングルボードコンピュータ)は、さまざまな用途に人気のデバイスです。起動するたびにプロセスを実行したい場合が多くありますが、自分でプロセスを開始するのは避けたいものです。幸いなことに、そうする必要はありません。
ここでは、起動時にプログラムを起動する3つの方法について説明します。それぞれ少しずつ用途が異なります。crontab方式は、起動時にプログラムを起動するだけでなく、起動後に設定された間隔で何かを実行することもできるため、特に便利です。コマンドラインまたはSSH (Secure Shell) 経由でプログラムを自動的に実行するように設定するための3つの方法を見てみましょう。
テストのセットアップ
コマンドラインから作業しているか、SSH経由でPiにログインしていると仮定します。
このセットアップでは、BCMピン14 (テスト用の物理ピン8) に LED を直接または トランジスタ経由でインストールします。私は、LEDを2回点滅させる以下の blink.py ルーチンに似たテスト プログラムを作成しました。これは、ホーム ディレクトリに移動し (cd /home 必要な場合)、 sudo nano blink.py と入力することで実行されます。以下のプログラムを入力し、 ctrl+x を押して終了し、保存します。
設定をテストするには、テキスト ファイルの下部に次の行を追加します。* * * * * は1分ごとにコマンドを実行します。私の場合は、テスト プログラム: python3 /home/blink.py です。さらに、cronは、時間に数字やアスタリスクの代わりに @rebootを使用することで、起動時に毎回プログラムを実行できます。@reboot python3 /home/blink3.py コマンドは、再起動するたびに、わずかに変更されたblink3.pyプログラム (どのルーチンが実行されているかがわかるように3回点滅します) を実行します。
bashrcラズベリーパイ
crontabほど多用途ではありませんが、 bashrc には独自の機能があり、起動時 と に実行され、新しいターミナルが開かれるたび、またはSSH経由でログオンするたびに実行されます。それは状況によっては役に立つかもしれません。試してみるには、 sudo nano /home/pi/.bashrc と入力します。さまざまなコマンドを含むテキスト エディターが表示されます。
ファイルの下部にある新しい行に、 python3 /home/blink3.py などのコマンドを追加するだけです。他に何もする必要はありません。終了するには Ctrl+X を押し、 Y を押してから Enter を押してファイルを保存します。sudo reboot now でPiを再起動し、ログインして結果を確認します。このスクリプトはログインするまで実行されないことに注意してください。つまり、SSHまたはターミナル経由でパスワードとユーザー名を入力する必要があります。ただし、デスクトップ環境で起動すると自動的に実行されます。
source ~/.bashrc と入力してファイルを実行し、スクリプトをテストします。上記の画像に示すように、echoコマンドを追加して、ルーチンが端末上で実行されていることを確認することもできます。
Raspberry Pi自動起動rc.local
bashrcと機能的に似ていますが、起動時に実行されるようにrc.localに関数を追加できます。rc.localはログインに依存しないことに注意してください。編集するには、ターミナルに sudo nano /etc/rc.local と入力し、実行するプログラムを exit 0 テキストの前に挿入します。以下のように、 python3 /home/blink3.py & と入力しました。ここでのアンパサンドにより、プログラムの実行中に他のプロセスを実行できるようになります。rc.localスクリプトが停止すると、ブート シーケンスが続行されなくなるため、この機能の実装方法については注意してください。
結論
Raspberry Piシステム、そしてLinux全般では、実行中のプログラムを自動化するさまざまな方法が提供されています。特定の時間に照明をオンにしたり、毎晩ハードドライブをバックアップしたり、大幅に改造された植物に水をやるKeurigを稼働させたりしたい場合でも、信頼できるPiベースのアシスタントが代わりに処理してくれます。