19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linux - シェルスクリプトメモ

Last updated at Posted at 2015-01-31

業務中に書いたシェルスクリプトの中で、役にたちそうなものをメモしておきます。
今後も適宜追記していきたいと思います。
(CentOS 6.5で動作確認を行っています)


テキストファイルに記載された大量のコマンドを並列で実行する

例えば以下のように、テキストファイル(ここではcommand.sh)の1行1行に同様の処理が数万回記載されているとします。

command.sh
echo "hoge"; echo "foo"; echo "bar"
×10000

※ここでは説明を簡単にするためにechoコマンドを使っていますが、実際にはより複雑な処理を想定しています。

このまま
sh command.sh
と実行すると、1行ずつ直列的に処理されていくため、場合によってはものすごく時間がかかってしまう可能性があります。

しかし以下のやり方であれば、並列で処理が実行され、かなりのスピードアップが期待できます。
cat command.sh | xargs -P4 -i sh -c '{}'

※xargsの-PにはCPUのコア数、ロードアベレージ等の状況に応じて、適切な値を設定します。


ディレクトリAにある、名前が"hoge_"で始まるCSVファイルをディレクトリBへコピーする

よくありがちなfindとcpを組み合わせたものですが、業務で頻出のパターンなのでメモしておきます。

find /usr/local/A -name "hoge_*.csv" | xargs -i cp {} /usr/local/B

19
21
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
19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?