タグ

unixに関するsleepy_yoshiのブックマーク (50)

  • 本を読む pdfgrepでPDFをgrepする

    タイトルで出オチのような気もしますが、LinuxにはPDFファイルをgrepするpdfgrepというコマンドがあります。UbuntuやFedora、Debianなどでは標準リポジトリからインストールできます。 $ sudo apt-get install pdfgrep 正規表現はPOSIX拡張正規表現です。-Hオプションでファイル名が、-nオプションで該当するページ番号が付きます。 $ pdfgrep -Hn --color auto 'Dash|ダッシュ' *.pdf UM06_P008-010.pdf:2: ダッシュして UM06_P011-033.pdf:8: Dashホーム UM06_P011-033.pdf:8: と、Dashがデスクトップ上にオー UM06_P011-033.pdf:8: バーレイ表示される。DashはWi UM06_P072-085.pdf:3: をDash

  • 特定のユーザが持つプロセス全てにシグナルを送る - 元RX-7乗りの適当な日々

    さっき、killコマンドのmanを読んでいて気付いた。 pid に -1 を指定した場合、 sig で指定したシグナルが、呼び出し元のプロセスがシグナルを送る許可を持つ全てのプロセスに送られる。但し、プロセス番号 1 (init) へはシグナルは送られない。 Man page of KILL ほほう。つまり、 $ kill -9 -1とかやると、自分が持つプロセス全てにシグナル(SIGKILL)を送信できるとな。 (上記例の"-9"の部分は任意のシグナルでお願いします。"kill -l"とかで確認できる。) 応用して、 # sudo -u username kill -9 -1とかやると、特定のユーザ(上記例だと"username")の所有するプロセス全てを抹殺することができるわけですね・・・。便利ですが、取り扱い注意。 参考 KILL(1) KILL(2) LinuxサーバHacks―プ

    特定のユーザが持つプロセス全てにシグナルを送る - 元RX-7乗りの適当な日々
  • RE: sort を使うときは,LC_ALL=C を忘れずに - ny23の日記

    Twitter ID も livedoor ID もないので直接コメントできないが,sort (GNU coreutils) の名誉のために,ここにメモしておく. 404 Blog Not Found:algorithm - bucketsort.[ch] - 汎用かつlibcの*sortより高速な まず第一印象として,この程度のサイズのファイルのソートで sort (GNU coreutils) がいまどきこんなに遅いはずはない.LC_ALL=C で追試すると,やはり bucketsort との差は無くなった.上の記事(に対するツイート)は Twitter 上でもそれなりにリツイートされているように見えるのだけど,この実行時間に違和感を感じる人が全くいないのはどういうことなのだろうか.sort を実際に使う人がほとんど見ていないのか,それとも計算量が違うから速くて当然という思い込みか.

    RE: sort を使うときは,LC_ALL=C を忘れずに - ny23の日記
  • grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々

    "GREP_OPTIONS"という環境変数に、常に付けておきたいオプションをあらかじめ指定しておくと、grepコマンドやxgrep(egrepとかfgrepとか...)を実行したときに、自動でオプションをつけて実行してくれます。 例えば、、、 $ export GREP_OPTIONS="--color=auto"とか。常に含めておくなら、あとは"-I"オプションとかですかね。これくらいなら"alias"でも良いわけですがw grepとか毎日使ってもおかしくないコマンドなので、こういう小さい効率化はどんどんやっていきたいところですね! オプション無しで実行した場合 GREP_OPTIONSを設定してから実行した場合 おまけ: --colorの色を変えたい場合 環境変数 "GREP_COLOR"に色コードを指定してやると良いです。 例えば、ハイライトを黄色にしたい場合とかは、以下のような感じ

    grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々
  • 指定したバックグラウンドプロセスをデーモン化する - 元RX-7乗りの適当な日々

    昔、「ログアウト後もコマンドを実行し続けたい場合」というエントリで"nohup"コマンドの使い方を書いたのですが、nohupし忘れた時はどうすればいいのか、という話。 指定したバックグラウンドプロセスをデーモン化するためにdisownというbashの組み込みコマンドがあります。 #!/bin/sh while :; do sleep 5 done ためしに上記のようなスクリプトを用意して、"&"付で実行します。 $ sh test.sh & [1] 2692 $ jobs [1]+ 実行中 sh test.sh &次に、disownコマンドを実行します。引数には"%"+ジョブ番号を指定します。(上記例だとジョブ番号は"1") $ disown %1 $ jobs $ この通り。psコマンドの結果は↓ $ ps -edf ・・・省略・・・ nami 2692 1708 0 02:25 pts

    指定したバックグラウンドプロセスをデーモン化する - 元RX-7乗りの適当な日々
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • seqコマンドの色々なオプション - 元RX-7乗りの適当な日々

    seqコマンドは、数値を規則的に増加/減少させるコマンド。 $ seq 1 5 1 2 3 4 5単純に増加させたり、、、 $ seq 10 -2 0 10 8 6 4 2 0増減幅を指定して減少させたり。 そんなseqコマンドにオプションがあることを知りました。 "-s" 区切り文字を指定する "-s"オプションを使うと区切り文字が指定できる。 $ seq -s , 1 5 1,2,3,4,5例えば、カンマ区切りにしたい場合は↑のような感じ。 ちなみに余談ですが、、、 $ seq 1 5 | paste -s -d , 1,2,3,4,5このオプションを使わなくても、pasteコマンドを併用すれば実現できなくもない。 "-w" 桁数を揃えて表示 "-w"オプションは、数字の桁数を揃えるために、頭をゼロ(0)で埋めて表示してくれる。 $ seq -w 0 10 100 000 010 02

    seqコマンドの色々なオプション - 元RX-7乗りの適当な日々
  • /proc/cpuinfoの中身: ぴろにっき

    2010.07.22追記 アーティクルの「flags」以降の部分については http://piro791.blog.so-net.ne.jp/2010-07-22 に追加調査した分があります。アーティクルよりもそちらの方が「より正確かもしれない」という状態なので、そっちを参照しる。 「え~と…この子って64ビット版のせんとくんが動作するんだっけー?」と/proc/cpuinfoを見始めたのが運の尽き。次第に、「この項目はなに?」「このフラグってなに?」と気になりはじめてしまい、あちこち調べまわることに。(汗) # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz step

    /proc/cpuinfoの中身: ぴろにっき
  • ある文字列をファイルの特定行に挿入するコマンド - 元RX-7乗りの適当な日々

    Linux等で、ファイルの特定の行に、ある文字列を挿入(追加)したい時のコマンド(sed)サンプルを備忘録的に。 前提 こんなファイルがあります。 $ cat test.txt line1 line2 line3 2行目に挿入 $ sed -e "2i hoge" test.txt line1 hoge line2 line3 2行目直下に挿入 $ sed -e "2a hoge" test.txt line1 line2 hoge line3 "line2"の行前に挿入 ※この辺の正規表現は、要件に応じて適当に変えてー。 $ sed -e "/^line2$/i hoge" test.txt line1 hoge line2 line3 "line2"の行後に挿入 $ sed -e "/^line2$/a hoge" test.txt line1 line2 hoge line3 sed

    ある文字列をファイルの特定行に挿入するコマンド - 元RX-7乗りの適当な日々
  • 本を読む ママ、どうして/usr/binにcdがあるの?

    FreeBSDとかMac OS XとかOpenSolarisとかには、/usr/bin/cdというコマンドがあります。定期的にMLなどで話題にのぼる、自転車置き場の議論(bike-shed discussion、略してBSD)の定番ネタのようです。 このコマンドは、もちろん内蔵コマンドのcdのような動作はしません。呼び出し元とは独立したプロセスなので、呼び出し元のシェルに影響を与えません。 なんのためにあるか なんでそんなのがあるかというと、POSIXで「シェルの内蔵コマンドもexec系のシステムコールでアクセスできるべし」と決められてるからだそうです。「特別な内蔵コマンドを除き」ってありますが、cdは入ってませんね。 all of the standard utilities, including the regular built-ins in the table, but not t

  • 行単位のデータをカウントしてランキングする手順

    行単位のデータをカウントしてランキングする手順 2011-02-09-2 [Programming] 1行1件のテキストファイル形式のデータに対して、カウントしてランキングする方法は昔からこれ。ほとんどの環境に入っている sort と uniq と cat を使用。 sort FILENAME.txt | uniq -c | sort -nr | cat -n 以下のように alias しとくとよいかも (zsh)。 alias ranking='sort|uniq -c|sort -nr|cat -n' 実行例: perl -le 'for(1..100){print int(rand(5))}' | ranking 1 26 0 2 21 2 3 20 1 4 17 3 5 16 4 ls | cut -c1 | ranking 1 39 a 2 7 t 3 7 m 4 6 s 5 6

    行単位のデータをカウントしてランキングする手順
  • (新人向け) Unixオペレーションの注意点 - Magical Diary

    主に新人向けとして、Unixサーバで作業をする際の注意点を書いておく。 ここに書いてある内容は絶対的なものではないし、会社や現場ごとにルールがあるので、適宜ルールに合わせて実践すれば良い。 ログを取れ 何をやったか、何をやらなかったか、というエビデンスのためにログは必ず残しておく。SSHクライアントによっては毎回自動的にログ取得する設定が可能なので、設定しておくと良いだろう。 作業後に問題が発生した場合に作業内容を確認するためにも使うため、必ずログは取得しておくこと。 (追記) 当たり前だが、コマンドとその出力をペアで取ることに意味がある。 set -x (set verbose) しろ ログを取得しても、コマンドラインを編集した際には以下のように非常に見づらいものとなってしまう。(がんばれば解析することは出来るが…) ESC[0mESC[27mESC[24mESC[JESC[1myasu

    (新人向け) Unixオペレーションの注意点 - Magical Diary
  • tar でまとめてある複数のテキストファイルをディスクに展開せずに走査する

    tar でまとめてある複数のテキストファイルをディスクに展開せずに走査する 2011-02-01-2 [Programming] 大量のログデータをもらってきて分析するようなときなどに表題のタスクに遭遇する。無闇に tar ball を展開するとすぐにディスクフルになりがちゆえ。 このような場合は tar の O オプション(大文字のオー)を用いる。 以下、例で説明。 data.tar.gz には 0001.txt から 1000.txt までの千個のテキストファイルが入っているとする。 (1) 行数を数えるには: tar zxOf data.tar.gz | wc -l (2) 特定の文字列を含む行を取り出すには: tar zxOf data.tar.gz | grep 'lang:ja' (3) 文字コードを変換して圧縮して置いておくには: tar zxOf data.tar.gz |

    tar でまとめてある複数のテキストファイルをディスクに展開せずに走査する
  • tailコマンドって-c使うと超速い - As a Futurist...

    Twitter でつぶやいたら意外と知られて無かったので記事にしておきます。 Linux とかで巨大なログファイルとかを扱うときに、head や tail というコマンドで先頭から何行とか 末尾から何行を見たい時があると思います。 例えばアクセスログで末尾から 10000000 行目辺りをみたいとかいうときに $ tail -n 10000000 access_log | head とかするとかなり遅いと思います。これはログの後ろの方から読み込みながら 行数を計算しているからで、10000000 行分数えないとどこから表示すればいいのかわからないので なかなか結果が返ってこなくてヤキモキしてしまいます。 こんなときに、-cというオプションを使うと超高速で結果が返ってきます。-cというのは -c, --bytes=N output the last N bytes とある様に、ファイルの末尾

    tailコマンドって-c使うと超速い - As a Futurist...
  • これからの「GNU Screen」の話をしよう

    縦分割が目的で使い始めた開発版の GNU Screen。CVS、Subversion、Gitとリポジトリを追いかけていると、他にも便利な機能があることが分かってきました。ここ半年ほど主だった変更はありませんが、4.1.0 のリリースに向けてドキュメントも整備されてきたようですので、2年ほど使用してきて分かってきた変更点をまとめようと思います。 4.1.0における変更点 ここで取り上げる変更点は次の通り。詳細は ChangeLog などを確認してください。 新しい機能 縦分割 レイアウト ウィンドウグループ マウス操作のサポート コマンドメッセージの抑止 外部からのコマンド問合せ 拡張されたコマンド/機能 最大ウィンドウ数の増加 ウィンドウ番号の相対指定 イベント発生ウィンドウの装飾設定 設定で使用可能な変数/書式の追加 ウィンドウリスト/画面リストの拡張 その他 256色サポート コマンド

    これからの「GNU Screen」の話をしよう
  • 中規模データ処理で学んだ tips - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20101230.html

    中規模データ処理で学んだ tips - フリーフォーム フリークアウト
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • uniq -c で集計した数の合計値を算出する - 技術メモ帳

    よくある慣用句として、 sort | uniq -c | sort -nr | head というものがある。 ご存知の通り、重複する行の数をカウントし 高い順に並び替えてheadする。というものだ。 たとえば、前にも書いたが、 指定したディレクトリ以下のファイルの拡張子の統計を取る コマンドは以下のようになる。 #ibook find . -type f | egrep -o '[^.]+$' | sort | uniq -c | sort -nr | head 42 rb 18 php 15 txt 10 cxx 9 html 7 pl 6 log 6 c 5 yml 4 js このときの一番左側のカラムである、集計値を合計する。 #ibook ... | head | rev | cut -d' ' -f2 | rev | paste -d+ -s - | bc 122 集計値のあるカ

    sleepy_yoshi
    sleepy_yoshi 2010/11/26
    pasteの使い方がテクい
  • ディスクキャッシュを簡単にクリアする - 射撃しつつ前転 改

    3年前にディスクキャッシュをクリアするためにはunmountしてからmountしなおせば良いという事を知ったが、これは自由に取り外しができるパーティションがないと使えない。強制的にキャッシュをクリアする方法を知ったのでメモしておく。 sudo sysctl -w vm.drop_caches=3; sudo sysctl -w vm.drop_caches=0; 参考:ext3の dir_indexを試す 追記: sudo sysctl -w vm.drop_caches=3 だけでOKだとkosakiさんからコメントで教えてもらいました。

    ディスクキャッシュを簡単にクリアする - 射撃しつつ前転 改
  • /bin/sh が dashにリンクされててびびった - UNIX的なアレ

    ちらほらドキュメントも見かけたのでわりと有名なのかもしれませんね・・・いままで動いていたperlをubuntuに持っていったら動かなくなってびっくりしたのです。 Logを見る限りperlの内部でsystemでたたいているコマンドが動かなくなったんですね。わりとでかめのスクリプトだったので、とりあえずワンライナーをテスト用にたたいてみます。 $ perl -e 'system("ls -l <<< a ")' sh: Syntax error: redirection unexpectedあれーなんかへんだなーと思い、/bin/shを調べてみました。<<< はbash拡張で使える機能なのでbashがうまくたたけてないのかなー。 $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2009-01-09 16:02 /bin/sh -> dashうーん問題ないよなぁ

    /bin/sh が dashにリンクされててびびった - UNIX的なアレ