1

Raspberry PI で C コードを自動実行するにはどうすればよいですか? それを達成するためのチュートリアルを見てきましたが、まだ何が欠けているのか本当にわかりません。私の初期化スクリプトは次のように表示されます。

#! /bin/sh
# /etc/init.d/my_settings
#
# Something that could run always can be written here
### BEGIN INIT INFO
# Provides:     my_settings
# Required-Start:   $remote_fs $syslog
# Required-Stop:    $remote_fs $syslog
# Default-Start:    2 3 4 5 
# Default-Stop: 0 1 6
# X-Interactive:    true
# Short-Description:    Script to start C program at boot time
# Description:      Enable service provided by my_settings
### END INIT INFO

# Carry out different functions when asked to by the system
case "$1" in 
start)
echo "Starting RPi Data Collector Program"
# run application you want to start
sudo /home/pi/Documents/C_Projects/cfor_RPi/charlie &
;;
stop)
echo "Killing RPi Data Collector Program"
# kills the application you want to stop
sudo killall charlie
;;
*)
echo "Usage: /etc/init.d/my_settings {start | stop}"
exit 1  
;;
esac
exit 0

問題は、起動時にプログラムが実行されず、その理由がよくわからないことです。私は何が欠けているでしょうか?この「killall」ステートメントは、実行時に何らかの有用なプロセスを「強制終了」していますか? このコードをバックグラウンド アプリケーションとして実行するようにしていますが、数秒後、RPi の初期化中に、セッションを初期化するためにユーザー名とパスワードを要求することがわかっています。ログ情報を提供していないため、RPi がこのコードを実行していない可能性はありますか? Rpiを接続したらプログラムを実行する必要があるように、モニターを持っていません。よろしくお願いします!!

4

3 に答える 3

3

その init スクリプトへのリンクを適切な/etc/rcX.dフォルダーに作成する必要があります。ラズパイでは、これは次のように行われます。

sudo update-rc.d YOUR_INIT_SCRIPT_NAME defaults

詳細については、このdebian ハウツーを参照してください。また、Debian の実行レベルについてもっと読むべきです。

于 2013-08-12T21:54:03.600 に答える
1

起動時にスクリプト/サービスがどのように実行されるかは、通常、使用される init システムのタイプによって異なります。頭のてっぺんから、次の4つのタイプを区別します。

  • 組み込みスタイル: 1 つのシェル スクリプトに、システムを起動するためのすべてのコマンドが含まれています。通常、スクリプトは、カーネルが init プロセスとして開始しようとするパスの 1 つにあります。
  • BSD スタイル
  • System V スタイル: /etc/rc*.d/ 内の /etc/inittab および latr スクリプトを使用して、サービスを 1 つずつ開始します。
  • systemd

Raspbian は Debian から派生しているので、System V スタイルだと思います。スクリプトを /etc/rc2.d のようにシンボリックリンクする必要があります

ln -s /etc/init.d/your-script /etc/rc2.d/S08my-script

リンク名の構造ではありません: 実行レベルに入ったときに開始する必要があり、「08」が位置を決定します (他のリンクを表示するには ls /etc/rc2.d/ を実行します)。

詳細: init(8)。

update-rc.d(8) は、debian でシンボリック リンクを作成する適切な方法です。マンページを参照してください。

update-rc.d - install and remove System-V style init script links

少なくとも man ページの update-rc.d(8) と init(8) を読むことをお勧めします。

于 2013-08-12T22:03:16.113 に答える
0

http://www.akeric.com/blog/?p=1976

ここでは、ブート時に自動ログインしてスクリプトを開始する方法に関するチュートリアルを示します。

それでもうまくいかない場合は、スクリプトまたは C プログラムに問題があります。

于 2013-09-03T10:33:51.910 に答える