カレントディレクトリ内で更新日が最近の5日以内のファイルを見つける。-lsで詳細情報を付加。
find . -mtime -5 -ls
更新日が最近の5日以上前のファイルを見つける(こう書くと古い方を見てしまう)
find . -mtime +5
更新日がちょうど5日前のファイルを見つける
find . -mtime 5
カレントディレクトリ内で更新日が最近の5日以内のファイルを見つける。-lsで詳細情報を付加。
find . -mtime -5 -ls
更新日が最近の5日以上前のファイルを見つける(こう書くと古い方を見てしまう)
find . -mtime +5
更新日がちょうど5日前のファイルを見つける
find . -mtime 5
shiftコマンドを使用することで、シェルの引数を順に第一引数として呼び出すことができます
引数を1つずらす。
シェル・スクリプトに与えられた引数を1つずつ処理したい場合に役立つ。shiftの後に自然数Nを指定すると,その数だけ引数をずらす。つまりN+1番目の引数が最初の引数となる。
#!/bin/sh for i in `seq 1 ${#}` #引数の数だけループさせる do echo ${1} #第一引数を表示 shift #shift(ずらす) done
[tomozo@CentOS ~]$ ./shift.sh #引数が無い場合は何もしない [tomozo@CentOS ~]$ ./shift.sh 1 #引数が1個だけの場合は、1個だけ表示 1 [tomozo@CentOS ~]$ ./shift.sh 1 hoge "hogehoge" #引数が3個の場合は3個表示して終了 1 hoge hogehoge [tomozo@CentOS ~]$ ./shift.sh 1 2 3 4 5 6 7 8 9 10 #引数が10個の場合は10個表示して終了 1 2 3 4 5 6 7 8 9 10 [tomozo@CentOS ~]$
とあるクラウド上で、MySQLのMaster-Slave構成を組んでいるが、あるときSlaveサーバが載っているホストがダウンしたらしく、Slaveサーバもダウンした。
めでたく別ホスト上に自動で立ち上がってきたのだが、ブチッと切れたのでレプリケーションエラーが発生していた。よってSlaveを再構築することになった。
作業完了後は以下の確認をしたいため準備しておくこと。
mysqldump -u root -p --opt --single-transaction --master-data --all-databases > /tmp/Master-alldatabases.dmp.`date +%Y%m%d`
後ほどSlaveの設定をする際に、ポジションの情報が必要なので、上記手順で取得した dump から MASTER_LOG_FILE 、 MASTER_LOG_POS を確認しメモしておく。
grep -i 'CHANGE MASTER TO' /tmp/Master-alldatabases.dmp.`date +%Y%m%d` ----- CHANGE MASTER TO MASTER_LOG_FILE='binary_log.000044', MASTER_LOG_POS=117069861;
手順は略。環境によって具合良くやってください。
cd /var/lib
tar zcvf mysql.tgz mysql/
reset slave all;
slave status も Empty となり、 relay_log もリセットされる。
mysql -u root -p < /tmp/Master-alldatabases.dmp.`date +%Y%m%d`
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='slave_user', MASTER_PASSWORD='slavepasswd', MASTER_LOG_FILE='binary_log.000044', MASTER_LOG_POS=117069861; ----- start slave ;
sorryサーバ等で 503ページ を出力する際、そのページが css や画像を使っているのであれば、全てのリソースファイルを RewriteRule 対象外にする必要がある。
ErrorDocument 503 /sorry.html RewriteEngine on RewriteCond %{REQUEST_URI} !=/sorry.html RewriteCond %{REQUEST_URI} !=/resource/css/base.css RewriteCond %{REQUEST_URI} !=/resource/css/layout.css RewriteCond %{REQUEST_URI} !=/resource/images/logo.png RewriteRule ^(.*)$ - [L,R=503]
CentOS7になってから、否が応でもsystemdを使わなければならなくなりました…。
ので、特に使いそうなコマンドをメモっておきます。
操作内容 | SysVinit | Systemd |
起動 | /etc/init.d/sshd start | systemctl start sshd |
終了 | /etc/init.d/sshd stop | systemctl stop sshd |
強制終了 | PID探してkill -9 | systemctl kill -s 9 sshd |
再起動 | /etc/init.d/sshd restart | systemctl restart sshd |
設定反映 | /etc/init.d/sshd reload | systemctl reload sshd |
状態取得 | /etc/init.d/sshd status | systemctl status sshd |
自動起動を有効 | chkconfig sshd on | systemctl enable sshd |
自動起動を無効 | chkconfig sshd off | systemctl disable sshd |
自動起動の状態確認 | chkconfig --list | systemctl list-unit-files |
自動起動の状態確認 | chkconfig --list sshd | systemctl is-enabled sshd |
サービス一覧の表示 | ls /etc/init.d | systemctl --type service |
scponly ではなく、 OpenSSH の設定で実現します。
以前は scponly で実現をしていましたが、OpenSSH 4.9 からは chroot の機能がビルトインされているので、 scponlyをインストールする必要はありません。
onlyuser という名前のユーザーが SFTP で Apache の公開領域 (/var/www/) だけ操作できるように設定します。
まず /etc/ssh/sshd_config を変更します。SFTP の接続を処理するサブシステムを、標準の sftp-server から sshd 内部の internal-sftp に変更します。
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
次に末尾に以下の 3 行を追加します。
Match User onlyuser ChrootDirectory /var/www ForceCommand internal-sftp
Match User は対象ユーザー、ChrootDirectory は許可するディレクトリを指定します。
ちなみに、ここでForceCommandで internal-sftpを指定してるから、上記の標準設定はいらないんじゃない?と思ったのですが、標準設定を変えないとうまくいきませんでした。
パスワードを自動生成するためのコマンドです。
なおこのコマンドを使用するにはexpectパッケージがインストールされている必要があります。
mkpasswd -s 0 |sed -e "s/[1IlijO0o]/Z/g"
※紛らわしい文字が出た場合は "Z" に置換しています。
オプション | デフォ値 | 説明 |
-l | 9 | 生成されるパスワードの文字数 |
-d | 2 | パスワード中に含まれる数字の最低文字数を指定 |
-c | 2 | パスワード中に含まれる小文字の最低文字数を指定 |
-C | 2 | パスワード中に含まれる大文字の最低文字数を指定 |
-s | 1 | パスワード中に含まれる特殊文字の最低文字数を指定 |
find ./ -name '*' | xargs grep hogehoge
拡張子がphpのものだけならばfindの時点で絞ってあげればいい。
find ./ -name '*.php' | xargs grep hogehoge
find ./ -mtime -365 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024) }; END{print""};'
find ./ -mtime -365 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024/1024) }; END{print""};'