現在のLinuxでは、パスワードは暗号化されて専用のファイル(/etc/shadow)に保存される。このファイルが書き換えられて/etc/passwdファイルと整合性が取れなくなってしまうと、passwdコマンドでパスワードを変更しようとしてもエラーになってしまう。そのようなときは、pwconvコマンドで両者の整合性を取れば、passwdコマンドが使えるようになる。 # passwd sato ←satoのパスワードを変更 Changing password for user sato. passwd: Authentication token manipulation error ←エラーが出る # pwconv ←パスワードファイルの整合性を取る # passwd sato ←satoのパスワードを変更 Changing password for user sato. New pass
[上に] [前に] [次に] B-Cus 1998/01/12(月) 18:22:08 perlで実行した標準エラー出力を処理する方法を教えてください。 また、標準エラー出力のみを受け取る方法を教えてください。 例えば exist-file が存在して、non-exist-fileが存在しないとき、 open(IN,"ls exist-file non-exist-file|); print <IN>; とすると出力は 「exist-file」 のみになってしまいます。 標準エラー出力に出力されている 「non-exist-file: No such file or directory」を受け取る にはどうすればいいでしょうか。 また、標準出力は捨て、標準エラー出力のみを受け取る方法 # 「non-exist-file: No such file or directory」だけを受け取る方
携帯電話宛バウンスの見分け 日本の携帯電話、例えばNTT docomo(ドコモ)にメールを送ってバウンスしてくる場合、 その多くが宛先不明かドメイン指定拒否によるものです。 宛先不明もドメイン指定拒否も、どちらのバウンスメールも内容は Unknown User と書かれていて、一見しただけでは判別しにくいのですが、よく観察すると僅かな違いがあります。 戻ってきたバウンスメールが、どのMTA(メールサーバ)で作られたものであるかは 文面や構造をよく見ないと判別できませんので、より詳細な解析結果が必要な場合は Sisimaiによる解析をお試しください。 Sisimaiは携帯電話宛バウンスメールの宛先不明を userunknownと、 ドメイン指定拒否をfiltered として自動で区別して検出しますが、ここでは目視による簡単な判別方法を紹介します。 初出: bouncehammer.jp/..
「1行目ってなんなの!DOCTYPE宣言じゃん!削っても変わらないし!」 とJavaScript初心者の私はキレかけたんだけど、 JavaScriptの読み込みをしようとしたけどファイルが見つからない HTMLファイルを先頭からJavaScriptとして読み込もうとする 当然構文エラー ・・・ということらしい。 要するに「ページ内のscriptタグでインポートしようとしているJavaScriptの外部ファイル、それホントにちゃんと読み込めてるの?」というところを疑うと幸せになれる(かもしれない)。 言われてみれば、なるほど。
MySQL で新たにテーブルを作ったり、プライマリキー、ユニーク制約、またはインデックスを作成する際、下記のようなエラーが発生することがあります。 ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length 結論として回避策から書くと、BLOB型またはTEXT型の場合は、インデックス作成時にキー長を明示してあげる必要があります。 create index new_index on table_name(text_field(100)); このエラーは、MySQL が BLOB型もしくはTEXT型 (これらに順ずる TINYTEXT型 や LONGTEXT型を含む)のような可変長カラムでは、その先頭から最大255文字分しかインデックスできないという制約から来て
chdirのときもエラー処理は必須ですな〜自分で使うスクリプトだからええ加減な書き方してた〜反省 #ubuntu #perl http://twitter.com/mukumaru/status/20694618336 perl5.10.1 以後では autodie.pm が標準添付されているので、それを利用するとよい。 % perl -E 'use autodie; chdir "/foo"' Can't chdir('/foo'): No such file or directory at -e line 1こんなかんじ。use strict; use warnings; につづけて use autodie; と書くだけ。 使い捨てスクリプトでは use autodie; しておくと、いちいち組み込み関数のエラー処理かかなくていいので便利。
spawnしたプロセスの終了ステータスを得たいことがある。 この場合はwaitでプロセスの終了を待つと、結果が返ってくる。 結果はリストになっていて3番目(インデックス2)が-1の場合は OSエラー、0の場合は4番目(インデックス3)にswawnしたプロセスの 終了ステータスが入っている。 スクリプトの例。読み取り権のないファイルをcatして終了ステータスを得る。 spawn cat /etc/shadow expect eof catch wait result set OS_ERROR [ lindex $result 2 ] if { $OS_ERROR == -1 } { puts "Fail to exec" exit 127 } set STATUS [ lindex $result 3 ] exit $STATUS スクリプト自体をcatの終了ステータスで終了する。 実行結果
CentOSでサーバを構築することが多いのですが、バージョンが上がるたびにインストールDVDを作り直すのはDVD-Rがもったいないと思うようになりました。PXEによるネットワークインストールという手段もあるのですが、環境作りの手間がかかりすぎます。 そこで、USBメモリからブートして、ネットワークインストールをする方法を試してみました。これならバージョンが上がっても、USBメモリを上書きすれば済みますし、常に最新のパッケージをインストールすることができます。ただし、インストールするPCのBIOSが、USBメモリからのブートに対応していることが前提となります。 1. PCとネットワーク環境を用意する インストールするPCは普通のものでかまいません。今回は64bit機を用意しました。あとでネットワークインストールをするので、DHCPが使えるネットワーク環境が必要です。 今回インストールするのは
C++11には、finalとoverrideがある。クラスにはfinalを指定できる。virtual関数にはfinalとoverrideを指定できる。 クラスにfinalを指定すると、そのクラスを基本クラスに指定できなくなる。 struct final_class final { } ; // エラー、final_classは基本クラスに指定できない struct error : final_class { } ; virtual関数にfinalを指定すると、そのvirtual関数をそれ以上オーバーライドできなくなる。 struct base { virtual void f() { } } ; struct derived : base { virtual void f() final { } } ; struct error : derived { // エラー virtual voi
ここのところ、お仕事で管理しているシステムで、夜中に負荷が急上昇する事象が発生しており、夜な夜な対応に追われていました。 (このブログ書いている今も、負荷がじわじわ上昇中なんですが・・・) で、いろいろと調査した結果、ようやく糸口がわかってきました。 結論から言うと、ローカルポートなどのネットワーク資源を食いつぶしていたようです。 以下、調べていってわかったことなどのメモです。 トラブルの事象 運用しているのは Apache2.2 + mod_perl2 なwebサーバで、リスティング広告システムの配信系です。 リスティング広告の配信のシステムって一般的にロジックが複雑でいやーな感じなんですが、このシステムもご他聞に漏れずかなりのひねくれ者で、しかもトラヒックは結構多めです。システム全体で、日に1000万〜2000万クエリくらいかな。幸か不幸か、このご時勢においてもトラヒック的には成長し続
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く