laravel のプロジェクトで DB::beginTransition();
して、確認を促しOK なら DB::commit();
するスクリプトファイルがあった。
そのスクリプトをサーバーで実行したところ、途中で ssh の接続が切れてしまって、再実行しても前回のプロセスが生きていて実行されないということがあった。その時の備忘録。
プロセスの確認
$ ps agx | grep script_set_flag
24131 pts/3 S+ 0:06 /usr/bin/real_php artisan laravel:script_set_flag
24146 pts/4 S+ 0:00 grep --color=auto script_set_flag
上記の 24131
がスクリプトのプロセスIDです。
プロセスをキルする
kill 24131
問題なく実行できたら、もう一度 grep
してみると消えている。
$ ps agx | grep script_set_flag
24156 pts/4 S+ 0:00 grep --color=auto script_set_flag
おまけ
そもそも ssh の接続が切れないようにする方法として .ssh/config
で、 ServerAliveInterval
を設定することで定期的にサーバに no-op プロトコル というもの送信してくれるようです。
以下のようにすると 60 秒毎に実行してくれます。
Host *hoge.com
ServerAliveInterval 60
ただ、放っておいても ssh 接続が切れないので必ず作業後には切る癖つける必要があるので、ご注意を。