Linuxコマンド ps
実行中のプロセスを表示する。
プロセスとはプログラムが動作している最小の単位
例
すべてのプロセスを詳細表示
ps aux
- a 他のユーザーが実行しているプロセスも表示
- u 開始時刻と実行ユーザ名を表示
- x 制御端末のないプロセスの情報も表示
表示項目の詳細
項目名 | 内容 |
---|---|
USER | プロセスを所有しているユーザーの名前 |
PID | 各プロセスに割り当てられている一意のID |
%CPU | CPUの使用率(%) |
%MEM | 物理メモリ量 |
VSZ | 仮想メモリサイズ(キロバイト) |
RSS | 物理メモリサイズ(キロバイト) |
TTY | 制御端末(ない場合は?) |
STAT | 状態 |
START | 起動時刻 |
TIME | 累積したCPU時間 |
COMMAND | 実行しているコマンド |
STATの詳細
記号 | 内容 |
---|---|
D | 割り込み不可能のスリープ状態 |
R | 実行中または実行可能状態 |
S | 割り込み可能なスリープ状態 |
T | 停止またはトレース中 |
W | ページング状態 |
X | 死んだ状態 |
Z | ゾンビプロセス |
- スリープ状態
- イベントかリソースを待っている状態
- 割り込み可能な待機中のプロセス
- シグナルによって割り込みをかけるもの
- 割り込み不可な待機中のプロセス
- 直接ハードウェアの状態に依存するかたちで待機しているため、どのような状況でも割り込みを掛けられないもの。
STATの添え字
記号 | 内容 |
---|---|
< | 優先度の高いプロセス |
N | 優先度の低いプロセス |
L | 実メモリのページをロックして利用している |
s | セッションリーダー |
l | マルチスレッド化されている |
+ | フォアグラウンドのプロセスグループに含まれている |
シグナル
プロセス間で連絡を取り合うための仕組み
ファイルシステムとは
ファイルシステムまわりについて調べてみた
inode(アイノード)
作成方法
ファイルが作られると、そのファイルに関する情報を記録するためinodeが作られる
全てのファイルは、物理的にinodeにリンクされている。
確認の仕方
df -i stat -L test.txt
その他
作成に上限があるため、容量があってもファイル作成できない場合がある
VFSの抽象化の仕組みの基本単位として提供されている
ハードリンク、シンボリック
UNIXでは、ファイルに対してリンクを作成できる
作成について
下記のコマンドで作成できる。
ls −al で見た際、ハードリンクの場合はリンク数が増えている
−sでシンボリック作成
ln (-s) リンク元ファイル リンク先ファイル
シンボリックリンク
- ファイルの本体の位置情報を保管しているファイル
- 本体とは完全に区別されるため、本体が削除されたらエラーとなってしまう
- ハードリンクと異なり制限がなくファイルやディレクトリにも作成できる
- ファイルシステム上に0バイトのファイルが出現する
ハードリンク
- ファイルに複数の名前を割り当てる機能
- 実体ファイルの削除ができる
- 複数存在しても同じ扱いで、すべてのリンクを削除しないと実体は削除されない
- 異なるファイルシステムやディレクトリにはリンクできない
ファイル階層標準(FHS)
- Filesystem Hierarchy Standard
- Linuxと他のUNIX系オペレーティングシステムでの主なディレクトリとその内容を定めたもの
- ディレクトリ構成を示したファイルの標準化仕様書
ディレクトリ構造
全てのファイルとディレクトリはルートディレクトリ "/" の下に置かれる。
3つの構成
・システムに必須のファイル
・システムには必須ではないファイル
・動的に変化するファイル
ファイルシステムの特徴
EXT3
third extended file system。ディスクファイルシステム
Linuxで広く使用されているファイルシステムの一つで、ext2ファイルシステムにジャーナリング機能(データ変更をトランザクションとして管理する機能)を追加したもの。ext2より復旧速度が上がった。
ジャーナル
データを変更する前に,ファイルの管理情報あるいはデータの変更内容を「ジャーナル」と呼ばれるログに同期的に(キャッシュを通さずに)書き込んでおく。
パーテーションとは
windows
物理的なハードディスクドライブを複数の論理的HDDに分ける事
分割された個々のパーティションはひとつの「ドライブ」として扱われ、それぞれが独立したフォルダ構成をもつ
パーテーションを分割するメリット
バックアップ/アップデートが必要な場合に便利
障害が発生した際、最小限におさえられる
HDDを有効活用できる
デメリット
使用率に偏りができる可能性がある
LAMP環境構築その2
前回の続き。
mysqlインストール
設定ファイルの細かいところは、やはりあとで勉強しよう…。
# yum install -y mysql mysql-server mysqlインストール # vi /etc/my.cnf 設定ファイル編集 [mysqld] default-character-set=utf8 以下追加(文字コード設定) character_set_server=utf8 skip-character-set-client-handshake [mysql] default-character-set = utf8 [client] default-character-set=utf8 [mysqldump] default-character-set=utf8 # /etc/rc.d/init.d/mysqld start mysql起動 # chkconfig mysqld on 自動起動設定
mysqlのパスワード設定
パスワードなしで入れてしまうので、パスワードを設定する。
上記で文字コードをUTF-8に設定したので、設定されているか確認する。
# mysql -u root rootでログイン mysql> show variables like 'char%'; 文字コード確認 mysql> select host,user,password from mysql.user; 現在のユーザーを確認 mysql> set password for root@localhost = password('適当なパスワード'); パスワードを設定する mysql> DELETE FROM mysql.user WHERE user=''; 不要なユーザを削除する mysql> select host,user,password from mysql.user; パスワードが設定されているか再度確認する mysql> \q 一旦終了する # mysql -u root パスワードなしで入れないことを確認 # mysql -u root -p 先ほど設定したパスワードを入力して入れることを確認
また今度別のユーザー作ったりしようかな。
設定おわり
一通り設定完了。
後回しにしたいろいろはのちのち書いていこう。
次はframeworkでも入れてみようかな。
LAMP環境構築
いろいろ入れたので、そろそろLAMP環境を作ろうと思います。
apacheインストール
設定ファイルも編集。ドメインは特に指定してないので、今のところlocalhost。
ドメインの設定はあとで。他の設定も後ほどやろう。
# yum -y install httpd # vi /etc/httpd/conf/httpd.conf #ServerTokens OS ServerTokens Prd # OS名を表示させない #ServerName www.example.com:80 ServerName localhost:80 # サーバー名指定。 #DirectoryIndex index.html index.html.var DirectoryIndex index.html index.html.var index.php # ディレクトリ名のみでアクセスできるファイルを追加 #ServerSignature on ServerSignature off # サーバー情報を表示させない
apacheテスト
動くことをとりあえず確認
# /etc/init.d/httpd start # Apache起動 # chkconfig httpd on # Apache自動起動するよう設定
http://192.168.xxx.xxx/にwindowsのブラウザからアクセス。
Apache 2 Test Pageの表示が出ることを確認。
phpをインストール
バージョン名が表示されることを確認。
設定も変更する。
# yum install -y php php-mbstring php-mysql # php -v # vi /etc/httpd/conf.d/php.conf #AddType text/html .php AddType application/x-httpd-php .php # PHPスクリプトが動作するよう設定 # /etc/init.d/httpd restart # Apache再起動
phpを設定して表示を確認
ユーザーが編集できるように権限変更。
適当なファイルを置いて、動くか見てみる。
#chown hoge.group /var/www/html # Apacheのドキュメントルートの権限変更
出た!
php.iniの設定
だいたいの設定をする。セキュリティまわりはあとでまた、まとめようかな。
#vi /etc/php.ini ; error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL | E_STRICT # エラーレベルを厳密にする ; display_errors = Off display_errors = On # エラーを表示させる ;date.timezone = date.timezone = Asia/Tokyo # タイムゾーンを設定 ;mbstring.language = Japanese mbstring.language = Japanese # マルチバイト文字の設定を日本語 ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8 # 内部文字コードをUTF8 ;expose_php = On expose_php = Off # バージョン表示OFF ;open_basedir = open_basedir = hoge # 参照する最も高いレベルのディレクトリを設定 ;log_errors_max_len = 1024 log_errors_max_len = 4096 # エラーログ制限を大きくしておく ;error_log = php_errors.log error_log = # ファイル名指定 ;magic_quotes_gpc = Off magic_quotes_gpc = On # 文字列がエスケープされないようにする ;default_charset = "iso-8859-1" default_charset ="UTF-8" # 文字エンコーディングを設定 ;session.hash_function = 0 session.hash_function = 1 # sha1を使うように変更 # /etc/init.d/httpd restart # Apache再起動
長くなったので、mysqlとその他メモは次に書こう。
後でが多い気がする…。
PuTTYで公開鍵認証
パスワード認証に比べて突破されにくく安全とのことなので、設定する。
PuTTYgenで鍵ペアを作成
Linuxの設定
ログインするユーザーのカレントディレクトリに.sshディレクトリを作成。
作成したディレクトリ内にファイル authorized_keys を作成する。
PuTTYgenの公開鍵をペーストする。
複数行になっている場合は1行にする
$ mkdir .ssh $ chmod 700 .ssh $ cd .ssh $ vi athorized_keys $ chmod 600 authorized_keys
設定ファイルの変更
コメントアウトをはずす
# vi /etc/ssh/sshd_config Port 22 ServerKeyBits 1024 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile ~/.ssh/authorized_keys PasswordAuthentication no # /etc/rc.d/init.d/sshd restart 再起動 # reboot
PuTTYの設定
- 設定画面で、接続>SSH>認証 をひらく
- 「認証のためのプライベートキーファイル」にさっき保存した秘密鍵を指定する
- ログインする
- 鍵のパスフレーズを入力
その他
何か server refused our key がよく出た。
権限とkeyの内容を落ち着いて最初から調べたら、何とかできた。
認証できたりできなかったりしてたのは、
気づいたら、ファイルを指定しておいたのに、空になっていた…。
ファイルが入ってなくて失敗してたようだ…。