|
UNIXを良く知らずみようみまねでshellを作成しています。 ある処理のエラーをハンドリングして結果に対してメール を送信する様にしました。 /usr/bin/mail -s "hoge" megu@hoge.com < hoge.txt ここで質問なのですが、該当コマンドをプロンプト上で 実行すると処理が実行されません。 (実行中のまま戻って来ない?) 強制終了すると、dead.letterが更新されます。 該当処理を記載したshellを実行しても、上記コマンド迄 は実行されているのですが、該当mailコマンドの部分で 処理がされない様で、コマンドを実行した様にshell自体も 終了しません。 cronや他ツールで自動実行させる様にすると実行されます。 根本的なOSの知識なのか、環境の問題なのかさえも分かりません。 とても基本的な質問になるかと思うのですが、教えて頂ければと 思います。 |
|
はじめまして。質問させてください。 sin_port=0で空いているポート番号を自動取得できますが、 ・ここで取得されたくない番号を指定 ・決められた帯域内(5000〜6000など)で限定して取得 ・予め取得される範囲を取得 のいずれかを行いたいのですが、方法はありますでしょうか? |
|
>>4556 まんたろう > ポート番号25を使って、smtpサーバに接続してメールの > 送信をしているのですが、処理は、正常に終わるのですが、 > メールが送信されません。届きません。 うちの環境では正常に送信されました。telnet での送信や、メーラー 送信のパケット観察などを行って、成功/失敗時の違いを観察してください。 >>4557 megu - 「sh -x スクリプト名」として、実際に実行されているコマンドを確認する。 端末からの入力を待っているなら、リダイレクトまわりが怪しげな気が。 - dead.letter の中を見て、エラーを観察する (dead.letter の中にエラーが 記述されるのかは覚えていませんが) - mail コマンドが吐くエラーを観察する。標準出力・標準エラー出力を捨てて いるなら、捨てないようにする。 >>4558 カルネ Linux なら ip_local_port_range、NetBSD なら net.inet.ip.anonportmax、 FreeBSD なら制限方法がない (たぶん) など、OS によって異なります。 |
|
シェルで、dateコマンドで取得した時間から5分前の の時間を取得したいのですが、できるでしょうか。 date +%H%M%S と実行します。 結果として、「130530」が取得できます。 そこから、取得した、「1305030」から5分前の「130030」を 求めたいのですが、できるのでしょうか。 環境は、 Solaris、shです。 |
|
>>4560 べた 上にある方が、現実的な解です。 - perl で localtime(time-5*60) - GNU date をインストールして date --date '5 minutes ago' - http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=1382 的なやり方 - http://home.catv.ne.jp/pp/ginoue/bn/descend.html の「2002/04/02 ひとこと」 的なやり方 |
|
プロパーや一次請けが perl を嫌がったり、ましてや非純正な物 (GNU プロダクト)を入れるなんて駄目なんて悲惨な職場を経験したので... Solaris 付属の date コマンドに %T って有りますか? 無かったとしても date +%H:%M:%S って書き方は利用可能ですか? 結果として、13:05:30 が取得できるなら、予め IFS_OLD=$IFS ; IFS=":" して 2 番目のフィールドが 5 未満か? とか 1 番目のフィールドが 0 以下か? って 辺りを条件に繰り下がり処理を手作りするのもありますね。 |