世の中、sh と言えば bash の情報ばかりで、面白くない。
が、 bourne shell の使いかたが良くまとまったサイトを発見。
こちら
https://www.gadgety.net/shin/tips/unix/shell.html
何かのプロジェクトで、そのプロジェクトHOME を絶対パスでローカルファイルに記しておいて、実行時に読み込み使いたい場合がある。
○ PHP
読み込むファイルを main.php, 読み込まれるファイルを header.php としたとき、main.php に
require_once('header.php');
と、パスを書かずに include すれば、main.php 並びにある header.php が読み込まれる。
正しくは
パスを指定しない場合は、 include_path の設定を利用します。 ファイルが include_path に見つからないときは、include は呼び出し元スクリプトのディレクトリと現在の作業ディレクトリも探します。
○ shell
読み込むファイルを main.sh, 読み込まれるファイルを header.sh としたとき、main.sh には次のように記述。
HERE=`dirname $0`
. ${HERE}/header.sh
最近、apache から nginx に乗り換えているが、nginx だと php がうまく動作しない場合に遭遇。
で、調べたところ、php のキャッシュ系Dir. が 770 で、かつ、グループが apache となっていることが原因と判明。
(ちなみに OS は CentOS7)
ls -l /var/lib/php/
合計 0
drwxrwx--- 2 root apache 6 12月 5 04:04 opcache/
drwxrwx--- 2 root apache 6 12月 5 04:04 session/
drwxrwx--- 2 root apache 6 12月 5 04:04 wsdlcache/
そりゃ nginx では書き込めない。なんだかなぁ。
で、次を実行して group:nginx に変更。
chown -R root:nginx /var/lib/php/*
確認
ls -l /var/lib/php/
合計 0
drwxrwx--- 2 root nginx 6 12月 5 04:04 opcache/
drwxrwx--- 2 root nginx 6 12月 5 04:04 session/
drwxrwx--- 2 root nginx 6 12月 5 04:04 wsdlcache/
で、他の Dir. はこのような問題ないか心配になり、オーナ(ユーザ) やグループで find する方法を調べた。
find /foo/bar/baz/ -user apache
find /foo/bar/baz/ -group apache
しっかし、CentOS(Linux?)面倒臭いよなぁ...
FreeBSD では、apache も nginx もオーナ:グループ は www:www なので、こんな事不要だもんなぁ。
ひゃー、4.4BSD ソースコードが github にある、知らなかった。
https://github.com/himrock922/4.4BSD-Lite2
# m/c/a
基本的には m の使用でOK
m/c/a の違いはこのへん
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%BF%A5%A4%A5%E0%A5%B9%A5%BF%A5%F3%A5%D7
# Xtime, Xmin
Xtime: 24時間単位(〜日単位)
Xmin: 分単位
# n/-n/+n
n: まさにそのとき
-n そのとき以降(そのときから今に向かった間)
+n そのとき以前(そのときから昔に向かった間)
# 例: 5時間前から今までの間に変化したファイル検索
find . -mmin -300
# 例: 3日前(の今)以前に変化したファイル検索
find . -mtime +3
[2017-04-14-1]のように、Mac/NFS が使えないので、再度、Samba に挑戦!!
[2017-04-12] で記述したように、
しかし、どうも Mac はキャッシュ読込が中心のようで、Unix でファイルを作成しても、Mac 側には反映されず(時間が掛かるのかな?)。
の問題を解決しなければ...
で、あの手この手でググッて、こんな情報をゲットした。
MacのFinderのファイル表示を最新の状態に更新する方法
https://keikenchi.com/mac-finder-refresh
ようは、RefreshFinder をダウンロード/インストールすれば、クリック一つで(sambaでも)Finder がリフレッシュされるという話し。
ちょっと情報が古いので心配だったが、うまく行きました。
RefreshFinder 自体は、ここからダウンロード。
https://soderhavet.com/bl/2014/10/01/refresh-finder/#.WPA2jFPyjys
これは、かなり嬉しいアプリで、Samba 環境でも問題なく作業できるようになったよん!!
[2017-04-12] に Mac/NFS/Symlink について熱く語ったのだが、どうも Mac+NFS が調子悪い。
例えば...
○ system panic で死んでしまう。
サーバの xxx.zip を mac アーカイブユーティリテイで開くと 100% panic
(ま、2回しか試していないが)
○ 死なないが処理できないケース
モノによるが、xxx.doc が開けない(windows で作成した doc が対象かな?)
その xxx.doc を mac/download にコピーしようとするとエラー発生してコピーできない
もしかすると ._xxx.doc を削除したせい??
○ 処理できたら、ファイル更新日付が超未来
パワポ開いて閉じたら、2076-11-29 になってしまった!!
-rwxr--r-- 1 foo bar 651264 11月 29 2076 zzz.ppt
あと気になっているのは、NFS でサーバのファイルをいぢっても、._XXX ファイルが生成されないこと。
もしかすると、MacOS が NFS 対象のディスクフォーマットは HFS+ と思ってしまい、イロイロなトラブルが発生するのかな??
いずれにせよ、恐くてとても使えないです。
只今、開発環境を Mac に構築中。
今まで Unix(FreeBSD)サーバと windows は SMB(Samba) でファイル共有していたので、Mac も SMB で共有した。
しかし、どうも Mac はキャッシュ読込が中心のようで、Unix でファイルを作成しても、Mac 側には反映されず(時間が掛かるのかな?)。
ま windows でもしばらく時間掛かるが...
こりゃたまらんので、数十年ぶりに NFS を設定。
いろいろトラブルあった(特に Mac の uid/gid 変更!)が、とりあえず Unix サーバのファイルが、Mac でも扱えるようになった。
が、Unix 側の symlink に Mac からアクセスできないトラブル発生。
なんだよ Mac の NFS-client ってサーバ側の symlink 扱えないのかよぅ! とか、すっかり Mac を悪者にして調査開始。
しかし違いました、サーバ側の symlink 設定の問題でした。
原因は、symlink 設定で絶対パスリンクしていたこと。
例えば、
/home/foo/aaa/a1 を /home/foo/xxx/a1 に symlink する時、
cd /home/foo/xxx/
ln -s /home/foo/aaa/a1 .
とすると、xxx/a1 は絶対パスで aaa/a1 をリンクする。
と、Mac 側では Mac の /home/foo/aaa/a1 とリンクしてしまうので、Mac 内に /home/foo/aaa/a1 がなければ(普通無い)エラーとなってしまう。
なので、これは相対パスにして
cd /home/foo/xxx/
ln -s ../aaa/a1 .
が正解。
その昔、NFS 全盛の頃(って何十年前だ)に、
「symlink は相対パスにしろ、絶対パスだと NFS でアクセスできないぞ」
と言われていたことを思い出し、懐かしくて涙出ました。
mac mini 買った。
で、windows では cygwin/X11 サーバに FreeBSD の X-client を生表示していたが、今回から ssh X11 forwarding を使ってみることに。
しかし
ssh -X foo
すると、
X11 forwarding request failed on channel 0
となり、NG 。
で、sshd_config などを確認してもおかしなところが見つからず。
と、ssh でのデバッグモードアクセスを発見。
ssh -v -X foo
結果、FreeBSD に xauth がインストールされていないことが判明。
... が、この FreeBSD は 9.1 と古くて ports も pkg もサポート切れで、xauth インストールできない。
わん、どうしようかな。
1. FreeBSD upgrade する
ううむ、メインサーバだしな、こりゃ恐いわ。
2. mac X11 の XQuartz を調べて生で使用する
出来るかも分からないし、たぶんネット情報もあまりないだろうな。
(ssh forwarding が主流だからな)
カンタンに設定できた!
上の記事参照
wiki から https://ja.wikipedia.org/wiki/Nice_(UNIX)
nice値:n1, nice値:n2 のプロセスの CPU時間の比率
(20 - n1) / (20 - n2)
例えば、最低優先度プロセス(nice:19)は、通常優先度プロセス(nice:0)に較べて 1/20 となる。
(20 - 19) / (20 - 0) = 1/20
お、しかし、最高優先度プロセス(nice:-20)は、通常優先度プロセス(nice:0)の、たかだか 2倍か。
(20 - -20) / (20 - 0) = 2
ちなみに、Linux タイムスライスは平均100ms だとか。
こんなサイトに出くわした。
http://qiita.com/richmikan@github/items/e051b5d882c3dd2a39c6
パーザも良い具合だが、UNIX哲学好きが更に良いよね!!
FreeBSD サーバのシンボリックリンクを samba 経由で windows ホルダとして使おうとしたところ、アクセスできない場合あり。
どうも、$HOME 以下の symlink は問題ないが、元がそれ以外の dir. を $HOME 下に symlink してとき NG っぽい。
で調べたところ、http://boota.mydns.jp/blog/?p=828 次の設定で解決。
smb.conf に
[global]
…
…
…
unix extensions = no
wide links = yes
その後 samba restart
samba 、長年使っているが知らなかった...
(Cygwin/X がメインだもんなぁ)