
UNIX + Cで作成しています。
あるプログラムで、FTPコマンド※を発行し、
遠隔のサーバ(サーバはLINUX)に置かれているファイルを取得しようとしています。
※system("FTP ~~~ bye")
単発でファイルを取得する場合は問題ないのですが、
連続してファイルを取得しようとした場合、数時間動きつづけた後、
FTPコマンドを発行した状態でフリーズしてしまう現象が起こります。(100%かは分かりませんが、再現性はあります。)
なぜこのような現象が起こるのでしょうか?
連続してのFTPコマンド発行は問題があるのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ここまでに書かれた症状だけではなんとも診断のしようがないのですが,ファイル転送1つにつきftpを1回起動するのをやめるのが根本的解決になるとおもいますよ.
繰り返し長期間にわたって転送するのなら,ftpは1回だけ起動して,それに
getコマンドを繰り返し与えるというふうにするか,あるいはftpなんかフリーでソースが転がっているので,自分のプログラムの中に組み込んでしまうか.
No.3
- 回答日時:
ある程度の時間の中で一定回数以上 ftp サーバにアクセスするために, 「ftp サーバに対する攻撃」と勘違いされている可能性はあ
りませんか?この回答への補足
その可能性はあるかな、と思ったりもしてます。
「ftp サーバに対する攻撃」だと、サーバ側はどのように判断するのでしょうか?
なにか設定があるのでしょうか?
(サーバはLinuxです)
しかし、ちょっと違う気もします。
フリーズする現象が発生すると、そのサーバへはTelnetでもFtpでも繋がらなくなりますが、
具体的には繋がらないというより、
繋がるがユーザ認証・ログインができない、が正しいように思います。
PCからTelnetやFtpコマンドを打つと
ユーザ名、パスワードを聞いてはくるが、その後固まるので。
さらに、そのサーバではログオフやユーザ切替すらできません。
やはり、どこか領域を壊して動けなくなっているのでしょうか?
でもそのサーバからは別のサーバへTelnetでもFtpでも繋がるんですよね。。。
No.1
- 回答日時:
本当にフリーズしているのかどうか,psコマンドとかvmstat,netstatなどで調べてみてはどうでしょうか.
ftp自体は正常に起動できているがメモリリークを起している,とか,ftpコマンド終了時の後始末がなにかがうまくいって無くて,TCPポートを使い潰しているとか,ファイルディスクリプタを何か閉じ忘れているとか,いうことが想像できます.
この回答への補足
プログラム中でsystem("FTP ~~ bye")を連続して行っているとき、サーバ、クライアント側それぞれでpsコマンドで確認しても不要なプロセスは溜まっていませんでした。
TCPポートに関しては、サーバ、クライアント側それぞれでnetstatで見たところ1400個くらいがFTPで使われていて、ほとんどがTIME_WAIT状態でした。
これは、プログラムを停止させると序々に減っていき、最終的にはなくなりそうですが。
根本的なところですが、
クライアント側は
(1)system("FTP ~~ bye")
(2)popen("FTP ~~ bye") + pclose( )
などを行うのみで、特に後始末的な処理はないと思っているのですが、間違っていますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
コマンドでのFTP転送が進まない。
その他(コンピューター・テクノロジー)
-
バッチファイルからftpを実行時に処理完了を待たない方法
その他(プログラミング・Web制作)
-
FTPエラー425
その他(コンピューター・テクノロジー)
-
-
4
FTPコマンドの戻り値について
その他(OS)
-
5
シェルスクリプトでFTPの実行結果を取得するには
その他(プログラミング・Web制作)
-
6
FTP転送中断について
その他(コンピューター・テクノロジー)
-
7
ftpコマンドの戻り値をチェックしたい
その他(プログラミング・Web制作)
-
8
Linux shell ftp 転送 エラー制御
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
xCopyコマンドでネットワークご...
-
WSHで他のバッチを呼びその終了...
-
コマンドプロンプトをクリック...
-
シェルスクリプト(.sh)で、10進...
-
DOSコマンドに詳しい方、お知恵...
-
コンピュータ名をファイル名に...
-
コマンドプロンプトでファイル...
-
バッチえファイルを編集するに...
-
コマンドプロンプト
-
AccessVBAで実行時間を指定する...
-
バッチファイル 文字列にスペ...
-
VS2019のコンソールC++からGn...
-
VBA 特定文字含むファイル
-
バッチファイルについて教えて...
-
Pythonで単純にファイルを結合...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
シェル(sh)で実行コマンドを標...
-
ftpコマンドを実行すると「425 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
バッチ終了時にDOS窓を閉じるコ...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
ftpコマンド出力結果の取得
-
ftpコマンドを実行すると「425 ...
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
フォルダ、ファイル操作に最適...
-
バッチファイルを使ってテキス...
-
FTPの連続実行でフリーズする
-
コンピュータ名をファイル名に...
-
AccessVBAで実行時間を指定する...
-
CPRMでコピーしたDVDを再コピー...
-
C言語で、string.h conio.hを使...
-
シェルからpsqlコマンドでトラ...
-
バッチファイルでのMACアドレス...
-
シェルスクリプト内のcdで、カ...
-
2つ目の「pause」は無効?
おすすめ情報