どんなことでも

この人 blog を書くのだろうか?

定期的に実行する on UNIX

2011-02-26 07:28:00 | Unix
もっとマシな方法がある筈と思いつつ………。そして、多分 blog を漁れは過去のが見つかりそうだか。

試した環境
 HP-UX 11i の sh へ張り付け
(バージョンの最後の i は、iモードの i だそうな。iモード用にチューニングしたのかな?)
UNIX系 OS 全般の Born shell、ksh 辺りで動くと思います。


# 実行間隔 (秒)
interval=3600 # 1h
interval=600 # 10m

while true
do
date
「定期的に実行するコマンド」
sec=`date "+$interval - \( \( %H \* 60 + %M \) \* 60 + %S \) %% $interval"`
sleep `sh -c "expr $sec"`
done

0時00分00秒を基準に、interval 秒毎にコマンドを実行。

終了は ^C 等で。
クォートが上手くいかないので、一度 sh を通してクリーンナップ。これを無くしたいところだが………。


ちなみに、簡易版
注:定期的に実行するコマンドが interval より十分に短い場合のみ機能します。

while true
do
date
「定期的に実行するコマンド」 &
sleep $interval
done


いじょ、携帯より。書くの面倒だったなぁ。誤植には注意!

vmstat の値

2009-06-03 22:42:00 | Unix
vmstat とオプション無しで叩き、出て来た値を信じている人達発見。
ちょっと違うんじゃないのかな?と思って(このまま進むのもどうかと思ったので)、新人の強味で何も知らないふりで後ろから刺してみた。さて、どうなるか。

NEWS-OS システム ワークブック 改訂新版 1993年 1月31日 初版
P218

『うちでは昔からこれでやっいて、過去との継続性を考えると如何に正しい値であっても、変えられません』なんて答えも商用システムである以上は、正しい答えの一つだと思う。


→ 結果「知ってるけど、そういう依頼だから」とのこと。また、メモリだから 1行目で良いんじゃね爾箸癲

sendmail で SMTP認証サーバーへ送信する

2008-02-20 12:02:25 | Unix
サブミッションポートを使った SMTP 認証

自分のマシン (sendmail)
 ↓ (サブミッションポート 587番 / 認証付き)
プロバイダー

と送る方法です。

SMART_HOST で、自分のプロバイダーのメールサーバーを指定したは良いが、SMTP 認証が入って送れないなんていう話を聞いた。
そういう場合は Sendmail Authinfo で、出来るようです。あ、自分のメールアドレスが合っていることを確認して下さい。
書き換える場合は genericstable で。

指定行数のみを表示

2007-10-15 18:57:46 | Unix
時々ログファイルの先頭にログ以外の事を書く変なアプリがあったりします。
そういう時は
% sed -ne '2,$p'
としてやれば 2行目から最後までを表示してくれます。
ここで $ というのは、行末ではなく「最終行」を示します。
勿論、
% sed -ne '2,${/bar|baz/p;}' foo.log
というように、キーワード指定もできます。
さらには、
% sed -ne '/xml/,${/bar|baz/p;}' foo.log
とかも可能です。

vi : 名前付きバッファ

2007-09-29 01:22:28 | Unix
vi使用歴 10年の私が覚えていないコマンド。
Solaris 8 の /usr/bin/vi, /usr/xpg4/bin/vi で試しました。

名前付きバッファー
Solaris とかの vi では、編集ファイルを切り替えると y, Y で名前無しバッファーにヤンク(保存)したものは忘れられてしまいます。でも、名前付きバッファー(レジスター)にヤンクすると編集ファイルを切り替えても覚えていてくれます。
ということで、その使い方。

ヤンクする時「”○y」、「”○Y
 "ayG → カーソルから文末までを a レジスターにヤンクする。
 "aY → カレント行を a レジスターにヤンクする。
 "a10Y → カレント行から10行を a レジスターにヤンクする。

ペーストする時
 "ap → a レジスターからペーストする。

”○」で、レジスターの名前を指定して y or Y で、レジスタへヤンク。
”○」で、レジスターの名前を指定して p or P で、ペースト。

ed コマンドの場合
 :.,/any/y a → 今の行(.) から any がある行までを a レジスタへヤンク
 :put a → カーソルの位置に a レジスタを貼り付け。

実行例。ファイル「い」から、ファイル「ろ」へ一部コピー
方法1. 自動保存される名前付きバッファーを利用。
 vi を起動 『vi 「い」 「ろ」』
 コピーしたい部分を削除『dG』(カーソル行から文末)
 編集ファイルを「ろ」にする 『:n!』(「い」は保存しない)
 コピーしたい部分へ移動して貼り付け『"1p』

方法2. 明示的に名前バッファー(y レジスタ)を利用。
 vi を起動 『vi 「い」 「ろ」』
 コピーしたい部分をヤンク『"yy$』(カーソルの位置から行末まで)
 編集ファイルを「ろ」にする 『:n』(「い」は保存しない)
 コピーしたい部分へ移動して貼り付け『"yp』


レジスターの名前は a~z がユーザが自由に使える部分、0~9 はエディターが削除した文字列を自動保存します。
これで、vi のみでファイルA からファイルB へコピーすることができます。(X のウィンドウを 2つ開いたり、screen でコピーしなくても良いわけです) 普段は、FreeBSD 上で jelvis を使っているので、ファイルを切り替えても名前無しバッファーが引き継がれ、覚える必要がありませんでした。

マーク
 カーソルの位置を覚えさせて、そこへジャンプすることができる。
今のカーソルの位置を記憶させる。「m○
 ma → マークa に位置を覚えさせる。
マーク○の位置へ戻る「`○
 `a → マークa の位置へ戻る。
マーク○の行頭へ戻る「’○
 'a → マークa の行頭へ戻る。

:set nu=on と、行番号を表示させて行番号を覚えていたので、マークは使わなかった。忘れた時にマークの方が、簡単に思い出せると思うけど。

参照: vi(1) HP-UX 11i Version 2: September 2004
Elvis 2.1 Cut Buffers