タグ

ブックマーク / d.hatena.ne.jp/lurker (9)

  • logrotate - copytruncate - 技術メモ帳

    kitokitoki
    kitokitoki 2012/02/06
    inode, copytruncate をつければなぜアプリの再起動が不要か/つけなければなぜアプリの再起動が必要か
  • Bash で zsh の quote-line - 技術メモ帳

    zsh の カーソル位置までをエスケープしてくれる quote-line(Esc+") に相当する機能が、 bash には無いようだ。(Esc+. とか Esc+/ はあるのに...) というわけで、Bash/bind で実現してみた。 以下の行を、.bashrc に記述。 bind '"\M-\""':"\"\C-a'\C-e'\"" 一応説明しておくと、 Meta-": C-a'C-e' C-a で行の先頭に移動して、' という文字を入力 C-e で行の末尾に移動して、' という文字を入力している。 この方法では、 複数回入力でどんどんエスケープされていく機能に関してはアウトです。

  • 端末のカノニカルモード - 技術メモ帳

    なんだか、ruby-users:ML で カノニカルモードが話題に出そうな雰囲気がする。。。 端末は、たいていデフォルトで行単位で処理を受け付けます。 この状態をカノニカルモードといって、 行単位でバッファリングをすることによって 処理効率を良くしようとしているのだろうと思います。 カノニカルモードでは、 Enterキーが押されたときに、はじめて入力データが送信されます。 たとえば、こんなソースがあったとします。 readl.c #include <stdio.h> #include <unistd.h> int main() { char c; while((c = getchar()) != EOF) { if( c == 'q' ) break; putchar(c); } return 0; } 'q'という文字が入力されたときに プログラムを終了させようとしています。 コンパイル

    kitokitoki
    kitokitoki 2011/08/12
    カノニカルモード
  • ssh-copy-idコマンドで公開鍵をリモートホストに登録する - 技術メモ帳

    http://www.t-dori.net/k-way/?date=20061218 こんなコマンドがあったのか。常識? ssh-copy-id username@hostname.example.jp か。パスワード認証のパスワードが求められる。 あああ、こんな便利なコマンドあったのか。 いわゆる authorized_keys に登録する処理が簡単に行える。 ただ、ほとんどの環境に入ってない。 最近のOpenSSHだと入ってるのかな。 ちなみにいつもはこうやってる。 $ cat ./.ssh/id_rsa.pub | ssh user@remote_host "cat >> ./.ssh/authorized_keys" 参考: http://www.delafond.org/traducmanfr/man/man1/ssh-copy-id.1.html http://takkan-m

  • xargsコマンドを使って指定したコマンドを並列実行させる - 技術メモ帳

    あまり知られていないが、GNUのxargsコマンドには、 プロセスの最大数を設定できるオプションというのが用意されている。 コレを使って、プロセスを並列実行させてみよう。 xargs --max-procs=MAX-PROCS -P MAX-PROCS command MAX-PROCSに数字を指定すると、 最大で、その数だけ command プロセスを生成する。 デフォルトは、1プロセスだけになっている。 いくつか例を交えて説明する。 サンプルとして、以下のようにURLが行ごとに記述されたファイルを元に curlをxargsで並列実行して、HTMLデータを取得してみよう。 $ cat ./url_list.txt http://www.google.co.jp/ http://www.yahoo.co.jp/ http://b.hatena.ne.jp/ まず、普通にxargsを使ってc

  • リモートのファイルと、ローカルのファイルをdiffする - 技術メモ帳

    sshは、最後の引数にコマンドを指定すると ログイン先でそのコマンドを実行してくれる。 ssh user@192.168.1.1 "uptime" それを利用して、リモートで該当ファイルをcatし、 その出力結果である標準出力とdiffをさせることによって実現できる。 ssh user@192.168.1.1 "cat .bashrc" | diff - ./.bashrc また、プロセス置き換え(Process Substitution)を利用しても実現可能。 diff <(ssh user@192.168.1.1 "cat .bashrc") <(cat .bashrc)

  • 技術メモ帳: [unix]複数のファイルの名前をまとめて変更する

    複数のファイルの名前を変更する際に、 便利なコマンドというものがある。 いくつかご紹介させていただこう。 カレントディレクトリにあるファイルの名前を、 たとえば、*.html を *.htm と名前を変更するという課題に対し どのぐらいエレガントに書けるかというのを比較してみる。 まず、普通にやったらどうだろう。 おそらく、for文 をつかうことだろう。 for file in *.html do base=`basename $file .html` mv $base.html $base.htm; done; zshだともうちょっとスマートにかけて、 for file in *.html do mv $file:r.html $file:r.html; done; こんな具合。 for文 が嫌いなネット右翼のために、 xargs を使ってこの問題を解いてみよう。 ls -1 *.htm

  • lessでtail -f - 技術メモ帳

    less 起動中に、F と大文字で入力する事で、 tail -f のような挙動になるらしい。 知らなかった。 いつでも気軽に直前のログを見に戻る事が出来るのが良いね。 Ctrl + C で元のモードに戻る。 lessの場合 less +内部コマンド名 としておく事で起動時に内部コマンドを実行できるので とりあえず、ltailf という名前でエイリアスしておいた。 alias ltailf='less +F'

  • 技術メモ帳 - pgrep, pkill を使用してプロセスを殺す

    最近、会社でシェルの操作方法について教えているのだが、 pgrep / pkill / skill / pidof といった 便利なプロセス操作系コマンドを知らない人が実に多い。 プロセスを殺すというのは、よくある作業なので 今回はコレについて書いてみる。 たとえば、これらのコマンドを知らない人が、 指定した名前のプロセスを kill する手順はだいたい 以下のようなものになることだろう。 $ ps aux | grep プロセス名 | grep -v 'grep' # コマンドの出力結果から pid を目で確認 12345 ... .. hoge .. .. $ kill 12345 この作業は非常に面倒で退屈だ。 もし殺さなければならないプロセスがたくさんあったときは どうするのだろうか。 おまけに、grep コマンド自身が候補に含まれてしまう事があるのだが、 grep -v grep

  • 1