|
Perlなのですが、sync(fsync?)を使って 書き込みを実現しようとしています。 書き込み後、正しく書けたか、ファイルの比較や サイズの取得をやろうとしています。 今一、Perlのモジュールとかライブラリとかが わかりません。 参考になるものありませんか。 また、どのようにすればよいですか。 |
|
findコマンドの「-perm」指定での検索について findコマンドで、ファイルの権限の検索をする場合、 ユーザ、グループ、その他の所有者に権限を設定して 実施しますが、ユーザ、グループ、その他所有者を 表す「u」、「g」「o」の前に、「-」があるかないかで 状態が変わります。 「u」、「g」「o」の前の「-」にはどのような意味が あるのでしょうか。 # find . -type f -perm o+w # find . -type f -perm -o+w # find . -type f -perm -g+w,o+w # find . -type f -perm -g+w,-o+w |
|
>>4781 べた http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html がわかりやすいかと思います。 -perm -mode mode で指定されている許可属性ビットのすべてがファイルでも立っていたら真。 -perm +mode mode で指定されている許可属性ビットがファイルでどれか一つでも立っていたら真。 |
|
おしえてください |
|
VMwareServer(無償版)を使ってlinux4を2台(A、B)を仮想環境を使ってインストール しました。(ethernetはnetwork connectionはHost-only) linuxのファイアウォールを無効にし、bindをカスタムでインストールし 特に設定を変更しないで、/var/named/etc/chroot/etcフォルダにnamed.conf を作成しました。 AサーバのVゾーンの問い合わせについては、zoneファイルから名前解決はできますが、 Xゾーンについてはforwardを使ってBサーバに転送するように設定しましたが Xゾーンの名前解決ができません。(Xゾーンについては、Aサーバからの問い合わせ に関しては、Xzoneファイルで解決するように設定してあります) AサーバからXゾーンPCに対してdigコマンドを実行すると、 AUTHORITY SECTION : 518400 IN NS F.ROOT−SERVER.NET ・・・・ が記録されます。 何か原因等は考えられるでしょうか。 ちなみにforwardの設定は以下のようにしてあります。 ご教授のほう、よろしくお願いします。 zone "X" { type forward; forward only; forwarders { 0.0.0.0; #Bサーバのアドレス }; |
|
解決しました。 recusionがnoになっていたようです。 |
|
>4782 ありがとうございます。 読んでみます。 |
|
>>4782 68user ありがとうございます。 読んでみます。 |
|
シェルで、FTPを自動実行しています。 FTPの接続が失敗した場合、ログイン・パスワードが間違っていた場合、 getするファイルが存在しなかった場合など、異常を判断したいのですが、 例えば、 0:正常終了 1:実行エラー みたいな感じで、、、。 リターンコードを取得することができるのでしょうか。 UNIXのFTPですとファイル転送に失敗してもリターンコードが、”0”が 返ってくると聞いたのですが、最後に、byeを実行しているので、"0”で 返ってきます。 以下のような内容でやっています。 ftp -v -n [IPアドレス] <<END > /dev/null 2>&1 user [ユーザ名] [パスワード] cd [リモートディレクトリ] lcd [ローカルディレクトリ] get [getするファイル名] bye END エラーだけをファイルに出力してみたのですが、接続エラーしかでず、 ログインの失敗やファイルが存在しないエラーは出力されませんでした。 ftp -v -n [IPアドレス] <<END 2>ftp_error.log > /dev/null >&1 すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ があるかないかをgrepでみるしかないのでしょうか。 Not connected. 530 Login incorrect. Login failed. 530 Please login with USER and PASS. 550 getするファイル名: No such file or directory. |
|
>>4788 べた ftp コマンドを使う限りは > すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ > があるかないかをgrepでみるしかないのでしょうか。 が無難です。また、どのようなエラーがどこで発生したかをプログラム上で 突き止めようとせず、行頭の 4xx か 5xx にマッチするものがあれば全て エラーとすることをお勧めします。 これ以上を求めるならば、Perl + Net::FTP モジュールなどで FTP クライアントを 作成するのがよいとわたしは思います。 |
|
>> 4789 ありがとうございます。 必要な、エラーすべてをgrepしようと考えていました。 行頭の 4xx か 5xx にマッチするものがあれば全てエラー とするでやつてみます。 ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないのですが、メッセージの内容で見た方がよいの でしょうか。 |
|
>>4790 べた > ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないの > ですが、メッセージの内容で見た方がよいのでしょうか。 数年ほど前に同じようなことをやっていましたが、そのときはどうやったの だったか…。 ・ftp コマンドの終了ステータスが >0 ならエラー ・2xx がひとつもなかったら認証以前で失敗とみなしてエラー のいずれかだったような気がします。 |
|
>>4791 68user >・ftp コマンドの終了ステータスが >0 ならエラー >・2xx がひとつもなかったら認証以前で失敗とみなしてエラー ありがとうございます。 なるほど、2xxがなかったらですか。 確かに、接続エラーということは、レスポンスコードが出てなかった ので、レスポンスコードがなければで良いかも知れません。 UNIXのOSによるかも知れませんが。 環境は、Solaris8 です。 |
|
AIX5.3の環境にて下記のようなファイルシステムをマウントしています。 /app /app/log auto mount=trueの設定です。 OS再起動後、/appがマウントされていなかったので、/etc/filesystemsを 確認したところ、/app/logの定義が/appの定義よりも前に記述されいたため、 /app/logが先にマウントされてしまい、/appのマウントに失敗したようです。 一旦、/app/logをアンマウントし、/app, /app/logの順番でマウントしました。 次回の再起動時に正常にマウントできるように、/etc/filesystemsを直接、 編集して正しい順序に設定しようと考えていますが上記ファイルシステムが マウントされたままの状態で作業を行なっても大丈夫か教えて頂けますでしょうか? |
|
>>4793 保守見習い AIX は知りませんが、マニュアルを読む限りでは他 UNIX 系システムの /etc/fstab と同様に、 ・ブート時の mount 順序を決める ・ブート時の mount の設定を記述する ・mount コマンド実行時に各種オプションが省略された場合の デフォルト値を記述しておく という役割のようなので問題ないでしょう。 http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/files/aixfiles/filesystems.htm |
|
>>4794 68user ご意見ありがとうございます。 ファイルシステムをマウントしたまま、/etc/filesystemsを編集し、 問題なく無事作業が完了しました。 |
|
おひさしぶりです。 わからないことができると質問しに現れてすみません。 よろしくお願いします。 C:\>perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread (with 50 registered patches, see perl -V for more detail) Copyright 1987-2006, Larry Wall Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com Built Jan 23 2007 15:57:46 で、以下のようなプログラムを書きました。 -------------------------------------------------- Foo.pm #! perl -w use strict "subs"; package Foo; use base Exporter; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; -------------------------------------------------- bar.pl #! perl -w use strict; use Foo; print "bob: $bob \n"; すると、以下のようなエラーになります。 C:\>bar.pl Unknown error Compilation failed in require at C:\bar.pl line 6. BEGIN failed--compilation aborted at C:\bar.pl line 6. Foo.pm の use strict 'subs'; を無効にするとなぜか正常に動作します。 C:\>bar.pl bob: #123456789 何が悪いかお分かりでしょうか。 別に use strict 'subs' をやめればいいじゃん・・・ というハナシなんですが、 実際の元のプログラムはもっと大きくて(当たり前 ;;;)、 use strict; でずっとやってきていたので・・・。 何かわかりましたらよろしくお願いいたします。 |
|
追記です。 どうも use base Exporter; が use strict 'subs' に引っかかるらしく -------------------------------------------------- Foo.pm #! perl -w package Foo; use base Exporter; use strict "subs"; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; だと動作します。あと use base をあきらめて -------------------------------------------------- Foo.pm use strict "subs"; package Foo; use Exporter; our @ISA = qw(Exporter); our @EXPORT = ('$bob'); our $bob = "#123456789"; 1; でも動作します。 ううーん。 |
|
kqueue の説明の所 timeval は tv_sec, tv_usec で分解能 10^-6 == micro second timespec は tv_sec, tv_nsec で分解能 10^-9 == nano second 実際の分解能は処理系依存 |
|
awk/nawkを使って編集をしています。 ファイルから読み込み、読み込んだ内容を判断して printf関数を使って表示しています。 例えば { \ printf("XXX:%s\nxxx:%s\nxxx:%s\n・・・・\n", \ $1,$2,$s・・・・); \ } \ のように、値の前にコメント付けて表示しています。 この表示内容を追加したところ、 「Word too long」 のメッセージが出力され動かなくなりました。 メッセージの通り、printf関数で表示する内容が長すぎるためだと 思うのですが、原因は、その通りでしょうか。 実際、何バイト(何文字)までなのでしょうか。 また、対処するにはどうしたらよいのでしょうか。 環境は、 Solaris8、csh |