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で質問しましょう!
似たような質問が見つかりました
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- プロバイダー・ISP hpb22の接続方法の変更 1 2023/08/06 18:47
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- サーバー ログオンユーザーがいない場合に自動再起動 1 2022/09/28 09:53
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- サーバー FFFTPで特定サイトだけUploadできない 4 2022/08/27 14:53
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で、string.h conio.hを使...
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
コマンド プロンプト
-
シェルの「:コマンドが見つか...
-
CPRMでコピーしたDVDを再コピー...
-
バッチコマンドのIF文(条件...
-
ftpコマンドを実行すると「425 ...
-
ショートカットをデスクトップ...
-
xCopyコマンドでネットワークご...
-
バッチファイルでdiskpart.exe...
-
make test って何をするための...
-
MSDOSで容量チェックをしたい!
-
コマンドプロンプト
-
WebOTXのdeployコマンドについて
-
VBA 特定文字含むファイル
-
C#でLAN内の他のPCをシャ...
-
ftpコマンド出力結果の取得
-
複数のフォルダを開くバッチフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトで、特定の...
-
Pythonで単純にファイルを結合...
-
コマンドプロンプトでファイル...
-
コンピュータ名をファイル名に...
-
バッチファイルを使ってテキス...
-
SSH接続でwindowsサーバのコマ...
-
バッチファイルで実行コマンド...
-
フォルダ、ファイル操作に最適...
-
バッチファイルでdiskpart.exe...
-
AccessVBAで実行時間を指定する...
-
2つ目の「pause」は無効?
おすすめ情報