
sun fire + Solaris9でシェルを作成しました。
目的は、1ヶ月前のログを削除する です。
で、こんなシェルを作成しました。
#!/bin/sh
# logmove.sh
DAY=`date +%d`
RMDAY=`env TZ=JST+735 date +%Y%m%d`
# 24H*31Day-9H=735
RMFILE=log_${RMDAY}.*
(以下省略)
しかし、この結果、$RMDAYには今日の日付しか返ってきません。これを
RMDAY=`env TZ=JST+159 date +%Y%m%d`
# 24H*7Day-9H=159
とすると、ちゃんと1週間前の日付が返ってきます。
dateの仕様なのか、シェルの仕様なのか良くわかりません。解決策はないでしょうか。
No.5ベストアンサー
- 回答日時:
該当する文書を間違えていました。
以下の文書です。Solaris 9 9/04 Reference Manual Collection - Japanese >> SunOS リファレンスマニュアル 5 : 標準、環境、マクロ >> SunOS リファレンスマニュアル 5 : 標準、環境、マクロ >> environ(5) – ユーザー環境
これによると、offsetできるのは0~24と取れるのですが...。
参考URL:http://docs.sun.com/app/docs/doc/816-3993/6ma82v …
No.6
- 回答日時:
TZ変数を変えてまで無理矢理やるよりもふつうは
GNUdate コマンドを/usr/local/bin などにコンパイル
してやったほうがいいと思います。
みなさま、ご回答ありがとうございました。
こちらでの調査結果を報告させていただきます。
本来SolarisではTZのoffsetとして0-24以外を指定した
場合は予測不可としており(man参照)、★たまたま★
計算できていたということです。この仕様は、
patch ID#112874-20「 SunOS 5.9: lgroup API libc Patch 」にて修正されており上記制限(offsetは0-24)
以外は保証されない となりました。
以上、報告させていただきます。
報告が遅くなりましたことをお詫びいたします。
#なんでぃ、結局bugかい! < 独り言
No.4
- 回答日時:
>TZ環境変数で使えるのは+-167というのはどこかに明記されているのでしょうか。
残念ながら、私は見つけることができませんでした。該当する文書としては、Solaris 9 のシステム管理(基本編)(817-4909)とかSolaris 9 のシステム管理(上級編)(816-3964)あたりと思いますが、いずれもここまでの説明はありませんでした。
数値は検証結果です。シェルを書いて-1000~1000くらいまでやってみたらいいですよ。
No.3
- 回答日時:
dateコマンドはどうしても現在の時刻の表示と設定が目的なのでどうしても限界がありますね。
この場合はシェルスクリプトということですが、perlの力を借りて
========================================================================
#! /bin/sh
# logmove.sh
PERL=/usr/bin/perl
# 60sec * 60min * 24hour * 31 day
OFFSET=`echo '-60*60*24*31' | /bin/bc`
RMDAY=`${PERL} -MPOSIX -e "print strftime \"%Y%m%d\", localtime(time+(${OFFSET}))"`
echo ${RMDAY}
========================================================================
というのはどうでしょうか。
もしくはいっそのことperlでこの手の運用スクリプトを書くというのも検討する価値があると思います。
No.2
- 回答日時:
TZ環境変数で使える値の範囲はJST-167~JST+167です。
24H*7Days-1Hですね。ですので、%mの値を計算式で加工するしかないようです。逆に以前私がこの手のシェルを作ったときはTZ=JSTの方法を知らなくて素直にそうしたことがありますよ。
--系のオプションはSolarisでは使えないことのほうが多いですね。
# この解、よい方法を知っていらっしゃるかたがいたら是非私も教えて欲しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxのシェル関数を作成して要件を満たす方法 1 2022/11/19 20:33
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- JavaScript gasについて 1 2022/05/31 21:51
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェル 会話形式でエンターキ...
-
UNIXシェルプログラミング、初...
-
「.」とは
-
BシェルとCシェル
-
↑で前のコマンドを出したい
-
正規表現とワイルドカードについて
-
telnetの制限
-
Cシェル内でBシェルの様な関数...
-
UNIX(hp-ux)のコマンド履歴↑↓
-
シェル内で自動ユーザ変更
-
.cshrc ファイルについて
-
違いについて
-
Kシェルに関して。
-
export と set は違うの?
-
msys(cygwin)で、シェルスクリ...
-
solarisのsetenvが無効
-
シェルスクリプトの中であるプ...
-
xtermのファイルの消し方について
-
Thunderbirdで既読にしても、シ...
-
Dirコマンドでフォルダ内ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェル 会話形式でエンターキ...
-
export と set は違うの?
-
.cshrc ファイルについて
-
ターミナルが全く入力できない
-
Cシェル内でBシェルの様な関数...
-
ubuntuの端末の左にカレントデ...
-
シェルとシェルの間で環境変数...
-
シェルスクリプトのbashとperl...
-
Cシェルでのファイルからの入...
-
シェルスクリプトに関する問題...
-
違いについて
-
コンソールでの上下左右矢印ボ...
-
『存在するかどうか分からない...
-
31日前の日付はいつ?
-
BシェルとBashの違い
-
mac os x10.6.4のターミナルでp...
-
シェル(ksh)で変数にある文字列...
-
Tabキー補完や↑キーのヒストリ...
-
tcshなのにスクリプト構文中のs...
-
msys(cygwin)で、シェルスクリ...
おすすめ情報