端末クローズ後もプロセス実行を止めない方法(nohup, tmux)

SSHでサーバーに接続して「処理に時間のかかるバッチ」を実行するとき、SSHの接続が切れても実行プロセスを起動させ続ける方法を紹介します。「nohupを利用した方法」と「tmuxを利用した方法」を取り上げます。

動作確認用バッチ

batch.sh というファイルを作成して、以下処理を記述します。

#!/bin/bash

for  i  in  `seq  1  1000`
do
     echo  ${i}
     sleep 1
done

このバッチファイルで動作確認します。

nohup コマンド &

端末が閉じられたとき、端末で起動したプロセスに SIGHUP のシグナル(ハングアップを知らせるシグナル)が送信されます。

プロセスはSIGHUPのシグナルを受信すると、デフォルトで処理を終了します。

nohup経由でコマンドを実行することで SIGHUP を無視するようになります。

バックグラウンドで実行させるため & も最後につけます。

$ nohup ./batch.sh &
[1] 68372
appending output to nohup.out
$ 
$ 
$ cat nohup.out 
1
2
3
4
5
6

実行プロセスの標準出力・標準エラー出力は nohup.out に書き込まれます。

tmux

tmuxをインストール

サーバー(ubuntu)にtmuxをインストールします。

apt-get update
apt install -y tmux

tmuxでプロセスを起動

セッションを開始します。

$ tmux new -s test-session1

tmuxのセッションの中でバッチを実行します。

205-linux-nohup-tmux_01.png

バッチを実行したら、セッションをデタッチします。
デタッチするには、まず Ctrl+b を押します。 次に d を押すとデタッチされます。

再度セッションに接続してみます。まず、現在起動してるセッションを確認します。

$ tmux ls
test-session1: 1 windows (created Fri Jul 27 14:30:25 2018)

セッション名を指定して、再度セッションに接続します。

$ tmux attach -t test-session1

下記のように、バッチの実行が継続しています。

205-linux-nohup-tmux_02.png

tmuxの主な操作

コマンド 説明
tmux セッションを作成
tmux new -s <セッション名> 名前付きでセッションを作成
tmux ls セッション一覧を確認
tmux attach -t <セッション名> 指定セッションにアタッチ
tmux kill-session -t <セッション名> 指定セッションを終了
キー操作 説明
Ctrl+b を押した後に d を押す セッションをデタッチ
Ctrl+b を押した後に ? を押す キーバインド一覧表示

以下、キーバインド一覧表示した時の画面です。

205-linux-nohup-tmux_03.png

参考

【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。

logo
わくわくBank.
技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。