MySQLの起動/再起動時に「Another MySQL daemon already running with the same unix socket.」というエラーが発生した。
作成していたECサイトが表示されなくなってしまい、何が原因なのか調べており、.htaccessの記述がおかしかったのか等を調べたが、テストで同階層に設置したhtmlは正常に表示されていました。
表示されなかったのはデータベースから情報を取得してきているphpファイルだったので、データベースからのデータ取得の際になにか問題があるのではないかと思いデータベースを再起動させてみることにしました。
# /etc/init.d/httpd restart
または
# service mysqld start
でMySQLを起動させようとすると、下記のようなエラーが発生していました。
Another MySQL daemon already running with the same unix socket.
mysqld を起動中: [失敗]
Webで検索した際に下記のサイトを見つけたので参考にさせていただき、下記コマンドを実行してみました。 ★http://fnya.cocolog-nifty.com/blog/2013/12/mysql-another-m.html
# service mysqld stop
mysqld を停止中: [ OK ]
# mv var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
# service mysqld start
mysqld を起動中: [ OK ]
初めてのPerl 第10章 様々な制御構造 練習問題1
乱数を生成し、それをユーザーに当ててもらうプログラムです。exit、quit、空白の入力があった際と、数字が当たった際にプログラムを終了させています。
#!/usr/bin/perl use strict; use warnings; use 5.010; #ランダムな数値を生成。 my $random = int(1 + rand 100); while(<>){ if($_ =~ /^\s/ ){ last; }elsif($_ =~ m/exit|quit| /){ last; }elsif($_ == $random){ print "MATCH\n"; last; }elsif($_ > $random){ print "Too High\n"; }elsif($_ < $random){ print "Too low\n"; }else{ last; } } =pod #こちらも上記と同じ動きをします。 while(<>){ last if $_ =~ m/^\s/; last if $_ =~ m/exit|quit| /; print "Too High\n" if $_ > $random; print "Too Low\n" if $_ < $random; if ($_ == $random){ print "MATCH\n"; last; } } =cut
実行コマンドは以下の通りです。
$ ./practice1
数字がマッチした時の結果です。
50
Too High
40
Too High
30
Too low
35
MATCH
exitが入力された時の結果です。
50
Too low
60
Too low
exit
$(コマンドの入力に戻る)
※ifを一文で書くコードも考える。
初めてのperl 第9章 正規表現によるテキスト処理 練習問題4
今までに作成したプログラムファイルにコピーライトを表示させるプログラムです。ファイルの#!行の直後に挿入されます。
#!/usr/bin/perl use warnings; use strict; use 5.010; $^I = ".bak"; while(<>){ if ($_ =~ m/^#!/) { $_ .= "##Copyright (C) 2014 by YoursTruly\n"; } print; =pod if($_ =~ m/^#!/o){ if ($_ =~ s/^\n/##Copylight (C) 2014 YoursTruly/){ print; } } =cut }
実行コマンドは以下の通りとなります。
$ ./practice4.pl test
渡しているtestファイルには先頭行に「#!/usr/bin/perl」が記載されています。
#!/usr/bin/perl
my $test = "Hello";
print $test;
結果は以下の通りです。
#!/usr/bin/perl
##Copyright (C) 2014 by YoursTruly
my $test = "Hello";
print $test;
初めてのperl 第9章 正規表現によるテキスト処理 練習問題3
受け取ったファイル内のFredをWilmaに変更し、WilmaをFredに変更するプログラムを書きなさい。
#!/usr/bin/perl use strict; use warnings; use 5.010; $^I = ".copy"; while(<>){ #swapを利用する際は、###や$$$など使わない(本文中で出てこない)ものを選択する必要がある。 $_ =~ s/fred/###/gi; $_ =~ s/wilma/Fred/gi; $_ =~ s/###/Wilma/gi; print; }
実行コマンドは以下の通りです。
$ ./practice3.pl names
namesファイルの内容は以下の通りです。
wilma&fred
fred$wilma
結果は以下の様になります。
Fred&Wilma
Wilma&Fred
※names.copyという名前のバックアップファイルが作成されます。
初めてのperl 第9章 正規表現によるテキスト処理 練習問題2
テキストファイルを元に修正を加えたコピーを作成してください。コピーされたファイルではfred(大文字小文字区別なし)をすべてLarryに書き換えてください。出力ファイルの名前は、入力ファイル名に適応した.outで終わる名前にしてください。
#!/usr/bin/perl use strict; use warnings; use 5.010; $^I = ".out"; while(<>){ chomp; if($_ =~ s/fred/Larry/gi){ print $_ . "\n"; } }
引数として渡す入力ファイル(names)の内容は以下の通りです。
fredFRedFRED
FREDFRED
fredfred
fred and Fred
実行コマンド配下のとおりです。
$ ./practice2.pl names
上記のコマンドを実行した際には、新しいファイル「names.out」という名前のファイルが作成され、元のファイルの内容をコピーします。
-rw-r--r-- 1 vagrant vagrant 70 1月 8 01:33 names
-rw-r--r-- 1 vagrant vagrant 61 1月 8 01:33 names.out
namesの内容は以下の通りです。
LarryLarryLarry
LarryLarry
LarryLarry
Larry and Larry
names.outの内容は以下の通りです。
fredFRedFRED
FREDFRED
fredfred
fred and Fred
初めてのPerl 第9章正規表現によるテキスト処理 練習問題1
変数$whatに格納されている内容が三回連続して現れるものにマッチするパターンを書いてください。
#!/usr/bin/perl use strict; use warnings; use 5.010; my $what = 'fred'; =pod #入力値に対し$whatの内容を3回繰り返したものをマッチさせたい。 #もしwhatがfredだったら while(<STDIN>){ chomp; if($_ =~ m/($what){3}/g){ print "OK $_\n"; }else{ print "NG $_\n"; } } =cut $what = 'fred|barney'; while(<STDIN>){ chomp; if($_ =~ m/($what){3}/gi){ print "MATCHED $_ \n"; }else{ print "NOMATCHED $_\n"; } }
引数として与えたファイルの内容は以下のとおりです。
redfredfred
fredfredBarney
barneybarneybarney
fredbarneyfred
fred
fredbarney
barneyfredfred
実行コマンドは以下の通りです。
$ ./practice1.pl < names.txt
結果は以下の通りです。
MATCHED fredfredfred
MATCHED fredfredBarney
MATCHED barneybarneybarney
MATCHED fredbarneyfred
NOMATCHED fred
NOMATCHED fredbarney
MATCHED barneyfredfred
はじめてのPerl 第8章 正規表現によるマッチ 練習問題6
入力した行のうち、空白文字がある行を全て表示する新しいプログラムを作成してください。出力する業の末尾には、わかりやすいように目印になる文字を表示してください。(空白行が存在する行の末尾には*をつけて表示しています。)
#!/usr/bin/perl use strict; use warnings; use 5.010; while(<>){ chomp; if($_ =~ /(\s$)/){ print "$_ *\n"; #*まで空文字が含まれています。 }else{ print "$_ \n"; } }
入力値として与えたファイルの内容は以下の通りです。
全角スペースは空白文字とはみなされない。
Space2
space none
space3
space5
space none
spacenone
実行コマンドは以下の通りです。
$ cat names2.txt | ./practice6.pl
結果は以下の通りです。
全角スペースは空白文字とはみなされない。
Space2 *
space none
space3 *
space5 *
space none
spacenone