LoginSignup
1
0

cp, mv, rsync 等の verbose が遅い時は nohup か & で

Last updated at Posted at 2023-12-05

verbose モードは GPU の性能にも左右される

ファイル数が多ければ多いほど verbose モードだと
インターネット回線の速度やGPUの影響を受ける事があります。

下記の例ではローカルのdockerで実行したので
--verbose 有りと無しで大した差が出ませんでしたが、
これがインターネット回線越しなら重そうだな... と伝われば幸いです。

console.gif

verbose 有り verbose 無し
real  0m3.834s real  0m3.613s
user  0m0.121s user  0m0.028s
sys  0m0.962s sys  0m0.582s

しかし verbose を OFF った cp -R [コピー元] [コピー先] じゃ画面が動かないので、どこまで進んでいるか分からんのです...

そんな時は > result.txt 2>&1 & 🎉 result.txt とかファイル名はお好みで。

$ time(cp -Rfpv qiita copy-test) > result.txt 2>&1 &
$ tail result.txt
'qiita/movabletype/xt/use_close_tag.t' -> 'copy-test/qiita/movabletype/xt/use_close_tag.t'
'qiita/movabletype/yarn.lock' -> 'copy-test/qiita/movabletype/yarn.lock'

real    0m2.582s
user    0m0.024s
sys     0m0.706s

作業の合間にでも tail で確認しましょう。

サーバー上で実行するなら sh + nohup が安全

$ vi copy.sh
#!/bin/bash
time(cp -Rfpv /tmp/qiita /tmp/copy-test)

↑ シェルでやる時は絶対パスで指定した方が安全かつ一目瞭然です

$ chmod 700 copy.sh
$ nohup ./copy.sh > result.txt 2>&1 &

これでSSHの接続が切れても実行し続ける事が出来ます

別に sh を作らなくても nohup シェル芸 でいけますが、
いざという時に ps -ajxwww | grep [スクリプト名]
プロセスID見つけて落とす事ができるので、慣れておいて損はないかと。


ところで、RHEL 9 で試したところ nohup ではないバックグラウンド実行(&)でも
SSH接続切っても実行され続けたのですが、仕様が変わった...?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0