CentOS - rc.localのコマンドは実行されません。

CentOS - rc.localのコマンドは実行されません。

私の/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を呼び出すと機能します。

関連情報