システム起動時に実行されるファイル
/Library/StartupItems/
システム標準のフレームワーク
/System/Library/Frameworks/
アプリケーションにより追加されたフレームワーク
/Library/Frameworks/
いろいろIT系のことをメモしてます。
システム起動時に実行されるファイル
/Library/StartupItems/
システム標準のフレームワーク
/System/Library/Frameworks/
アプリケーションにより追加されたフレームワーク
/Library/Frameworks/
Google Chromeを使っていると、フォームに入力した内容が勝手に記録されて、次回以降の同じフォームへの入力時には前回入力した内容が表示されて入力が楽になる「オートコンプリート」機能があります。
非常に便利な機能なのですが、間違って入力した場合に項目を消すにはどうすればいいのか分かりませんでした。
ググったところ、ChromeのサポートページにはShift+Deleteで削除できると書いてあったのですが、Macで同じように試しても削除できません。
調べたところ、Mac用のChromeの場合は、削除したいオートコンプリートの項目をカーソルキーで選択しておいてから、「shift – fn – delete」の組み合わせを押すと削除できました。
mysqlのログローテートで少しはまったのでメモしておきます。
mysqlではサーバーのエラーログの他にクエリーログやスロークエリーログなどがあり、これらを一日一回logrotateを用いてローテーションさせたいと思いました。
CentOSには /etc/logrotate.d/mysqld が用意されており、内容を確認すると、
# cat /etc/logrotate.d/mysqld
# This logname can be set in /etc/my.cnf
# by setting the variable "err-log"
# in the [safe_mysqld] section as follows:
#
# [safe_mysqld]
# err-log=/var/log/mysqld.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
# Then, un-comment the following lines to enable rotation of mysql's log file:
以下略
のように記載がありましたので、その通り実行しました。
まず、mysqladminを用いてflush-logsコマンドを実行するための専用ユーザー(reload)を作成します。
$ mysql -u root -p mysql
> GRANT RELOAD ON *.* TO 'reload'@'localhost' IDENTIFIED BY 'password';
次に、そのユーザーの情報を/root/.my.cnfに記載します。
# cat - > /root/.my.cnf
[mysqladmin]
user=reload
password=<secret>
^C
# chmod 600 /root/.my.cnf
最後に、/etc/logrotate.d/mysqld に次のように記載します。
(保存ファイル数などは目的に合わせて変更してください)
/var/log/mysql/mysqld.log /var/log/mysql/slow.log /var/log/mysql/query.log {
daily
missingok
rotate 4
compress
delaycompress
notifempty
create 640 mysql mysql
sharedscripts
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
env HOME=/root/ /usr/bin/mysqladmin flush-logs
fi
endscript
}
重要なのは
env HOME=/root/ /usr/bin/mysqladmin flush-logs
この部分で、パッケージインストール時点で用意されていたファイルには
env HOME=/root/
の記述がありませんでした。
logrotateはanacronから起動されるのですが、anacronは /etc/cron.d/0hourlyに記載された内容に従って、cronが/etc/cron.hourly/0anacronを読み込んで実行されます。
しかし、ここで /etc/cron.d/0hourly に
# cat /etc/cron.d/0hourly
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly
とHOME=/の記述があるために、rootユーザーのHOMEが/と認識されてしまいます。
/直下に.my.cnfを置くことでも対応可能でしょうが、上記のようにenvコマンドを用いることで対応できますので、今回はこのように記載しました。
gitを使っていて、addしてcommitしてpushまでしてしまってから「しまった!」と気付いてcommitを無かったことにしたい場合があると思います。
この場合の対処方法をメモしておきます(要:gitサーバの管理権限)
まず、ローカルリポジトリの内容を取り消します。
$ git reset --hard HEAD^
–hardを用いることで、ローカルの変更内容が元に戻ります。変更内容を戻したくない場合は–softを使用しましょう。
で、この状態でgit logすると履歴が戻っているのが確認できますが、pushしようとすると
$ git push
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'hogehoge.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
と言われてしまい、拒否されます。
このため、一旦サーバの内容を削除しちゃいます(笑)
$ git push origin :master
remote: warning: deleting the current branch To hogehoge.git - [deleted] master
もし、このコマンドに失敗する場合は、gitサーバ上の.gitconfigに次の設定を追加します。
[receive]
denyDeleteCurrent = warn
その後、再度pushします。
$ git push origin master
略
To hogehoge.git * [new branch] master -> master
以上です。
結構、危険なことをやってるので、慎重にやってください。
あるMacのアプリがどんなフレームワークを利用しているか調べたい時があると思います。
その場合は以下のようにすると、アプリが利用しているフレームワークが確認できます。
アプリが利用しているフレームワークの調べ方(例:iTunesの場合)
$ otool -L /Applications/iTunes.app/Contents/MacOS/iTunes
アプリのパッケージではなく、パッケージの中に含まれているプログラム本体を指定するのがコツです。
YosemiteでHomebrewなどを使ってosxfuseをインストールしようとすると、インストールは成功しても、sshfsなどの起動時に以下のようなエラーが出てロードできません。
/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext failed to load – (libkern/kext) not loadable (reason unspecified); check the system/kernel logs for errors or try kextutil(8).
the OSXFUSE file system is not available (71)
ログを見ると以下のようなログも表示されます。
com.apple.kextd\[19\]: ERROR: invalid signature for com.github.osxfuse.filesystems.osxfusefs, will not load
どうも、Yosemiteからはカーネルエクステンション(Kernel EXTension)に開発者の署名が必要になったせいらしく、
$ sudo nvram boot-args="kext-dev-mode=1"
を実行して再起動するとOKみたいな記事を見かけますが、これだと今後怪しいドライバが勝手に組み込まれる恐れが出てきます。
ってことで、せっかくアップルがセキュリティーを向上させてくれているので、
ここは素直に osxfuse公式ホームページ からパッケージをダウンロードするのが得策だと私は思います。
追記:
HomebrewのCaskroomを使うと以下のようにosxfuseと一緒にsshfsまで簡単にインストールできます。
$ brew install Caskroom/cask/sshfs
mysqlのフルダンプしたファイルには全てのデーターベースの情報が含まれています。
cronなどで一定間隔でバックアップする際に便利ですが、開発中に一部のデーターベースの内容のみリストアしたい場合には困ると思います。
この場合は、一旦フルダンプファイルをcsplitを用いて、データベース単位で分割します。
$ csplit dump.sql /CREATE\ DATABASE/ {*}
これを実行すると、カレントディレクトリにデータベース単位にファイルが分割されますので、あとは目的のファイルをgrepなどで探して
$ mysql -u root -p データベース名 < ファイル名
などと実行すればOKです。
ブログ作ってみました。
主に技術系のメモを残していく予定です。