init.dでスクリプトを設定した後、プログラムを実行することはできません。

init.dでスクリプトを設定した後、プログラムを実行することはできません。

起動時に実行する必要がある2つのプログラムがあります。私のシステムの仮想マシンにsystemctlがないので、init.dスクリプトを使用します。私の設定によると、program_Aは機能しますが、program_Bは機能しません。起動したように見えますが、期待どおりにシステムログに記録されていないため、動作しません。

私の設定は次のとおりです。

/usr/bin/Program_A
/usr/bin/Program_B
...
/etc/init.d/Program_A.sh
/etc/init.d/Program_B.sh

そのうち、Program_A.shとProgram_B.shは似ています。

#!/bin/bash
sudo /usr/bin/Program_A &
disown

初期化ファイルを作成し、実行ファイルをコピーして実行しました。

update-rc.d Program_A.sh defaults
update-rc.d Program_B.sh defaults

注1:スクリプトに「&」と「disown」を追加する必要がありました。そうしないと、program_Aが停止してprogram_Bを起動できなくなるからです。

ノート2: 次のコマンドを実行すると、両方のプログラムが正常に動作します。

sudo /usr/bin/Program_X

ノート3 「拒否」を削除し、program_Bのみを起動しました。それでも動作しません。init.dでスクリプトを実行すると、起動時にスクリプトを起動するのとは異なります。

次のプログラムを起動したことを確認できます。

ps -aux | grep Program_B                      
root      1905  0.0  0.2   2308   868 ?        S    09:13   0:00 
/usr/bin/Program_B

ただし、システムログのファイルは更新されません。その結果、プログラムが実行されないか、プログラムが別の名前で始まり、syslogフィルタが効果的になりません。

関連情報