pecoというインタラクティブに入力をフィルタして出力するコマンドがあって、使い始めてからシェルの操作方法が大幅にかわり、だいぶライフチェンジングだった。 最近このへんが流行ってるのでやたら記事あるけど、せっかくなので僕も使い道を紹介しようと思う。 pecoをzshで使う 1. peco ghq ghqを使ったローカルリポジトリの統一的・効率的な管理についてのこと。 僕も$GOPATHは$HOMEにしていて、今のところ別に困ることはない。 go getしたりghq getしたりして美しくディレクトリ切った上で、pecoに割り当てておいたC-sですぐ目的のディレクトリ開けるようにしてあるので、めちゃくちゃソース管理が楽になった。 function peco-src() { local selected_dir=$(ghq list | peco --query "$LBUFFER") if
僕はコマンドラインで使うシェルスクリプトを書くことがけっこうあるんだけど、インターフェイスというか呼び出し方はとても大事だと思ってるので、そこにわりと時間をかけて考えるようにしてる。実装はいつでも変更できるけど呼び出し方を変えた時は利用者にも変更を強いるので、できれば最初から良い設計で作りたいと思っている。 そこで、僕がシェルスクリプトのオプションとか引数とかの仕様を決める上で注意していることをまとめてみた。シェルスクリプトや、その他コマンドラインのツールを作るときに参考にしてほしい。 シェルの種類は bash や zsh を想定してるけど、実装によらない話なのでどんなシェルでも使えると思う。 エラーの時に Usage (使い方ヘルプメッセージ)を表示するのはやめる エラーになった時に Usage (使い方ヘルプメッセージ) を表示するスクリプトがあるけど、やめたほうがいいと思う。例えばこ
2014年4月17日に待望の GNU Screen の新バージョン 4.2 がリリースされました。 [screen-devel] GNU Screen v.4.2.0Hello everyone, it is my pleasure to announce release of GNU Screen v.4.2.0 available at http://download.savannah.gnu.org/releases/screen/ (I will also upload to ftp.gnu.org as soon as my access is authorized) Many are probably using it due to their distributions packaging development versions, so they know at least
linuxサーバのOS全体に効くカーネルパラメータのチューニング箇所と その設定値、またその理由をまとめておく。 あくまで自分の環境ではこうした、というだけであり、 提供するサービスごとに検討が必要である。 どこをどう変更するのか、または変えないのか、その判断材料にはなるだろう。 ※ユーザ単位でシステムリソースに制限をかける場合をこちらを参照してほしい。 以下は/etc/sysctl.conf で設定するものとする。 ● 大規模サイト用チューニング kernel.pid_max 動作:pidの最大数 設定値:131072 理由:pidを枯渇させない vm.max_map_count 動作:mmapやmalloc時にメモリを仮想空間にマッピングできる最大ページ数 設定値:300000 理由:マッピングできなくなる事態を防ぐ net.core.somaxconn 動作:接続(ソケット)キューの
いつまで経っても終わらないから帰れない… 途中で終了してしまうと困るので、ログアウトしても終了しないように。 作業の流れ Ctrl+Zでコマンドの中断 bgでバックグラウンドに回す jobsでジョブの確認 disownでログアウトしても実行されるようにする 実際のコマンドだと
プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで本格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや
機能やサービスごと、もしくはサイトごとについつい、いくつものVPSを借りてしまってはいませんか? 僕がそうなんです。環境はお互いに独立しておいたほうが後々良いという考えのもと、さくらのVPSをサービスごとに借りてしまい、いつのまにか請求額が高くなっているというのは、よくあることです。ありますよね? 会社でもつい借りまくって毎月の請求が7万とかになってて悲しんでいます。 今回、個人的に借りていた3台のVPSを1台に集約したいと思いました。 初代の「さくらのVPS512」というプランが3つで2940円掛かっていましたが、「さくらのVPS 石狩リージョン 2G v3」の初期費用無料、月額1480円に節約したいと思います。 最近できたConoHaなど、別にさくらのVPSに限らず他社のKVMなVPSでもいいと思います。 CloudCore CV01はちょっと割高に感じるので、さくらかConoHa、そ
rbenvを使ってみる - すぎゃーんメモの続き。 現時点でのrbenvのバージョンは0.2.1。 rbenvを使っていると.rbenv-versionファイルの有無でrubyコマンド打ったときに実行されるrubyが違うものになる、というのがちょっと新鮮で、これはどういう仕組みで動いているのだろう?と思って少し調べてみた。 上記記事のようにrbenvの設定をした環境では、 $ which ruby /Users/sugyan/.rbenv/shims/rubyとなり、${RBENV_ROOT}/shims以下のrubyを指すことになる。ここへのPATHは$HOME/.rbenv/libexec/rbenv-initに echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"' と書かれているので、eval "$(rbenv init -)"してあれ
アプリケーションエンジニアの人には「なんか重い」という状況に遭遇したらインフラの人にタスクを投げる、という人もいるかも知れません。けど、その重さのどこに原因があるのか。CPUか、ネットワークか、IOかくらいの診断はできた方がアプリ開発においても有益です。 「せっかくつくったシステムがなんか重い」 そんな時にアプリケーションエンジニアとしてできることを書きます。 本職のインフラの人にはぬるい内容だと思います。何を隠そう僕自身がアプリ寄りの人間なので、突っ込んだ話はできないのです。あしからずご了承ください。 なんかサーバが重いなー まずはロードアベレージを調べる サーバが重いと思ったら、まず真っ先にすべきことは対象ホストにSSH接続してロードアベレージを調べることでしょう。ロードアベレージとは 実行されずに待たされているプロセスの数 のことで、多すぎるとやばいと認識しておきましょう。ロードアベ
rsync は便利なんだけど、オプションが多くて難しい。特にややこしいのがファイルを選別するための --exclude と --include オプションだ。 man を読んでもイメージがつかみにくかったので、ググったり、-vvv の結果を見たり、ソースを読んだりしつつ調べてみたところ、3 つのルールを理解すれば何とかなりそうなことが分かった。 この記事では、その 3 つのルールをなるべく分かりやすく説明する。 ルール1: 指定順に意味がある コマンドライン引数は、通常、どの順番に指定しても同じ挙動になることが多い。しかし、rsync の include と exclude に関しては、指定順が意味を持つ。 man にも出てくる例で説明しよう。MP3 だけをコピーするには次のようにする。 -av はコピーするときのお決まりのオプション。ネットワーク越しにコピーするときは、-avz として圧
autossh - Automatically restart SSH sessions and tunnels Update: Version 1.4g most notably addresses a bug that could see an alarm signal occur without a handler, causing autossh to exit inappropriately. Previous update: Version 1.4f incorporates a number of changes and fixes to signal handling and exit conditions. The most notable changes are that it will exit properly when killed while waiting b
バージョン管理狂の皆様におかれましては alias st='git status' などのエイリアスは当然定義されていることと思います。 うっかり Mercurial リポジトリの中で st を叩いてしまって fatal: Not a git repository などと言われ、ここで st つったら hg status に決まってるだろボケがとターミナルを叱責した経験も当然あることと思います。 泣く泣く gst と hst を定義したものの、3文字打つのがかったるくて枕を濡らしたことも当然一度や二度ではないことでしょう。 というわけでちょっと賢いエイリアスを定義できるやつを作りました。 Git リポジトリの中で st を叩いたら git statusになり、Mercurial リポジトリの中では hg status になる、そんな空気の読めるやつです。 no title こういう感じで使
普段は LANG=EUC-JP な環境で、時々 LANG=UTF8 の環境に ssh する時などに便利です。 変えたい window 上で以下のコマンドを実行してください。<escape key> のデフォルトは Ctrl-a です。Ctrl-z にしている人が多いかもしれないです。 <escape key>:encoding [enc] [enc] は、utf8, eucjp, sjis, jis などが使えます。詳細は man screen をご覧下さい。 参考情報: unknownplace.org - 2005/10/19 - :encoding P.S. 今気づいたのですが、~/.screenrc の内容は <escape key>: で実行できるのですね。
これから zsh はじめる人へってタイトルにしようかと思ったけどやめた。 oh-my-zsh というのがあります。 https://github.com/robbyrussell/oh-my-zsh 色々便利設定とテーマ群になります。 で、テーマの数がすごいのでまずは見てみよう↓ https://github.com/robbyrussell/oh-my-zsh/wiki/themes みんな zsh 便利だって言ってるから使ってるけど、まぁそこまで使いこなしてないよねー でも Bash に戻るのもなぁとかそんな人間は何も考えずにとりあえず入れてみると良いと思う。 まず、自分の今までの設定を rename とかして退避(あとで使います) git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-m
こんにちは、牧野です。久々の、9か月以上ぶりのブログです。。 仕事では、ここ1年近くずっっとインフラ関係のことをやっていました。 今日は、SSHに関するTIPSを紹介します。 1. 特定のサーバーにSSHログインする時に、特定の設定を使用する ホームディレクトリ/.ssh/configファイルに設定を書いておくと、特定のサーバーにログインする時に、自動的に特定の設定を使うようにできます。 SSHのオプションをサーバーによって分けたい時に入力が楽になります。 以下は、xxx.yyy.zzz.aaaでアクセスする時に使う秘密鍵をid_rsa_testに設定しています。 .ssh/config Host xxx.yyy.zzz.aaa IdentityFile /home/asial/.ssh/id_rsa_test 2. ホストキーをチェックしないようにする LinuxからサーバーにSSH接続
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く