linux
ipアドレス別でサーバーに接続している数を調べるコマンド
-----------------------------------------------------------
netstat -tan | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -n
-----------------------------------------------------------
オプションの説明
a → すべてのネットワーク接続を表示する
n → DSN逆引きを行わない(ipアドレスで表示)
t → TCPのみを表示する
awk '{print $5}' → 5フィールド目を取り出す
cut -d : -f1 → デリミタ(区切り文字)「:」を指定。フィールド1を取り出す
sort -n → データを文字ではなく、数値として並び変える。次のuniq が隣り合った行しか比較しないので必要
uniq -c → 各行の前に出現回数を出力する。隣り合った行しか比較しない
sort -n → データを文字ではなく、数値として並び変える。出現回数順に並べ替える
カテゴリー:linux
error_log という名前のファイルを探したい場合
--------------------------------------
# find / -name error_log
--------------------------------------
ワイルドカードも使える
--------------------------------------
# find / -name error_*
--------------------------------------
カテゴリー:linux
まず、cron が使える状態であることを確認
-------------------------------------------------
# /etc/rc.d/init.d/crond status
crond (pid xxxx) を実行中... // 動いている!
-------------------------------------------------
ターミナルからサーバーにログインしてcrontabを編集
-------------------------------------------------
crontab -e
-------------------------------------------------
※ crontab -r は全消去なので注意
※内容確認は crontab -l
//編集内容。一分おきに「テスト出力」を追記
-------------------------------------------------
*/1 * * * * echo "テスト出力" >> /var/backup_sql/test.txt
-------------------------------------------------
日付入りファイルの場合
--------------------------------------------------
*/1 * * * * echo "テスト出力" >> /var/backup_sql/backup_`date +\%Y\%m\%d`.txt
--------------------------------------------------
日付は本来 date +%Y%m%d でいけるが、cron の場合 \ のエスケープが必要
一分過ぎたらファイルが出力されているか確認する
-------------------------------------------------
cat /var/backup_sql/test.txt
-------------------------------------------------
cron のログ確認ならこっち
-------------------------------------------------
tail -f /var/log/cron
-------------------------------------------------
※tail は最後の10行のみ表示
毎晩三時二分にシェルスクリプトを実行
-------------------------------------------------
#am03:02 execution
2 3 * * * /var/myshellscript/backupmysql.sh
-------------------------------------------------
backupmysql.sh の内容
-------------------------------------------------
#!/bin/sh
# バックアップの保存期間(days)
period=30
# バックアップ保存用ディレクトリの指定
dirpath='/var/backup_sql'
# MySQLrootパスワード
ROOTPASS=xxxxxxxx
# ファイル名を指定する(※ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`
# 指定したDBのスキーマおよびデータをすべて吐き出す ファイル名接頭辞はあれば
mysqldump -u root --password=パスワード データベース名 テーブル名 > $dirpath/ファイル名接頭辞_$filename.sql
# パーミッション変更
chmod 700 $dirpath/ファイル名接頭辞_$filename.sql
# 保存期間を過ぎたバックアップを削除
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/ファイル名接頭辞_$oldfile.sql
-------------------------------------------------
-------------------------------------------------
#サーバーが再起動したときにメールを送る
@reboot (dmesg ; tail -100 /var/log/messages)| Mail -s "`hostname` rebooted(サーバー再起動)" -r "from_cron" 送信メールアドレス@yahoo.co.jp
-------------------------------------------------
↑正確には crond が再起動したとき。送信メールサービスの再起動が完了していないと送信されないと思う
-sオプション:タイトル指定
-rオプション:送り主メールアドレス指定
カテゴリー:linux
www.○○○.com でアクセスしたときに、○○○.com にリダイレクトする方法
1.www.○○○.com を叩いたら、○○○.com のデータがあるサーバーにアクセスするように、DNS のゾーンの設定をする。
2.○○○.com のサーバー内の vhost.conf などの設定ファイルに以下の記述を追記する。
--------------------------------------------------
# www normalization
ServerAlias www.○○○.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.○○○\.com$
RewriteRule ^/(.*) http://○○○.com/$1 [R=301,L]
--------------------------------------------------
なお、△△△.○○○.com のように既にサブドメインがついている URL は対して、www.△△△.○○○.com というサブドメインのサブドメインをつける URL の記述は通常しない。www 自体がサブドメインのため。上記のやり方でも正規化できない。
うまくいかない場合は、ブラウザの情報を削除してからやってみる。はまった。
カテゴリー:linux, さくらインターネット
コマンド
-----------------------------------------------------
find ./ -name "*.*" -exec grep -l "tango_output" {} \;
-----------------------------------------------------
./ → 現在のディレクトリ以下を指定
-name "*.*" → .(ドット)を含むファイルをすべて検索
-exec → find の検索結果ひとつひとつに指定したコマンドを実行する。-exec grep だと grep が実行される
grep -l → -l は、検索条件にマッチしたファイル名を表示する。
grep -l "tango_output" → tango_output という文字列を含むファイルを探す。
{} → find でヒットしたファイル名やディレクトリ名に置き換えられる。
\; → ; をシェルの特殊文字である コマンドの境界とみなされないようにするためにエスケープしている
参考ページ
カテゴリー:linux