システム起動時に自動的にプログラムを実行する(Debian)

システム起動時に自動的にプログラムを実行する(Debian)

Debian 9.1がインストールされたビーグルボーンブラックがあります。私たちは、システムの電源が入ったときに常に実行されることを望むGPIO用C ++プログラムを作成しました。どうすればいいですか?

答え1

極度にシンプル解決策は、@rebootバイナリのみを実行するクローンジョブを追加することです。

crontab -esudo crontab -eコード(たとえば、root crontab)を実行し、次の行を追加する必要があるユーザーに対してこれを行います。

@reboot /path/to/some/executable

これにより、システムが起動するたびにジョブが実行されるようにスケジュールされます。

crontab(5)詳細については、マニュアルを参照してください(man 5 crontab)。

プログラムが何をしているかに応じて、これだけで十分かもしれませんし、単純すぎるかもしれません。

答え2

プログラムをコンパイルし、既知のrun_gpioパス(たとえば、/path/to/run_gpio.root実行可能ファイルとして表示する必要があります)。

$ sudo chmod 755 /path/to/run_gpio

次に、Debianinitシステムを構成してプログラムを起動します。

ここで説明を見つけることができます。 http://xmodulo.com/how-to-automatically-start-program-on-boot-in-debian.html

Debian では、/etc/init.d というディレクトリには、起動と終了時に init プロセスが実行するスクリプトのリストが含まれています。したがって、起動時に特定のプログラムまたはスクリプトを自動的に実行するために対応するinit.dスクリプトを生成できます。

$ sudo vi /etc/init.d/run_gpio
vi以外にnanoも使用できます。

次の行をinit.dディレクトリの新しいファイルに入れます。

#! /bin/sh
# /etc/init.d/run_gpio
case "$1" in start)
/path/to/run_gpio
;; esac

最後に、init.dスクリプトを実行可能にし、init.dスクリプトをデフォルトの実行レベルに追加して、起動時(および終了時に)呼び出すことができます。

$ sudo chmod 755 /etc/init.d/run_gpio
$ sudo update-rc.d run_gpio defaults

関連情報