古いファイルの削除

表題の通り。`find`でN日以上前に作成されたファイルを削除したい、といった場合等に使う。

■ 環境

  • Linux

■ mtime/ctime/atime

普段は”mtime“を使用している。”ctime“はパーミッションが変わった等の時間なので、ファイル操作を行っている限りは”mtime“で特に問題はないであろう。作成日時だったり、内容変更の日時だったり。

というわけで、下記のように実行している。下記の場合は3日以上前に作成もしくは更新されたファイルの一覧を取得する場合である。

$ find . -type f -mtime +3

いつもここでハマったりするのだが、確認の為に”-ls“オプションを付けるのだが順序が問題になる。試しにローカルのファイルでやってみた場合。

$ find . -type f -ls -mtime +1
5134840      8 -rwxr-xr-x    1 withsin   staff      361 12 14 11:09 ./XXXXXXXX.sh
5134040      8 -rw-r--r--    1 withsin   staff     3274 12 14 10:57 ./XXXX.json
5471878     16 -rw-r--r--    1 withsin   staff     4468 12 19 11:16 ./XXXX.sh
5471934      8 -rw-r--r--    1 withsin   staff      743 12 19 11:17 ./README.md
$
$ find . -type f -mtime +1 -ls
5134840      8 -rwxr-xr-x    1 withsin   staff      361 12 14 11:09 ./XXXXXXXX.sh
5134040      8 -rw-r--r--    1 withsin   staff     3274 12 14 10:57 ./XXXX.json
$

-ls“の場所で結果が異なる。というか”-mtime“が効いていないようである。なので注意。

最後に削除までするには下記のように行う。

$ find . -type f -mtime +3 | xargs rm

`find`だけでもできる。

$ find . -type f -mtime +3 -exec rm {} \;

最後の” \;“をよく忘れてエラーになることが多いので前述のパイプでやることの方が多い。

以上。

MySQL@Dockerに接続

表題の通り。先日稼動させたWordPressに使っているMySQLのコンテナ。直接DBの中身を見たかったのでやってみる。

■ 環境

  • MySQL 5.7.16
  • Docker for Mac 1.12.3
  • Mac OSX El Capitan

■ container経由

下記のように起動しているMySQLのコンテナ。

$ docker run -d --name database -e MYSQL_ROOT_PASSWORD=test mysql

別途MySQLのコンテナを起動し、そのコンテナ経由でアクセスを行う。

$ docker run -ti --rm --name client --link database:server mysql mysql -hserver -uroot -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, 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>

MySQLサーバのコンテナを起動した時の”root”のパスワードでアクセスができた。

以上。

■ 関連

Apache httpd LoadModules

Apache Httpdでの表題の件を調べたい。モジュールをちゃんと読んでいるのだろうか?と疑問に思う点があったので確認。

■ 環境

  • Apache httpd 2.4.23
  • Amazon Linux

■ static

随分と前によく使っていたのは下記である。

$ httpd -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
$

自身でコンパイルしていインストールしていたので、ほとんど静的モジュールとして組み込んでいた。

しかし最近はパッケージ管理で、あるものを入れているという事がほとんどなので、動的モジュール(DSO)はどうやったら見れるかな?と疑問に。

■ shared

下記の方法で見られるようである。

$ httpd -M
Loaded Modules:
  core_module (static)
  so_module (static)
  http_module (static)
  access_compat_module (shared)
  actions_module (shared)
  alias_module (shared)
  :

静的モジュールも含めて全てのモジュールのようだ。

$ httpd -h
Usage: httpd [-D name] [-d directory] [-f file]
             [-C "directive"] [-c "directive"]
             [-k start|restart|graceful|graceful-stop|stop]
             [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
  -D name            : define a name for use in  directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed vhost settings
  -t -D DUMP_RUN_CFG : show parsed run settings
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
  -t -D DUMP_MODULES : show all loaded modules
  -M                 : a synonym for -t -D DUMP_MODULES
  -t -D DUMP_INCLUDES: show all included configuration files
  -t                 : run syntax check for config files
  -T                 : start without DocumentRoot(s) check
  -X                 : debug mode (only one worker, do not detach)
$

以上。

WordPress@Docker

表題の通り。

■ 環境

  • WordPress 4.7
  • Docker for Mac 1.12.3
  • Mac OSX El Capitan

■ container

公式のコンテナが公開されているのでこれを参照する。

library/wordpress – Docker Hub
https://hub.docker.com/_/wordpress/

このコンテナを利用する。

$ docker pull wordpress

さて起動しようかと思ったら、`mysql`のコンテナも必要そうである。というわけでこちらも取得。

$ docker pull mysql

■ mysql

取得した`mysql`のコンテナを起動する。

$ docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=wordpress mysql

■ wordpress

続いて`wordpress`のコンテナを起動する。

$ docker run -d --name wordpress -e WORDPRESS_DB_PASSWORD=wordpress --link wordpressdb:mysql -p 8080:80 wordpress

先に起動している`mysql`のコンテナを利用している。

各項目を入れていったら起動した。

もちろんではあるが英語だった。日本語版が使いたいなーと思ったらそれも公式ではないがあるらしい。

$ docker pull bakudankun/wordpress-ja
$ docker run -d --name wordpress -e WORDPRESS_DB_PASSWORD=wordpress --link wordpressdb:mysql -p 8080:80 bakudankun/wordpress-ja

公式の`wordpress`のコンテナをforkしているようなので、これを利用させてもらった。

これで日本語化された。

とりあえず画面が確認できたのでOKとする。

以上。

Kali Linux on Docker

表題の通り。ふとしたことで知ったのでメモ。

■ 環境

  • Kali Linux
  • Docker for Mac 1.12.3
  • Mac OSX El Capitan

■ Kali Linux

DockerHub上では”OFFICIAL REPOSITORY“とはなっていないが、”Official Kali Linux Docker“だそうである。

kalilinux/kali-linux-docker
https://hub.docker.com/r/kalilinux/kali-linux-docker/

また下記の記事もあった。

Official Kali Linux Docker Images Released
https://www.kali.org/news/official-kali-linux-docker-images/

■ Docker

コンテナイメージを取得する。

$ docker pull kalilinux/kali-linux-docker

起動してみる。

docker run -ti --rm --name kali kalilinux/kali-linux-docker /bin/bash

あとは、下記を参考に、必要なパッケージを入れれば使えるのだろう。

Kali Linux Metapackages
https://www.kali.org/news/kali-linux-metapackages/

今まではVMを作成して、ISOイメージからインストールして、とやっていたがこれの方が楽にいろいろ試せそうである。

以上。

■ 関連

Kali Linux

parrot on Docker