init.dスクリプトが機能しない - バックグラウンドでSSHトンネルを開始しようとしています。

init.dスクリプトが機能しない - バックグラウンドでSSHトンネルを開始しようとしています。

起動時に実行する簡単なファイルをインポートしようとしています。しかし、起動しません。実行すると機能しますが、起動時には機能しません。

これは私のinit.dスクリプトlaunch_ssh_daemon.shです。

#!/bin/bash
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description
### END INIT INFO

/usr/bin/sudo /usr/bin/ssh -i /etc/ssh/id_rsa -N -f -R 10000:localhost:22 [email protected]

また、必要と思われるコマンドを実行しました。

sudo chown root:root launch_ssh_daemon.sh
sudo update-rc.d launch_ssh_daemon.sh defaults

また、コンピュータを何度も再起動しました。

私は何をすべきかわかりません。私が言ったように、次のように実行すると機能します。

./launch_ssh_daemon.sh

ただし、パスワードの入力を求められますが、起動時にパスワードを要求しないでください。すでにrootに設定されています。

私が間違っているアイデアはありますか?

ベストアンサー1

あなたの実装は./launch_ssh_daemon.shあなたが望むものを達成することができるので...私は次のように仮定します:

  • スクリプトは次の場所にあります。/etc/init.d/
  • スクリプトに実行権限があります

私の提案は問題を識別し、スクリプトをより明確にすることです。

まず、sudo引数がない場合はすでにその環境にinit.dあります(削除)。rootsudo

私は.shエンディングのあるオープニングシナリオを見たことがありません。これが問題の原因であるかどうかはわかりません。 (スクリプト名を変更してください)

を実行しましたが、最初がランレベルで、2番目がスクリプトが実行された順序を示す数値(01 - 99)のupdate-rc.d形式で、スクリプトへのシンボリックリンクがあることを確認してください。これらのリンクは、その実行レベルに必要なすべての初期化スクリプトを実行するために実行レベルを選択した後に得られます。スクリプトがどこにも接続されていない場合、起動時には実行されません。/etc/rc?.d/S??<script_name>???/etc/init.d/rc

...実行するときに何が起こったかを確認するために、どこかに出力を記録することをお勧めします。

おすすめ記事