Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
まえがき これは、とあるウェブプログラマーがやらかした事件の手記である。 返事がない ある日、Railsでmigrationを書いて、デプロイしたときに、ブラウザ氏からこう言われた。 502 Bad Gateway nginx/1.4.3 _人人人人人人_ > 突然の死 <  ̄Y^Y^Y^Y^Y ̄ まったくシャレにならないので、なんとかしよう。 原因を究明しよう まず、原因を探ろう。 よくよく思い出してみると、マイグレーションが重すぎて途中停止してるっぽかった。その頃からアクセスが死んだようにも思える。 ということは、何かの拍子にDBをロックしてしまった可能性が高い。 ロック、聴くぶんには大好きだけどハメられるとすごく辛い。しかも死んでるし。 で、mysqlのprocesslistを確認する。原因となる作業プロセスがいるはずだ。 processlistの探り方 基本はUNIXのpsとかとだ
はじめに これから書く内容は、シェルスクリプトをばりばり書いている現場(サーバエンジニア・インフラエンジニア)向けのものではありません。 年に数回crontabをいじるような現場(サーバに詳しくないアプリケーションプログラマが多数を占めるような現場とか、Webデザイナや非プログラマがcrontabをおそるおそるいじったりするような現場)を想定しています。 >/dev/null 2>&1 の問題点 この記法の問題点は、「覚えにくい、間違えやすい、間違ってても気づかない」ということです。 初心者を迷わせる要素がこんなにあります。 >/dev/nullは先か後か 1と2はどちらが先か &はどこに書くのか よって下記のように多種多様なミスが起こり得ます。 2>&1 >/dev/null >/dev/null 1>&2 >/dev/null 2>1& >/dev/null &2>1 これをぱっと見て
cron等でシェルを複数回実行した時、多重起動するとまずいので、それを回避するスクリプト。 業務上必要だったので作ってみた。 #!/bin/sh SCRIPT_PID="/home/takase/work/run_script.pid" if [ -f $SCRIPT_PID ]; then PID=`cat $SCRIPT_PID ` if (ps -e | awk '{print $1}' | grep $PID >/dev/null); then exit fi fi echo $$ > $SCRIPT_PID (この辺にバッチの処理) rm $SCRIPT_PIDpidでプロセスの有無を確認しているので起動中は2重に実行されないし、 何か理由があって落ちてた場合は再実行される。 後はcrontabにこのシェルを設定してやればOK
Linux でよく使うコマンドに tar コマンドがあります。.tar, .tar.gz, .tgz などのアーカイブファイル、通称 tarball を作成・抽出するコマンドですね。 抽出(解凍)はよく使うから呪文のようにオプションを覚えているんだけど、アーカイブ作成(圧縮)の方はうろ覚えでした。ということで、改めて各オプションの意味を備忘録的に記しておきます。 まず、必須のオプション(機能指定文字)を選ぶ。 c : Create アーカイブの作成 x : eXtract アーカイブの抽出 これに次のオプションをつける。 z : gZip 圧縮・解凍に gzip を使う(もちろん gzip 形式の場合のみ) v : Verbose 作成・抽出時にファイルのリストを画面出力する f : File 作成・抽出するファイルを指定する(tar は本来テープメディアのためのコマンド (Tape AR
(タイトルは釣りです) いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルが twitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いなく捨てる方法だったのでつい crontabに > /dev/null 書いたら椅子投げる 2012-06-13 00:01:17 via YoruFukurou とつぶやいてしまったのですが、では出力を捨てないためにはどうすればいいのか。現時点での個人的ベストプラクティスを書き留めておきます。 デフォルト : メールで送る (MAILTO) せっかく cron daemon がログを捨てないためにわざわざメールで送ってくれるのに、それを > /dev/null で踏みにじるとはひどい。 とはいえ、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く