質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

3回答

1475閲覧

linux でユーザがアクセス中のディレクトリの調べ方

uemon

総合スコア37

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

1クリップ

投稿2020/06/09 02:00

編集2020/06/09 02:01

AWSのEC2+ロードバランサーでサイトを構築しています。

一時的なアクセス増が予想されるため、
スケールアウトは「AutoScale」機能で負荷に応じて自動でしようと思うのですが、
スケールインは、サーバー内でPHPのバックグランド処理(nohup execで処理)があるため、
目視で誰もサーバーにアクセスしていないことを確かめてから、
手動でEC2インスタンスを落としたいと考えています。

Google Analyticsを使えば、「今ユーザーがどのディレクトリにアクセスしているのか」が分かるのですが、
Linuxのコマンドで、同じようなことはできないのでしょうか?

Google Analyticsを使ってもいいのですが、出来れば直接サーバーにSSHでログインして、アクセス状況を確認したいと考えております。

「top」や「ps」はやってみたのですが、どのディレクトリにユーザーがいるまではわかりませんでした。

どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/06/09 02:09

使われてないウェブサーバーを止める話と、「今ユーザーがどのディレクトリにアクセスしているのか」の関係が不明です。
uemon

2020/06/09 02:27 編集

ご確認ありがとうございます。 例えばユーザが、http://hoge.com/aaa.php というURLにアクセスしていた場合、 Google Analyticsではアクセス中のコンテンツとして、 /aaa.php という感じでわかります。 このような感じで、ユーザーがどのURLにアクセスしているかが分かれば、今はサーバーを落とすとまずいのかがわかりますので、ユーザーがどのURLにアクセスしているのかを知りたいと思います。 URLを知るのが難しい場合は、ユーザーがバックグランド処理をしている時のファイル(/var/www/html/hogehoge.php)が分かりますので、実行中のファイルが分かればそれでもいいです。 最悪の場合、ps aux でapacheユーザーがいなければ、サーバーを落とそうかと考えております。 (修正) 「apacheユーザーがいなければ、・・・」というのはおかしいですね。 誰もサイトにWEBアクセスしていないのは、どのコマンドでしょうか? どうぞよろしくお願い致します。
SHOMI

2020/06/09 02:31

>目視で誰もサーバーにアクセスしていないことを確かめてから、手動でEC2インスタンスを落としたいと考えています 目視で確認してから落とすまでの間にアクセスされる可能性はないのでしょうか…
uemon

2020/06/09 02:37

ご確認ありがとうございます。 スケールインを判断する良い方法が思いつかなくて、とりあえず目視でと思ったのですが、ご指摘のように、その間にアクセスされるといたちごっこにはなります。 EC2上でバックグランド処理があるため、バックグランド処理中に、スケールインするのだけは避けたいとのですが、他にいいスケールインの方法が思いつきません。
otn

2020/06/09 03:24 編集

アクセス処理中の場合に、どのディレクトリであるかによって、落として良いかどうかが変わると言うことですか?これは良いが、これは駄目みたいな?
uemon

2020/06/09 03:28

はい、バックグランド処理は、 /var/www/html/app/laravel/app/Http/background/background.php というファイル(ディレクトリ?)で行っていますので、 このファイルが稼働中の場合、スケールインは避けたいと思います。 それ以外のアクセスであれば、一応ステートレスになっていますので、 落としても別のEC2で継続して作業出来ます。(セッションはDBに保存しています) どうぞよろしくお願い致します。
guest

回答3

0

現在非同期処理が走っていないかだけならsudo ps aux|grep {execで叩かれているコマンドの共通部分}で確認可能かと思います。
プロセスが動いてなければ、最小インスタンス数を減らす&デタッチするところまでスクリプト化して、スケールインだけ自力で実装するのはそこまで大変では無いと思います。

が、
突然落ちたら困るという状態は要するにステートレスになっていないという事なので、
AutoScalingGroupとは別のところに非同期処理用のインスタンスを用意して、キューで処理するなどの設計を考えた方がスマートではあります。

投稿2020/06/09 03:53

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uemon

2020/06/09 04:04

ご回答ありがとうございました。 sudo ps aux|grep {execで叩かれているコマンドの共通部分} で確認できそうです。 本来はご指摘のように、非同期処理用のインスタンスを用意したいのですが、この非同期処理が一番重たい処理になりますので、ここを1本化すると分散処理の意味があまりなくなる気がしています。 また、非同期処理も複数台用意すればいいのですが、コスト的にまだ厳しいものがあります。 ともあれ、ステートレスになっていないのは確かですので、また検討することにいたします。 ご教授、誠にありがとうございました。
guest

0

ベストアンサー

はい、バックグランド処理は、

/var/www/html/app/laravel/app/Http/background/background.php
というファイル(ディレクトリ?)で行っていますので、
このファイルが稼働中の場合、スケールインは避けたいと思います。

psでいいのでは?
Apacheプロセスから、"php /var/www/html/app/laravel/app/Http/background/background.php"で起動しているのであれば、psで分かります。

"php /var/www/html/app/laravel/app/Http/background/background.php"で処理が始まった時点では、/var/www/html/app/laravel/app/Http/background/background.phpのファイルはクローズ(使用終わり)ですので、このファイルの使用中を見ても駄目です。

バックグラウンド処理の終了を待つと言うことなら、

どのディレクトリにユーザーがいる

は関係ないです。

投稿2020/06/09 03:53

編集2020/06/09 03:55
otn

総合スコア84667

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uemon

2020/06/09 04:06

ご回答ありがとうございました。 psで分かりそうですので、psで確認することにいたします。 ご教授、誠にありがとうございました。
guest

0

質問者さんの最終的な目標にたどり着くかは別として、「ユーザがアクセス中のディレクトリ」を調べるには、lsof というコマンドがあります。

デフォルトで、インストールされていないかもしれません。パッケージ管理のリポジトリに存在すれば、インストールは可能です。
お使いのシステムに用意されているかはわかりません。

投稿2020/06/09 03:25

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uemon

2020/06/09 03:37

回答ありがとうございます。 lsof と打つと大量の行が表示されましたので、インストールはされているようです。 少し調べましたが、オプションも多彩ですね。 これで特定できそうか調べてみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問