私の/etc/rc.localスクリプトは、次のように非常に簡単です。
#!/bin/sh
touch /root/test1
touch /var/lock/subsys/local
touch /root/test2
modprobe -r ftdi_sio
modprobe ftdi_sio vendor=0x0403 product=0x6015
touch /root/test3
cd /root/IPNHost
./IPNHost
touch /root/test4
この場合、IPNHost c プログラムが実行されない理由を理解できません。コマンドプロンプトでrc.localを実行すると、次のように正常に実行されます。
/etc/rc.local
CentOS 6.5 です。
更新:rc.localが実際に実行されていることを確認するためにデバッグステートメントを追加しました。私のルートディレクトリにはtest1、test2、test3、test4の4つがあります。ここで何が起こっているのでしょうか?
答え1
centOS 7を使用している場合は、systemdでrc-localサービスも有効にする必要があります。
答え2
systemd が CentOS 7 に導入されたため、/etc/rc.d/rc.local はデフォルトで有効になっておらず、手動で /etc/rc.d/rc.local を実行可能にする必要があります。
早く走る
chmod a+x /etc/rc.d/rc.local
答えは以下から得られます。この投稿。
答え3
IPNHostプログラムはIntel ippライブラリ環境変数に依存し、起動時に場所が指定されていないことがわかりました。
autoStart.shスクリプトを作成しました。
#!/bin/bash
source /opt/intel/bin/compilervars.sh intel64
cd /root/IPNHost
./IPNHost
ソース/opt/intel/bin/compilervars.sh intel64は、動的にロードされたライブラリを見つける場所を指定する必要なIntel環境変数をロードします。
その後、rc.localでautoStart.shを呼び出すと機能します。