【GO】foreverを使った永続化


linuxでプログラムを走らせ続けることを考えるとservice(systemctl)に登録するかと思います。

すでにnode.jsをいくつか走らせているので同じ環境で管理したい。

foreverというnode.jsの永続化をするパッケージを使ってGOを永続化します。

https://github.com/foreverjs/forever

 

まずインストールしていない場合はインストールします。

npm install forever -g

 

goのクロスコンパイルで実行ファイルを作成。

env GOOS=linux GOARCH=amd64 go build -o プログラム名 ソース一覧

 

foreverで永続化開始します。

forever -c プログラム名 start .

 

-cは実行コマンド指定オプションです。

最後の.は何でもいいですがパスを書きます。

引数があればファイルパスの後に書きます。

注意点1

forever -c sh start run.sh

のようにしてシェルを動かす方法を見かけましたが 、実行部分がforever管理から外れて操作できなくなるためやめた方がよいです。

ps aux|grep プログラム名 でpidを確認してkillしましょう。

注意点2

-wオプションを使う場合、対象ファイルの更新時に再起動されますがプログラムが更新される場合リストからなくなります(停止&管理対象外になる)。

手動で forever restart しましょう。

注意点3

Windowsで開発してLinuxで走らせる状況でGitでバージョン管理しているとパーミッション(権限)が644になってしまい、いちいちchmodしないといけなくなります。

インデックスに権限付与する処理をMakefileなどに書いておくとよいです。

git update-index --add --chmod=+x プログラム名

.git/configcore.filemodeをtrueにすると権限変更もコミットできるようになりますが、管理の手間が増えるかもしれないので注意。

変更コマンド : git config core.filemode true


コメントを残す

メールアドレスが公開されることはありません。