猫見の日々、又は sudo kill -TERM 1

市電が上る坂の途中の路地裏で暮らす、数匹の野良猫たちと

SMB 接続な NAS に Time Machine でバックアップする

2015-03-29 17:44:30 | OS X
AppleTalk 接続の NAS で Time Machine を使っていると例えば、





とか、There is something wrong with the volume's CNID DB, using temporary CNID DB instead. Check server messages for details. とかのエラーになって最後はマウントもできなくなり何もできなくなってしまった。

そうだ、NAS を smb 接続にしてみよう。

しかし、OS X 10.8 Mountain Lion では標準の設定では SMB 接続の NAS には Time Machine 経由でバックアップできない。ひと工夫いる。以下はMountainLionでSMBなNASにTimeMachine環境を構築する を参考に、実施したメモです。

ディスクユティリティで ~/Documents/任意.sparsebundle を 100MB(任意)で作成。





任意.sparsebundle を NAS に転送。

NAS の任意.sparsebundle をダブルクリックして、バックアップボリュームとしてマウントする。

これを Time Machine のバックアップディスクとして認識させるために、以下のコマンドを投入する(ここが肝!)。


sudo tmutil setdestination -a /Volumes/'ボリューム名(sparsebundle作成で指定した)'


ここで"システム環境設定/Time Machine"を確認すると、作成・設定したボリュームがバックアップ先ディスクとして表示される。試しにバックアップするとサイズ不足で失敗するが、sparsebundle イメージは後からサイズ変更できるのでこれでよい。





sparsebundle イメージをローカルで 1TB にサイズ変更。物理的な上限より大きく指定できた。

$ hdiutil resize -size 1t ~/Documents/TK2Mbp.sparsebundle






sparsebundle イメージを再度 NAS に転送 & マウントして、Time Machine バックアップを開始。





以上です。

WordPress MySQL 導入メモ(local; OS X)

2015-03-26 21:00:31 | OS X
WordPressをローカル環境にインストール(Mac OS X) に沿って MySQL を動かそうとしたらいきなりつまずいた。

$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

homebrew でインストールした時は動作確認したと思うが、メモを残してなかった、不覚。

「os x ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)」でググったら、どうもサーバー(mysql.server)が起動してない模様。

まず、Finer の検索窓に「mysql」を入力して「名前が一致」を指定して探すも出てこない。mysql は

$ which mysql
/usr/local/bin/mysql

にあるのに。Finder は全てのディレクトリーツリーは見てくれないのか?

ネットを漁ると、

$ mysql.server start

で起動できるとある。試してみる。

$ mysql.server start
Starting MySQL
.. SUCCESS!

おおお、できた。ここで導入のコースに戻れました!
さて、毎回コマンド打つのもあれなんで、"/Library/LaunchDaemons" の下に launchd のデーモンとして Mac 起動時に自動起動されるようにしておこう。

■user & password 設定
$ mysql -u ユーザー -p
パスワード

>>ERROR 1045 (28000): Access denied for user 'ユーザー'@'localhost' (using password: YES)

あれ??最初のインストール後のチェックでユーザー作っちゃたかな??
で、面倒くさいので root で行ってみる。

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.23 Homebrew

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

入れた。root だから一般ユーザーのアカウントとか見られないかな?これは宿題にしよう。

root は怖いので、別のアカウント作ろうかな?

MySQLではユーザーをユーザー名+接続ホスト名で管理しています。インストール直後とに登録されているのはユーザー名が「root」でホスト名が「localhost」のユーザーのみです。その為、ユーザー名には「root@localhost」と指定する必要があるのですが、ホスト名が「localhost」の場合に限って省略することが可能です。その為、ユーザー名には単に「root」を指定します。

MySQLに接続するユーザー名とパスワードの指定 - MySQLコマンドラインツールの使い方 より)

何だ、root でいいんだ。

■データベース確認
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.13 sec)

データベース "bipo" を文字セット "utf8" で作成
mysql> CREATE DATABASE bipo CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

■確認

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bipo |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

OK!!

DB を終了する
mysql> quit;

■WordPress の設定(wp-config.phpの編集)

wordpress ディレクトリにある、wp-config-sample.php を編集します。

WordPress のAuto Config の画面まできた。



設定を進めると
データベース接続確立エラー
データベース接続がうまくいってない...

