IOKプログラミング

phpやsshコマンド使い方、woredpress、seo等に関して個人的メモサイトです。

ディレクトリ下のファイルを一括パーミッション変更したい

 通常、chmodコマンドで特定のディレクトリ下を指定したパーミッション変更は、ワイルドカード(*)を利用しても1階層のみになる。

 サブディレクトリ下も含め特定のファイルをパーミッション変更させたい場合、次のようにfind結果出力にchmod指定を適用させよう。

$ find /var/www/cgi-bin/ -name \*.cgi -exec chmod 755 {} \;

 上記の例は、「/var/www/cgi-bin/」ディレクトリ下すべての拡張子「cgi」ファイルに、755属性を指定するものだ。ディレクトリや拡張子を変更すれば、いろいろなシーンに応用できるだろう。また、「chmod 755」の個所を「ls -l」などと指定すれば、パーミッション変更前に適用ファイルを確認することが可能だ。

find + chmodでパーミッションの一括変更

Webサーバ上のファイルのパーミッション(アクセス権)を一括で変更したい。ということがよくある。

 

■一括で、public_html以下のファイルを644へ変更する

$ find public_html -type f -print | xargs chmod 644  

または、

$ find public_html -type f -exec chmod 644 {} \; 

 

■一括で、public_html以下のディレクトリを755へ変更する

$ find public_html -type d -print | xargs chmod 755  

 または、

$ find public_html -type d -exec chmod 755 {} \; 

 

■SGID(グループIDのs)をとる

$ ls -l
drwxr-sr-x   2 towns3   other        512 Oct 18 18:23 images
$ chmod g-s images

■SGID(グループIDのs)を一括でとる

drwxr-sr-xとなっているディレクトリを確認する。

find . -type d -perm -02000
find . -type d -perm -02000 -print | xargs -i ls -ld {}



drwxr-sr-x   2 apache   apache       512 Jan 27  2005 ./imeges
drwxr-sr-x   2 apache   apache      1024 Nov 13  2002 ./products

一括でsを外す。

find . -type d -perm -02000 -print | xargs -i chmod g-s {}

i-nodeの使用量をディレクトリごとに出力する

i-nodeの空きがなくなり、dovecotのサービスが落ちてしまうトラブルがありました。

ディスクのi-node使用量はdfコマンドで知ることができます。

# df -i
Filesystem            Inodes  IUsed   IFree IUse% Mounted on
/dev/mapper/root
                     3276800 466270 2810530   15% /
tmpfs                 128814      1  128813    1% /dev/shm
/dev/vda1             128016     50  127966    1% /boot
/dev/mapper/home
                     3121152  53569 3067583    2% /home

しかし、dfコマンドはディスク全体のi-node使用量はわかっても、
各ディレクトリがどの程度i-nodeを使用しているかまではわかりません。

以下のワンライナーでカレントディレクトリ以下のディレクトリが
どの程度i-nodeを消費しているかわかります。

for dir in `ls -atl | grep -G "^d" | grep -v "\./" | awk '{print $9}'`; do echo `find ./$dir -true | wc -l` `pwd`/$dir; done | sort -nr

df -iでiノードが減少しているディスクを探して
そこのディレクトリにcdし、肥大化しているディレクトリを調べる。
その肥大化しているディレクトリにcdして、いらないファイルを消す。

の繰り返しで、i-nodeを使いまくっている部分を調べて、対処することができます。

# for dir in `ls -atl | grep -G "^d" | grep -v "\./" | awk '{print $9}'`; do echo `find ./$dir -true | wc -l` `pwd`/$dir; done | sort -nr
1195566 /home/mike
297540 /home/tora
235670 /home/kuro
19933 /home/shiro
19603 /home/sabatra
8397 /home/kijitora

ちなみにi-nodeがギリギリまで使われた原因はメールの溜まり過ぎでした。

メーラーの設定でサーバーにメールを残すようにしていて、ブクブクふくれあがっていました。

運用でカバーできないのであればquotaの設定等を適切に入れていかないとだめですね。

参照 bacchi.me:https://bacchi.me/linux/show-inode-usage/
ギャラリー
  • sshの置換するときの¥の使い方
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧
  • インターネット広告の料金一覧