はじめに
大量の画像をアップロードするような処理ですと、コードの実行で何時間もかかり、他の作業に支障をきたすこともあるかと思います。
今回は、何時間かかる処理をRedHatのバックグラウンドでコマンドを実行し、コマンドを実行している間にローカルで別の作業ができる方法を記述しますので、参考にしてください。
RedHatのバックグラウンドでコマンドを実行
RedHatにscreenのインストール
- TeraTermでサーバーにログインします。
- screenをインストールします。
$sudo yum install screen
screenを実行
RedHatでそのままコマンドを実行すると、バックグラウンドで実行した状態にできないので、screen内でコマンドを実行します。
- screenを実行しますので、下記をコマンドで実行します。
$screen
2. scrennを実行すると、上部に「screen0」と表示されます。
これでscreenが実行できました。
screen内でコマンドを実行
「screen0」の画面でコマンドを実行します。
今回は、topコマンドを実行します。
デタッチ
- screen内コマンドを実行中に元の環境に戻る場合は「Ctr+A」→「D」とコマンドで実行します。
コマンドでたたくと、下図のように「detached from ×××××.pts-×.linux1」と表示されます。
- RedHatからデタッチする場合も同様に「Ctr+A」→「D」とコマンドで実行します。
このままTeraTermを終了します。
アタッチ
- TeraTermでRedHatにログインします。
- RedHatでデタッチ前のscreenに戻る際は、下記を実行します。
$screen -r
3. screenにアタッチすると、コードを実行中のscreenに戻ることができます。
複数のscreenからデタッチしている場合の注意事項
複数のscreenにログインしている場合は複数のscreenが表示されますので、下記のようにscreenを指定して、screenに戻ります。
SCREENNAMEには、アタッチするscreenの名前を、「.pts-×.linux1 (Detached)」より前の数字を指定します。
たとえば、「38177.pts-0.linux1」のscreenにアタッチする場合は、「screen -r 38177」と実行します。
$screen -r SCREENNAME
screenから抜ける
screenから抜ける場合は、「exit」とコマンドで実行します。
$exit
サーバーでコマンド実行中のscreenから抜ける場合は、1回処理を中断してから、「exit」とコマンドで実行します。
たとえば、top画面を開いている場合は、「q」で1回処理を中断してから、「exit」とコマンドで実行します。
これで、screenから抜けることができます。