次のサービスがインストールされています。
install -m 755 init_script /etc/init.d/spacenavd
cd /etc/rc2.d
ln -s ../init.d/spacenavd S99spacenavd
init_scriptの機能はスクリプトを起動することです。
/usr/local/bin/spacenavd -v
これらすべてがうまく機能し、起動時にサービスが自動的に開始される可能性があります。ただし、起動時にspacenavdサービスを使用する別のスクリプトを実行する際に問題があります。ログイン後に手動でスクリプトを実行すると、スクリプトが正常に動作します。ただし、rc.localに入れると、起動時に実行は機能しません。
rc.localで、次の操作を行います。
cd /home/filedirec
sudo ./my_script &
時にはこれはうまくいき、時にはうまくいきません。原因が何かは分からないようです。問題を解決する良い方法がありますか?
答え1
デザビュー。
Sudoは、最近資格情報を入力しなかった場合にroot(または他のユーザー)でコマンドを実行するためにパスワードを入力する必要がある対話型プログラムです。これローカルファイルスクリプトはコンソールに添付されていないため、パスワードの入力を求められません。
これローカルファイルスクリプトはすでにrootとして実行されているため、削除する必要があります。Sudoそれから命令を出してください。
より良いアプローチは、追加したすべてを簡単に変更することです。/ホーム/ファイルディレクトリ/my_script(または/home/filedirectec/my_script &必要ならば)。絶対パスを使用すると、正確な内容をすばやく簡単に確認できます。ローカルファイル後でスクリプトが実行するアクションを確認する必要がある場合CDなどは一般的にインタラクティブシェルに適しています。
答え2
あなたができることの1つは別々のスペースにあることです。画面会議。
たとえば、rc.localファイルは次のようになります。
/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'
その後、実行後に画面を簡単に「再接続」し、スクリプトで何が起こっているかを確認できます。出力はファイルに書き込むこともできます。
システムで画面コマンドが利用できない場合:sudo apt-get install screen
写真を含むチュートリアル: 画面:接続が失われてもプロセスを実行し続けます。