私はもう少し弾力的にしたい非常に古いコンソールアプリケーションを持っています。プログラムの使用方法は次のとおりです。
- ユーザーはカスタム端末エミュレータを使用してSSHを介してリモートシステムに接続します。
- ユーザーがシェルスクリプトを起動します。
- シェルスクリプトは、長期実行進行データベースプロセスを開始できます。
明らかに、ユーザーがシステムへのSSH接続を失うことがあります。その場合、SSHセッションが終了し、内部で実行されているシェルスクリプトが終了し、最後に進行中のデータベースプロセスが終了します。 1000人のうちの1人はデータベースの破損につながる可能性があるため、これが発生しないようにしたいと思います。
私が今まで試したこと:
- シェルスクリプトを開始する前に、screenまたはtmuxセッションを開始してください。これは、アプリケーションがTERM変数をat386に設定する必要があるために機能しません(そしてtermcap / terminfoを完全にバイパスします...え...)
- nohup / disown進行プロセス - シェルスクリプトと進行プロセスがあいまいな方法で継続的に互いに通信しているように見えるため、機能しません。
SSHセッションが終了したときに進行プロセスが終了しないようにする方法についての他のアイデアはありますか?
ベストアンサー1
term at386
TERMをオーバーライドするには、.screenrcに追加してください。役に立たない場合はお試しください。分離Screen(それ自体は端末エミュレーションを実行しません)の代わりに。