cronと環境変数について調べた
なんかよくよく考えると環境変数って謎
— やまま (@yamacent) 2015, 6月 4
cronで定期的に実行するスクリプトに、DBのパスワードとかファイルに書きたくない文字列を環境変数で与えるのってどうしたらいいんだ?
— やまま (@yamacent) 2015, 6月 4
恒久的な環境変数というか。
— やまま (@yamacent) 2015, 6月 4
恒久的な環境変数というのがそもそも矛盾している?
すべての環境変数はシェルへのログイン時に定義されているの?
— やまま (@yamacent) 2015, 6月 4
cronが実行されるときの環境変数の状態はどうなってるんだろう
— やまま (@yamacent) 2015, 6月 4
デーモンが参照する環境変数はデーモンを起動したときの環境変数の状態がキャプチャされるのかな?クロージャみたいな
— やまま (@yamacent) 2015, 6月 4
デーモン起動・終了時実行の環境変数(パス)の違いに注意 http://t.co/oi6roeOq7n
— やまま (@yamacent) 2015, 6月 4
やっぱり直接スクリプトを実行するとそのときの環境変数が使われるんだな。serviceコマンド使うと(細かい挙動はOS等に依るが)ニュートラルな状態の環境変数になる。
/ デーモンの起動・終了にはserviceコマンドを利用しよう http://t.co/ux4NJkHJrO
— やまま (@yamacent) 2015, 6月 4
さては、たぶん俺にはプロセスという視点が抜けてるんだな
— やまま (@yamacent) 2015, 6月 4
いまこそ積ん読してた「入門UNIXシェルプログラミング」を読むとき
http://t.co/zc4judkPCz
— やまま (@yamacent) 2015, 6月 4
そして読んだらなんとなく分かった。いい本。
— やまま (@yamacent) 2015, 6月 4
要は、今のプロセスだけで有効なのがシェル変数で、それをexportすると環境変数になる。環境変数は親プロセスから起動された子プロセスにキー・値がコピーされる。値渡し。子プロセスから親プロセスの環境を変えることはできない
— やまま (@yamacent) 2015, 6月 4
これはYesだな
https://t.co/k3h1WqMK9D
— やまま (@yamacent) 2015, 6月 4
やっぱり恒久的な環境変数ってのは変だな。環境変数は各プロセスごとに持つもので、子プロセスに引き継がれる。
https://t.co/K3mrKvmXNk
— やまま (@yamacent) 2015, 6月 4
cronについては実験だな
— やまま (@yamacent) 2015, 6月 4
cron実行時の環境変数を設定 | admin note http://t.co/zvx1oBIhrv
— やまま (@yamacent) 2015, 6月 4
cron上でのコマンド実行を再現する - Qiita http://t.co/N3fBKyakwZ #feedly
— やまま (@yamacent) 2015, 6月 4
cronではたぶん無理やな。crontabにパスワード書くしかないか
— やまま (@yamacent) 2015, 6月 4
それかcrontabから呼び出すスクリプトに書くか。いずれにせよどっかのファイルには書かなきゃいけなそう
— やまま (@yamacent) 2015, 6月 4
ということで、結局crontabで登録したスクリプトにパスワードなど設定値を書いた。
crontabはこんな感じ。
$ crontab -l 00,30 * * * * path/to/script >> path/to/log 2>&1
リダイレクトについてもいろいろ初めて知った。
しかし『入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界』、買ってからほとんど読まずに今まで積ん読してたけど、読んでみたら平易で明快でいい本。とりあえず今日は調べたい部分だけつまみ食いしたけど、前半だけでも一回通読しといた方が生産性上がって長い目で見たときに時短になりそう。結構しょうもないことで詰まってること多いからな…