Top > Linux > sshでログアウトした後もプロセスを起動させておく方法


概要

  • SSHでログインしてコマンドを実行している最中に、急用でログアウトしなければならなくなった。
  • コマンドの実行完了には時間を要するため、Backgroundで実行を継続してログアウト・SSH切断したい。
  • そんな時に役立つ方法を紹介します。


手順

  • コマンド実行中、「CTRL + z」で実行を停止する
    $ sleep 100
    ^z
    [1]+  停止             sleep 100
  • jobsコマンドで待機しているコマンドを確認できる
    $ jobs
    [1]+  停止             sleep 100
  • 複数のジョブがある場合
    $ jobs
    [1]   停止             sleep 100
    [2]-  停止             sleep 90
    [3]+  停止             sleep 80
    
    # []の中身がジョブ番号
    # +:カレントジョブ
    # -:前のジョブ
  • 停止しているジョブをバックグラウンドで実行
    $ bg ${ジョブ番号}
    
    # 先ほどのジョブの1番を実行する
    $ bg 1
    
    # 実行状態になっていることを確認
    $ jobs
    [1]   実行中           sleep 100 &
    [2]-  停止             sleep 90
    [3]+  停止             sleep 80
  • 自分のジョブテーブルから外す
    $ disown %${ジョブ番号}
    
    # 先ほどのジョブの1番を外す
    $ disown %1
    
    # jobsから消える
    $ jobs
    [2]-  停止             sleep 90
    [3]+  停止             sleep 80
  • 実行継続しているかプロセスの存在を確認する
    $ ps x | grep sleep | grep -v grep
    22222 pts/3    S      0:00 sleep 100
    22223 pts/3    T      0:00 sleep 90
    22224 pts/3    T      0:00 sleep 80
  • 普通にSSH切断する

リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Mon, 03 Jun 2019 14:37:49 UTC (912d)