MySQL の root ユーザー以外のユーザを作ってやってみる(http://wiki.minaco.net/index.php?MySQL%2FユーザとDB作成)。

(略)
mysql> SHOW GRANTS FOR yuj2t@localhost \G
*************************** 1. row ***************************
Grants for yuj2t@localhost: GRANT USAGE ON *.* TO 'yuj2t'@'localhost' IDENTIFIED BY PASSWORD '*E2A6687C54CEEDB2DDD23A9BFFF55A85DBA24A54'
*************************** 2. row ***************************
Grants for yuj2t@localhost: GRANT ALL PRIVILEGES ON `bipo`.* TO 'yuj2t'@'localhost'
2 rows in set (0.12 sec)

できた。このユーザでやってみる。

同じだ。今日はここまで!続きは明日!
解決しました!WordPress の設定ファイルのホスト指定を
localhost から
127.0.0.1
に変更したら WordPress のインストール画面になり無事インストールできました!
Tanks http://fundive.tk/wp/?tag=os-x-server !!

停止した Time Machine を再接続してバックアップする

2015-03-16 11:52:18 | OS X
相変わらずバックアップが進まない、というか度々 Wi-Fi LAN 接続が切れて Time Machine が停止している模様。こういう場合、LAN 再接続されても Time Machine は復活してくれない。なら、ちょっと力技でやってみましょうと Shell Script を書いて launchd に登録してみた。

最終的には Wi-Fi LAN、というか LAN 接続(ネットワークマウント)が途切れたら再接続して、Time Machine を再起動させたいがここは簡便に、10分おきに launchd で Time Machine が動いてるかチェックして必要なリソースをマウントして Time Machine を再起動させることにする。

とにかくいつ止まるか分からないバックアップは、たとえ手動で再開できても骨が折れるものです。


#!/bin/bash
#set -vx
#set -e
trap '/bin/rm /tmp/watchTimeMachin;exit 2' 2 3 9 15
machinead='192.168.200.26'
sharedir='TTMD%20\(usb\)'
mountpoint='/Volumes/Data'
bacupmachine='Tk2MBP'
timemachine_name='Time Machine Backups'
logs='/tmp/watchTimeMachine.log'
flag='/tmp/watchTimeMachine'
if test -e $flag; then
  /bin/echo "$0 is Running. exit" >> $logs 2>&1
  /bin/rm $flag
exit 1
else
  /usr/bin/touch $flag
fi
if test ! -e $logs; then
  /usr/bin/touch $logs
  /bin/chmod 666 $logs
  /bin/date >> $logs
fi
status=`/usr/bin/tmutil status | /usr/bin/grep -c "Running = 1"`
if test $status -ne 0; then
  /bin/echo "status is $status. Time Machine is Running. exit" >> $logs
  /bin/rm $flag
  exit $status
else
  if test -d "/Volumes/$timemachine_name"; then
    /usr/bin/tmutil startbackup --destination `/usr/bin/tmutil destinationinfo | /usr/bin/awk -F : '/ID/ {print $2}'` >>$logs 1>&2
    /bin/rm $flag
    exit 0
  fi
fi
if test ! -d $mountpoint; then
  /bin/mkdir $mountpoint
fi
/sbin/mount | grep "$machinead/TTMD" | /usr/bin/grep smbfs >/dev/null
if test $? -eq 1; then
# ここは shell 変数を使ってやるとどうしてもクォートで囲まれてうまくいかないので、直書きにした
  /sbin/mount_smbfs //GUEST:@192.168.200.26/TTMD%20\(usb\) /Volumes/Data 1>>$logs 2>&1
fi
/sbin/mount | grep $bacupmachine > /dev/null
if test $? -eq 1; then
  /usr/bin/hdiutil attach -noverify "$mountpoint/$bacupmachine.sparsebundle" 1>>$logs 2>&1
fi
err=$?
if test $err -ne 0; then
  /bin/echo "mount was failed. error is $err" >>$logs 2>&1
  /bin/rm $flag
exit $err
fi
/bin/date >> $logs
volume_stat=`/usr/bin/tmutil status | grep 'DestinationMountPoint = "/Volumes/$timemachine_name"'`
if test $volume_stat -ne 0; then
  /bin/echo "invalid volume mounting" >>$logs 1>&2
  /bin/rm $flag
  exit $volume_stat
else
# Thanks http://d.hatena.ne.jp/daidai7/20130225/1361806444
  sudo tmutil setdestination -a "/Volumes/$timemachine_name"
fi
/usr/bin/tmutil startbackup --destination `/usr/bin/tmutil destinationinfo | /usr/bin/awk -F : '/ID/ {print $2}'` >>$logs 1>&2
echo "status is $status. TimeMachine is Starting." >> $logs 1>&2
/bin/rm $flag
exit 0


確認は、


$ launchctl list link.bye-bipolar.watchTimeMachine.plist

{
 "Label" = "link.bye-bipolar.watchTimeMachine.plist";
  "LimitLoadToSessionType" = "Aqua";
  "OnDemand" = true;
  "LastExitStatus" = 0;
  "TimeOut" = 30;
  "StandardOutPath" = "/var/watchTimeMachine.log";
  "StandardErrorPath" = "/var/watchTimeMachine_error.log";
  "ProgramArguments" = (
  "/bin/bash";
  "/Users/yj2t/tools/watchTimeMachine.sh";
  );
};


で。「"OnDemand" = true;」を指定しているので、load されるや否や登録したプログラムが起動される。
終了は、


$ launchctl unload /Library/LaunchDaemons/link.bye-bipolar.watchTimeMachine.plist



これで Time Machine でバックアップしてるのを忘れて他の作業ができるようになりました!
ただ、頻繁にWi-Fi LAN が切断(?Time Machine がアンマウント)されるので、それを知る方法は宿題にする。
      ↓




Apple 純正でない NAS に Time Machine でバックアップする

2015-03-12 13:17:00 | OS X
OS X 10.6 か 10.7 だった頃、AFP 接続の Apple 純正でない NAS に Time Machine で NAS (Lacie Network Space 2)に Backup できていた。もしかしたら以下のおまじないをターミナルで打ち込んでいたかも知れない。


$ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1



バックアップ先が 1GB でバックアップ元(650GB)に比べて余裕がなかったので、じきに満杯になってしまった。バックアップ先がいっぱいになった場合、古いデータから削除されていくはずだがそうならず Time Machine のバックアップは放置していた。

最後のバックアップから二年あまり経ち、OS を10.8 に上げ、再び Time Machine のお世話になろうとバックアップ先を初期化した。ところがバックアップが始まって間もなく(あるいはバックアップ作成の準備中に)、カーネルパニックが起きるようになってしまった。NAS の ファームウェアは最新にして OS X 10.9 までサポートされているはずなのに。

結局、NAS を AFP でなく SMB 接続で試みることにした。一度バックアップ先として登録されたら本来なら要らない手順だが、ターミナルで以下のコマンドを打って sparsebundle ディスクイメージをマウントしてからバックアップを始めることにした。


$ hdiutil attach /Volumes/TTMD\ \(usb\)/Tk2MBP.sparsebundle
/dev/disk1 GUID_partition_scheme
/dev/disk1s1 EFI
/dev/disk1s2 Apple_HFS /Volumes/Tk2MBP



それでもなかなかバックアップが進まない時がある。




そういう時はあきらめて一度バックアップを停止してアンマウントして、もう一度マウントからやり直ししてる。なんだかなー…

ページを開けませんでした(Safari で ssl 接続(https://~)ができない)

2015-03-07 13:25:53 | OS X


Safari だけに起こった現象。まずSafari をリセット。そして Chrome や FireFox では問題ないので、キーチェーンがからんでいると予想。他のアカウントでは起きないので、当該アカウントのキーチェーン(ログイン)を退避させ、うまく動いているキーチェーンと差し替えたが及ばず。ええ、キーチェーンの Keychain First Aid では問題なかったです。

結局本家のこれが当たりでした。

証明書が無効または間違っている

次の手順にそって、受け付けられた証明書のキャッシュをリセットします。
Finder を開きます。
「移動」メニューから「フォルダへ移動」を選択します。
「移動」ウインドウに「/var/db/crls/」と入力します。
「移動」をクリックします。
crlcache.db ファイルおよび ocspcache.db ファイルをゴミ箱にドラッグして削除します。
管理者のパスワードを求められたら入力します。
システムを再起動して、問題が発生しないかテストします。

アップルサポートページ https://support.apple.com/ja-jp/TS5202 より)

灯台下暗し...

OS X: /etc/sudoers(sudo 権限)と launchctl のデバッグレベル設定

2015-03-02 21:03:30 | OS X
launchctld と syslogd が CPU を占拠してファンが回りっぱなしになるので調べてみた。

コンソールを立ち上げると猛烈な勢いでログを吐いている(system.log)


Mar 2 21:27:43 Tk2MBP com.apple.launchd[1]: *** process 1 exceeded 500 log message per second limit - remaining messages this second discarded ***


「すべてのメッセージ」を指定すると...




とんでもないことになってる。


2015/03/02 21:28:23.020 com.apple.launchd[1]: MIG demux succeeded.


あたりでググってみてもたいした収穫はない。
MIG が Mach Interface Generator と分かったくらいだ。

当座のしのぎで、


$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist


と syslogd を黙らすことにした。
ここで頭をひねった。これはログを吐いてるひとの問題ではなくて、デバッグレベルとかそういう類いの問題ではないか、と。

// しばらく放置してた

後日別件。ターミナルで sudo を叩くも、


xxx is not in the sudoers file. This incident will be reported.


と言われて /etc 以下のファイルがいじれないのでちょいと調べてみた。
したら、Apple のデベロッパーサイトで launchctl の man ページ(OS X Man Pages)がヒットした!!

DESCRIPTION
launchctl interfaces with launchd to load, unload daemons/agents and generally control launchd.
launchctl supports taking subcommands on the command line, interactively or even redirected from stan-dard standard
dard input. These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf to be read at the
time launchd starts.


ほうほう。/etc/launchd.conf を覗いてみる。


limit maxproc 1000 2000
log level debug


debug??? これはビンゴでしょう!!

log level warningに変更して save。でもこれが読み込まれるのはシステム起動時だよな。今作業してて再起動したくない。またとりあえず、syslog を止めておく。

さて、/etc/sudoers(sudo 権限)
まずは /etc に移動してファイルバックアップ。


$ sudo cp sudoers sudoers.orig


編集


$ sudo visudo -f sudoers sudo visudo


中身


.
# User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
.
.


admin グループのユーザは、sudoer になれるということらしい。さっき sudo がうまくいかなかったうまくいったのはなぜだろうか??