|
昨日のカウンタ: 今日のカウンタ: |
という訳で昨日のウソの訂正です。・・・が、またまたウソだったようなので更に 3/7 の日記で訂正。
Rubyの話なんですが、String::chomp()が私の思い通りに動いていなかったようです。pidの入ってるファイルから数字を読み込んで、それがそのpidを持つプロセスが本当に cron_inet.rb かどうか調べるのですが、
pid = IO.readlines(CronPidFile)[0].chomp
とやってました。これでユーザzaurusではlauncher、ターミナルいずれからの起動でも、ユーザrootではターミナルからの起動でも思い通り動作していたのですが、root権限でlauncherからの起動ではうまく文字列を取得できていなかったようです(取得できてたけど untaint する必要がありました (3/7修正))。そこで
pid = IO.readlines(CronPidFile)[0].to_i.to_s
としてみたらうまく動きました。
よくわからないのが $/ = "\n" も、chomp("\n") でも文字列だけ取り出す事ができなかったっぽい事です。(ここでもウソ書いてたら申し訳ないんですが、今のところ状況としてそう判断しています)
ちなみに `/bin/ps auxw` はやっぱり空文字列しか返しません。
ファイルから読み込んだ文字列 str を eval(str) すると止まってしまうのも $/ 辺りに原因があるんじゃないかと思うんですが、よくわかりません。launcher からの起動では止まっちゃってもエラーが表示されないってのがしんどいです。
evalで詰まっていたのですが、 eval(str.untaint) で動きました。ユーザrootにてlauncherから起動した場合はセーフレベルが高いとか、なんかあるんでしょうか。エラーメッセージを見てないので(;_;) 推察するのみなんですが・・・。でも $SAFE = 1 で eval 禁止だし、$SAFE = 4 では eval 許可されるけど untaint は禁止されてるって事は、$SAFE = 0 の場合しか残らないと思うんだけど。セーフレベルの問題じゃないって事? あー、もどかしいっす。
もどかしいながらも、回避方法はわかったのでやっと前進しましたよ。
スクリーンショットも久々です。画像的には間違い探し的な状況には変化ないんですけど。
一番下の行、「キャンセル」「初期化」「保存終了」はちょっと前から動くようになっていました。
下から二行目の「動作、停止」と「再起動」はさきほどから動作するようになりました。実際には「再起動」は「設定読み直し&今すぐメール送受信 を意味する短い言葉」に置き換えて、実際の動作もそうする予定ではあります。