質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

1回答

1637閲覧

Raspbian Liteで,foreverを用いてnodeアプリをdaemon化して起動した際に,CUIでの操作を受け付けなくなる

TTaro

総合スコア7

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2020/10/29 05:15

RaspbianのLiteをRaspberry Pi Zero WHで使っています.

npmモジュールのforeverを用いてnodeアプリをdaemon化しました.

/etc/rc.localに

/usr/local/bin/forever /home/pi/Test/main.js

と書きました.

そしてRaspbianを再起動すると,起動時にmain.jsは正常に動作しました.

しかし,main.jsを止めようとCtrl+Cを押したのですが,main.jsは止まりませんでした.

~main.jsのログ~ ^C^C^X

起動すると上のようになり,Ctrl+Cなどのコマンドを受け付けません.

このため,作業のために別の端末からssh接続をしないといけなくなりました.

バックグラウンドのログを表示するようになっているのでしょうか?

どのようにすればこの問題を解決できるでしょうか.どうかご回答の程よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

foreverは「永遠」の名の通り、
タスクが終了されると復活させるソフトウェアです。

RPGに出てくるゾンビを無限に操る死霊術師みたいなものです。
死霊術師がforever、ゾンビが/home/pi/Test/main.jsといった関係になっています。

あなたが質問文でやっていることは、
死霊術師を放置してゾンビを退治しながら、
「ゾンビが居なくならねえ」と言っているようなものです。
(しかもその死霊術師はあなたが連れてきたので壮大なマッチポンプです)

ゾンビが不要になったのであれば、
死霊術師にゾンビを作るのをやめてもらうようお願いしなければなりません。

/usr/local/bin/forever /home/pi/Test/main.js

foreverはサブコマンドを持っています。
沢山の機能が詰まっている複雑なツールってことですね。

GitHubにある製作者のREADMEを読むのが一番確実ですが、
まずは流れを掴む為に「forever npm」などのワードで検索すると、
日本語の記事が沢山出てくるので流れを把握しておくと良いでしょう。

公式からコピペしてきただけですが、
forever --helpコマンドを実行するとサブコマンド(action)の一覧が分かります。

bash

1 $ forever --help 2 usage: forever [action] [options] SCRIPT [script-options] 3 4 Monitors the script specified in the current process or as a daemon 5 6 actions: 7 start Start SCRIPT as a daemon 8 stop Stop the daemon SCRIPT by Id|Uid|Pid|Index|Script 9 stopall Stop all running forever scripts 10 restart Restart the daemon SCRIPT 11 restartall Restart all running forever scripts 12 list List all running forever scripts 13 config Lists all forever user configuration 14 set <key> <val> Sets the specified forever config <key> 15 clear <key> Clears the specified forever config <key> 16 logs Lists log files for all forever processes 17 logs <script|index> Tails the logs for <script|index> 18 columns add <col> Adds the specified column to the output in `forever list`. Supported columns: 'uid', 'command', 'script', 'forever', 'pid', 'id', 'logfile', 'uptime' 19 columns rm <col> Removed the specified column from the output in `forever list` 20 columns set <cols> Set all columns for the output in `forever list` 21 cleanlogs [CAREFUL] Deletes all historical forever log files

上記からの理解はこんな感じ

  • forever list: 現状どうなっているかを確認
  • forever start: JSファイルをゾンビとして実行させる
  • forever stop: ゾンビを消す

まずはこの流れを意識してみてください。

投稿2020/10/29 07:37

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TTaro

2020/10/30 02:19

ご回答ありがとうございます. Raspbian起動時にすぐにmain.jsが動き,main.jsに書いてあるconsole.logの内容が表示されます. このとき,$(プロンプト)が表示されておらず,Ctrl+Cも,foreverのコマンドも全て受け付けません. ですので,forever自体の止め方というよりもこの状態でコマンドを受け付けるようにしたいというのが質問の意図でした. わかりずらい質問内容で申し訳ございません. もしよろしければ再び回答のほどよろしくお願いします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問