タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

UNIXに関するvivit_jcのブックマーク (5)

  • cpで大量のファイルをコピーした(4億3200万件、39TB)

    GNUのcpを使って大量のファイルをコピーしたところ、cpの設計上の問題で、極めてコピーが遅かったというお話。 My experience with using cp to copy a lot of files (432 millions, 39 TB) よう。俺は最近、大量のファイルをコピーする必要があったんだが、UNIXは20年もやってきた俺の経験からも、cpの挙動には驚かされたし、俺の意見はコミュニティに共有されるべきだと思う。 環境:古いDellのサーバー(2コア、初期メモリ2GB、追加して10GB、Ubuntu Trusty)と、新しいDellのストレージ格納機(MD 1200)にある、12個の4TBディスクでRAID 6が設定してあって、全体で40TBの要領を持ち、二つのドライブが同時に失敗しても問題ない環境。サーバーは遠隔地バックアップに使われていて、ディスクへの書き込みし

  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

  • grepコマンド最新版、"-i"で10倍の高速化

    GNU grepコマンドの最新版となる「grep 2.17」が公開された。GNU grepコマンドはテキストデータから指定したパターンに一致する行を取り出すといった用途に使われることが多いコマンドで、UNIX系のオペレーティングシステムで使われる頻度が高いコマンドのひとつ。grepコマンドには大文字と小文字を個別せずに一致させるという指定を意味する「-i」オプションを提供しているが、「grep 2.17」ではこの部分の処理を変更し、場合によっては10倍を超える高速化に成功したと説明がある。 現在ではLC_ALL=Cの状態ではなくマルチバイトロケールが設定された状態で使われることがほとんど。英語のみの使用であっても環境変数LANGにはCではなくen_US.UTF-8を指定するなどマルチバイトロケールが設定された状態で使われていることが多い。こうした状態で「-i」を使うと、マルチロケールに存在

    vivit_jc
    vivit_jc 2014/02/24
    未だにこういうコマンドも改良されてるのすごい
  • pkill、pgrepが便利すぎて全僕が泣いた - Bye Bye Moore

    実行中のrailsプロセスを抹殺する場合 ps | grepでrailsを探す*1 プロセス番号をコピペ kill -9で爆発四散! という流れをとっていました。 巷の入門サイトなんかでも、よくある解説ですね。 ですがまぁ……創造的怠惰に手足が生えたようなUNIXハッカーの事、こんな二度手間を許容するわけがないですね。 調べてみたら、案の定あったんです。以上を一発で実現するコマンドが。 pgrep $ pgrep ruby 79459 $ ps -ax | grep ruby 79459 ?? 0:00.00 ruby weatherd.rb 79462 ttys005 0:00.00 grep rubyps -ax | grep hoge | grep -v grep をまとめてやってくれる賢い子です。 一度知ったら戻れませんね。 -lオプション プロセス名が欲しい場合は「-l」オプショ

    pkill、pgrepが便利すぎて全僕が泣いた - Bye Bye Moore
    vivit_jc
    vivit_jc 2013/11/06
    知らなかった(白目
  • ログアウトしてもバックグラウンド ジョブを継続する方法

    はじめに SSH 接続で時間の掛かるシェルスクリプトをバックグラウンドで走らせて帰りたいのに、SSH 接続を切るとジョブが死んでしまいます。SSH 接続に限らず目の前の OS からログアウトしたりターミナル エミュレータを終了しても同じ現象が起こります。 この症状は正常です。なぜなら、バックグラウンド ジョブを起動したプロセス(ログイン シェル)が子プロセスである該当のバックグラウンドジョブをハングアップ シグナル( HUP )によって終了させるからです。 シェルスクリプトを起動した親プロセスは子プロセスの終了状態を監視しています。ですからログアウトして親プロセスであるシェルが終了すると子プロセスはゾンビ プロセスとなってしまうので親プロセスとなるシェル(ログインシェル)は子プロセスであるバックグラウンド ジョブを kill ( kill -HUP ) するのです。 nohup コマンド

    ログアウトしてもバックグラウンド ジョブを継続する方法
  • 1