ssh等でLinuxのサーバーにターミナルでログインしているときに、大きなファイルのコピーを始めてしまったときの対処方法です。
ターミナルをそのまま閉じてしまうとログアウトしてシェルが終了してしまい、実行中のコマンドも終了してしまいます。
GNU Screenを使用している場合
迷う必要はありません。
C-a dでデタッチできます。
(コマンド文字を変更している場合はaを変えてください)
tmuxを使用している場合
迷う必要はありません。
C-b dでデタッチできます。
(プレフィックスを変更している場合はbを変えてください)
ログインしてそのままコマンドを実行してしまった場合
今回の本題です。
以下のようにすればログアウトしても処理が続行されます。
$ cp ./very_big_file.dat ./another_dir/
(C-zを押してコマンドの実行を一時停止する)
$ bg
$ jobs
$ disown %1
プロセスをバックグラウンドに持っていき、デーモン化します。
disownで指定する引数はjobsで表示されるジョブ番号の頭に%をつけます。
これで帰れますね。
ちなみにMacのcpコマンドですと、コピーの途中でC-tを押すと何%完了したか表示されます。
コピー完了の目安になりますね。