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

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の空きがなくなり、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/

スマホだけ表示させたい!とか、
PCだけ表示させたいコンテンツや広告ってありますよね。

スマホしか対応してない広告をPCユーザーに見せても成果につながらないじゃないですか。。。

そんな時に使えるコードをご紹介します。WordPressとHTMLサイト、
両方のバージョンをご紹介します。

WordPressでスマホとPCの広告を分ける

テンプレートに直接広告タグを貼る場合

single.phpとか、
テンプレートファイルに直接コードを書く場合、

<?php if(is_mobile()): ?>
★スマホのみに表示させる広告★
<?php else: ?>
★PCのみに表示させる広告★
<?php endif; ?>

↑ このように書けばOK!

スマホ・PCと表示させる広告を分けるのではなく、
スマホのみに表示させたい広告がある場合以下のように書きます。

<?php if(is_mobile()): ?>
★スマホのみに表示させる広告★
<?php endif; ?>

逆に、PCのみに表示させたい広告がある場合以下のように書きます。

<?php if(!is_mobile()): ?>
★PCのみに表示させる広告★
<?php endif; ?>

ブログ投稿内に広告を貼りたい場合

まずはfunctions.phpファイルに

function pccontents( $atts, $content = null ) { 
	if(is_mobile()) {
		return '';
	} else {
return '' . $content . '';
}
}
function spcontents( $atts, $content = null ) {
if(is_mobile()) { return '' . $content . ''; } else { return ''; } }
add_shortcode('pc-mieru', 'pccontents'); add_shortcode('sp-mieru', 'spcontents');

↑ このように書いてショートコードを作成!

記事投稿画面で、

[pc-mieru]★スマホのみに表示させる広告★[/pc-mieru]
 [sp-mieru]★PCのみに表示させる広告★[/sp-mieru]

↑ こんな感じに書けばOK!

参考サイト様:【WordPress】 投稿記事・固定ページ内でパソコンとスマホのデバイスごとに内容を切り替える方法

HTMLサイトでスマホとPCの広告を分ける

HTMLサイトの場合、ちょっと荒業っぽいやり方になります(-`ω´-;A

2通りのやり方をご紹介しますので、お好きな方をお使いください。

JavascriptでスマホとPCの広告を分ける

HTMLファイルに以下のJavascriptコードを書けばOK!

<script type="text/javascript">
var getDevice = (function(){
	var ua = navigator.userAgent;
	if(ua.indexOf('iPhone') > 0 || ua.indexOf('iPod') > 0 || ua.indexOf('Android') > 0 && ua.indexOf('Mobile') > 0){
		document.write('★スマホのみに表示させる広告★');
	}else{
		document.write('★PCのみに表示させる広告★');
	}
})();
</script>

注意する所は、貼り付ける広告タグに改行が入っていると、
エラーになって、ちゃんと表示されません( ;∀;)

改行を削除されるか、改行前に \ を入れてください。


CSSでスマホとPCの広告を分ける

まずはCSSファイルに

.sp-mieru {
	display: none;
}
@media screen and (max-width: 640px) {
	.pc-mieru {
		display: none;
	}
	.sp-mieru {
		display: block;
	}
}

↑ このように書いて・・・・

HTMLファイルに

<div class="pc-mieru">★PCのみに表示させる広告★</div>
<div class="sp-mieru">★スマホのみに表示させる広告★</div>

↑ こんな感じに書けばOK!

↑このページのトップヘ