久々に愚痴

オイラの職業はUNIXサーバの保守や運用で所謂サーバ管理者的なことをしている。

この職の嫌な(?)ところは保守や運用だけあって考え方も保守的なところだ。
みんな、何かしら問題が発生しない限りスクリプトなどに手を出すことを非常に嫌がる。
潜在的バグが表面化する前に予防することに消極的で、ソースコードを直すことで発生するリスクより現状のリスクを抱えたままにする性があるように思える。
曰く「だって、今のリスクは既知のもので対処もできるけど、修正による新たなリスクは影響範囲がわからないじゃん。」
一理ある。けど、面白くない。
攻殻機動隊の公安6課みたいに、積極的に(犯罪じゃなくて)バグを潰す部隊が欲しいな、と思う。

今日なんか、某デーモン起動シェルにsetuidはしているけど$file/.profile等に記述されている環境変数が読み込まれていないことが判明したのだが、「じゃぁ全スクリプトを見直したほうが良いですね」と提案すると「いや、そこまでリスクを背負うことないでしょ。○○だけに絞りましょう。」と言われてしまい、ガックリ。

また、プロセス起動時の二重起動チェックのロジックに問題があって

for line in `ps -ef | grep -v grep | grep hoge.sh | awk '{print $2}'`
do
  echo "ERROR: $line"
  # エラー処理
done

とまぁこんな感じなんだが。

  • PIDだけ書かれても、デバッグに役立たねぇじゃないか
  • awk '{print $2}'した時点で変数がlineって何よ?
  • grep hoge.shって、.の意味分かってる?
  • ps -ef | grep '[h]oge\.sh' | awk '{print $2}'だよね
    • どうせならps -ef | awk '/[h]oge\.sh/ {print $2}'の方が良いよね
  • いや、PIDファイル作ってそれで管理しろよ

とか思うことがいろいろあって書き直したい衝動に駆られるのだが、それを許してくれなかったり。

作業ミスを0にしなさいって、それ自体が無理な話なのに、その実現のために何らかの仕組みを考案するならまだしも、人を縛るのが大好きなのか手順書にあるコードをコピペしなさいだって。それをさせたいなら、そこにいる忠実なるオペレータさんにやらせろよ。手順書にある間違いもキチンとそのままコピーしてペーストしてくれるよ。

あとさ、バージョン管理システムがないってどういうことよ? 実機に潜らないと確かなコードを見ることができないってのは狂っている。

ドキュメントに関しても保守されていなくて古い情報てんこ盛りのドキュメントは意味がないというより害悪でしかない。

さらに検証環境がきちんと用意されていないのも最悪。これ、バージョン管理システムがないのの次ぐらいにダメ。通常

  1. ローカルでコードレベルのテスト
  2. 検証環境で何回かテスト
  3. 統合テスト環境で2〜3ヶ月まわしてテスト
  4. やっと実装

くらいのやらないと保障できないっしょ。(金融系だともっと厳しい)

まぁともかく、やらせたい事とその環境の乖離が激しくてイライラが溜まってきた。書きなぐったら、ちょっと気が晴れたのでこれくらいで。
オチはない。