* [[Linux TIPS]]

#contents
** ユーザ
ユーザと追加するときはユーザidを設定して追加しましょう。移行のときとかめんどくさい...
 useradd hoge ユーザ追加
 useradd -u 100 -g 50 -m -d /home/hoge1 -s /bin/bash hoge1 -mでディレクトリの作成 -s /bin/falseにするとログイン不可のアカウントになります。
 pw useradd -g hogegroup -d /dev/null -s /bin/false -n hogeuser freebsdの時
 passwd hoge パスワード設定
 userdel hoge ユーザ削除
 groupadd hoge グループ追加
 pw groupadd -n hoge freebsdの時
 gpasswd -a hogeuser hogegroupe グループにユーザを追加
passwdでパスワードを変更できるが、/et/shadowと整合性が取れていないときには、エラーになる。(Authentication token manipulation error) このときはpwconvで整合性をとる。~
shellは
 /etc/shells
で指定されているものをしているする。~
一括でユーザを登録したい場合は、適当にファイルを作成し、
 emacs test.user
中身
 hogeuser1:hogepass1:1101:1101:hogeu1:/home/hogeuser:/bin/bash
 hogeuser2:hogepass2:1102:1102:hogeu2:/home/hogeuser:/bin/bash2
として、(左からユーザ,グループ,uid,gid,備考,ホーム,シェル)
 newusers test.user
一括でパスワードを登録したい場合は、適当にファイルを作成し、
 emacs test.pass
中身
 hoge1:hogepass
 hoge2:hogepass2
として、
 chpasswd < test.pass
で読み込ませます。
もしくは
 printf "hogepass1\n"|passwd --stdin hoge1
 printf "hogepass2\n"|passwd --stdin hoge2
** acl
[[特集:Linuxカーネル2.6で実現するACL (1/5)>http://www.itmedia.co.jp/enterprise/0403/06/epn01.html]]
** psで端が切れる
wをつけてやります。
 ps auxw -H
それでもだめな場合はさらにw  -Hはツリー上に出力~
ちなみに特定のプロセスだけ抜き出す場合は、
 ps aux |grep httpd
とかしますが、
 ps aux |grep [h]ttpd
はちょっと感心した。~
ちなみにVSZ(Virtual Set Size)は、仮想メモリで、RSS(resident set size)が実メモリです。~
またSTATは(どこからか引用)
 D    割り込み不可能なスリープ状態 (通常 IO 中) 
 R    実行中または実行可能状態 (実行キューにある) 
 S    割り込み可能なスリープ状態 (イベントの完了を待っている) 
 T    ジョブ制御シグナルまたはトレースされているために停止中の状態 
 W    ページング状態 (2.6.xx カーネルからは無効) 
 X    死んだ状態 (見えるべきではない) 
 Z    終了したが、親プロセスによって回収されなかった、消滅した (ゾンビ) プロセス 
BSD 形式で stat キーワードが用いられたときは、以下の添付文字が表示されることがある。
 <    優先度の高いプロセス (他のユーザーに対して良くない) 
 N    優先度の低いプロセス (他のユーザーに対して良い) 
 L    実メモリのページをロックして利用している (リアルタイム処理やカスタム IO 向け) 
 s    セッションリーダ 
 l    マルチスレッド化されている (NPTL pthreads が行うように、CLONE_THREAD が使われている) 
 +    フォアグラウンドのプロセスグループに含まれている 
** su
Switch Userの略。
 su - hoge
suの後ろに-をつけることにより、環境変数を引き継ぎ、hogeユーザになる。
** yes
yesやyとか入力を何回も求められてめんどくさい場合は、
 yes | hoge
また yがデフォルトになっているだけなので、
 yes no | hoge
とかすればnoが入力されていく

** コピー,削除
 cp -rp ディレクトリ1 ディレクトリ2  <-- pで属性を維持
 cp -a こっちのほうが楽。
 rm -fr ディレクトリ <-- rで再帰的に削除
FreeBSD 
 cp -R ディレクトリ1 ディレクトリ2
http://www.jp.freebsd.org/man-jp/search.html~

削除するときに
 /bin/rm: 引数リストが長すぎます
とか出た場合は、ファイルの数が多くて、OSの制限にひっかかってますので、
 ls  | xargs rm
として消してやりましょう。コピーの場合は、
 ls *.* |xargs -i cp -a {} /hogepath
日付を指定してコピーしたりするとき
 touch -t 200902010000 /work/oldstamp
 touch -t 200902020000 /work/newstamp
 find ./ -newer /work/oldstamp -and ! -newer /work/newstamp  -exec cp {} /work/test/{} \;

** iノード
 df -i
で使用している割合が参照できます。まだ枯渇したことはないですが、注意しましょう。
[[ITmedia エンタープライズ : Linux Tips「iノードってなに?」>http://www.itmedia.co.jp/help/tips/linux/l0144.html]]
** network
- ネットワークカード再起動~
/etc/sysconfig/network-scripts/ifcfg-eth*のファイルでONBOOT=yesとなってる場合は
 /etc/rc.d/init.d/network restart
もしくは、
 ifdown eth0
 ifup eth0

ホスト名変更は、 /etc/hostsと/etc/sysconfig/network~
デフォルトゲートウェイ変更は/etc/sysconfig/network~
DNSの変更は/etc/resolv.conf
 search hoge.domain
 nameserver 192.168.1.1
DHCPは/etc/sysconfig/network-scripts/ifcfg-eth0を編集する。またゲートウェイもとってきている場合は、/etc/sysconfig/networkのGATEWAY=192.168.1.1も消しておきましょう。
 DEVICE=eth0
 BOOTPROTO=dhcp
 ONBOOT=yes
 TYPE=Ethernet
固定IPの場合は、
 DEVICE=eth0
 BOOTPROTO=static
 BROADCAST=192.168.1.255
 IPADDR=192.168.1.2
 NETMASK=255.255.255.0
 NETWORK=192.168.1.0
 ONBOOT=yes
 TYPE=Ethernet
** 1 つのネットワークインターフェースに複数の IP アドレスを割り当てる
 ifconfig eth0:0 192.168.100.190 netmask 255.255.255.0 broadcat 192.168.100.255
自動起動したい場合は、/etc/rc.d/rc.localにでも追加しておいてください。またあるホスト(例:192.168.1.1)にこのeth0:0を使いたい場合は、
 route add -host 192.168.1.1 dev eth0:0

** ssh
 ssh -i .ssh/ninsyou hogeuser@192.168.1.1

**glibcのバージョン
 /lib/libc.so.6
**wget
http://www.gnu.org/software/wget/wget.htmlからダウンロード 
 ./configure
 make
 make install

** 稼動中のサービスが知りたい
service --status-all

** リソース確認(CPU使用状況、メモリ等)
topコマンドを使う。 -dでスクリーンを更新する間隔を指定
立ち上げている際に、
 [space] 表示更新
 M メモリ利用順にsort
 T 時間順にsort
 P CPU利用率順でsort
 A 新しい順にsort
 k プロセスをkill
[[TOP>http://www.linux.or.jp/JM/html/procps/man1/top.1.html]] フィールドの説明とか~
http://www.7key.jp/computer/top.html~
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html
** CPU、搭載メモリを調べる
 cat /proc/cpuinfo
 cat /proc/meminfo
** ホスト名変更
/etc/sysconfig/networkを修正します。ついでに/etc/hostsも。その後
 /etc/rc.d/init.d/network restart 
もしくは
 hostname xxx.ffff.yyy
dnsdomainnameでドメイン確認
** grep
テキストファイルからある文字を抜き出したいとき
 grep kensakusitaimoji hoge.txt
[[find/grep/xargsコマンドを使いこなす業務で楽するためのUNIXテクニック集「検索」編 >http://codezine.jp/article/detail/3279]]
**システム起動時に実行させたい
/etc/rc.localに記述しておきます。起動の順番として、
inittabファイルを参照しながら、
 # System initialization.
 si::sysinit:/etc/rc.d/rc.sysinit
より、/etc/rc.d/rc.sysinitを起動します。
 id:3:initdefault:
とあれば、
 l3:3:wait:/etc/rc.d/rc 3
で/etc/rc.d/rc3.dの最初がSのファイルが実行されます。その後/etc/rc.localが実行されます。ではログインですが、
 /etc/profile
 ~/.bash_profile
 ~/.bash_login
 ~/.profile
になりますので、必要な場所に書きましょう。


[[Linux起動の仕組みを理解しよう[init/inittab編]>http://www.atmarkit.co.jp/flinux/rensai/theory10/theory10a.html]]~
[[Linuxの起動と起動スクリプト  >http://www.geocities.co.jp/SiliconValley-Cupertino/9120/startup.html]]~
** tcpdump
送受信するパケットの情報がみえます。
 tcpdump dst port 80 and src host 192.168.1.1  #送信元192.168.1.1からポート80に対してのダンプを取得する場合
参考:http://itpro.nikkeibp.co.jp/article/COLUMN/20070403/267311/
** カーネルの情報
 uname -a
** サービスの登録
chkconfigを使います。/etc/init.dのファイルを登録します。そのファイルでは
 # chkconfig: 345 80 15
とか記述しておいてください。345はランレベルです。
 chkconfig --level 345 httpd on
ちなみに
 /sbin/service --status-all
で/etc/init.dのディレクトリ以下に起動スクリプトをもつサービスの状況を表示します。

** バックグラウンドで動かす
 hoge &
で実行する。確認は
 jobs
フォアグランドにするには
 fg
** yum 強制
まず、
 yum install yum-utils
で、
 yumdownloader hoge;
これでrpmが取得できるので、後は
 rpm -ivh --force hoge.rpm 
** RPM
rpmを探しているときhttp://rpm.pbone.net/で探していました。インストール時のオプションは、

-v インストール/アンインストール時の情報表示オプション。-hオプションと一緒に使うと良い。
 #rpm -ivh hoge.rpm 
-h インストール/アンインストールする際に '#' で表示します
情報表示オプション「-h」と一緒に使うと良い。
 #rpm -ivh hoge.rpm 
その他問い合わせオプションコマンド 
-q パッケージがインストールされているかの問い合わせ。
インストールされていれば、バージョンも表示される。
 #rpm -q hoge
-qi パッケージ情報をより詳細に表示する。
 #rpm -qi hoge
-qs インストール先表示
 #rpm -qs hoge
-qa インストールされている パッケージをすべて表示
 #rpm -qa
-qf 特定のファイルがどのパッケージの物なのかを調べるオプション。
 #rpm -qf /root/.Xdefaults  
-help RPMヘルプ参照。
 #rpm --help 
-version 使用している rpm のバージョンを表示します。
 #rpm --version 
-i 新規インストールオプション。
新規のみ許可、既にインストールされている場合はインストールされない。
 #rpm -i hoge.rpm 
-U アップグレードオプション。
アップグレード用のチェックをして、既存のパッケージが無くてもインストールされる。
 #rpm -U hoge.rpm 
-F アップグレードオプション。
アップグレード用のチェックをして、既存のパッケージがある場合のみインストールされる。
 #rpm -F hoge.rpm 
-e アンインストールオプション。
 #rpm -e mozilla 

** TAR
- tarで圧縮・解凍
-- 圧縮
 # tar -cvf <圧縮ファイル名> <ターゲットファイル>
 # tar -cvf access_log01.tar /usr/local/apache/logs/access_log.*
 これは、/usr/local/apache/logs/access_log.*をaccess_log01.tarと言うファイルに圧縮する。と言う意味である。カレントディレクトリに作られる。tarは、圧縮と言うよりファイル連結のようなコマンドである。
-- 解凍
 # tar -xvf <解凍したいディレクトリ> <圧縮ファイル名>
 # tar -xvf /var/log/ /usr/local/apache/logs/access_log01.tar
 これは、/usr/local/apache/logs/access_log01.tarの圧縮ファイルを/var/log/へ解凍する。
- tarファイルをZ形式(コンプレス)で圧縮・解凍
-- 圧縮
 # compress <ターゲットファイル>
 # compress access_log01.tar
 これは、access_log01.tarファイルを圧縮する。結果的に、access_log01.tar.Zと言う圧縮ファイルが出
 来る。
-- 解凍
 # uncompress <ターゲットファイル>
 # uncompress access_log01.tar.Z
 これは、access_log01.tar.Zと言う圧縮ファイルをaccess_log01.tarと言うファイルに解凍する。
 この場合は、カレントディレクトリに解凍される。この場合、access_log01.tar.Zと言う圧縮ファイルは
 無くなる。
- tarファイルをgz形式で圧縮・解凍
-- 圧縮
 # gzip <ターゲットファイル>
 # gzip access_log01.tar
 これは、access_log01.tarファイルを圧縮する。結果的に、access_log01.tar.gzと言う圧縮ファイルが出
 来る。
-解凍
 # gunzip <ターゲットファイル>
 # gunzip access_log.tar.gz
 これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log01.tarと言うファイルに解凍する。
 この場合は、カレントディレクトリに解凍される。この場合、access_log01.tar.gzと言う圧縮ファイルは 無くなる。
- tar.gzファイルをtarコマンドを使って一気に解凍する。
 # tar -zxvf <ターゲットファイル>
 # tar -zxvf access_log01.tar.gz
 これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log.*の元ファイルに全て解凍する。
 この場合は、カレントディレクトリに解凍される。
 # tar -zxvfC access_log01.tar.gz /tmp
 これは、access_log01.tar.gzと言う圧縮ファイルを/tmpディレクトリへ解凍する。

- tar.Zファイルをzcatコマンドを使って一気に解凍する。
 # zcat <ターゲットファイル> | tar xvf -
 # zcat access_log01.tar.Z | tar xvf -
 これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log.*の元ファイルに全て解凍する。
 この場合は、カレントディレクトリに解凍される。

**zip
解凍
 unzip hoge.zip
圧縮する場合は、
 zip hoge.zip hogefile
ディレクトリごと圧縮する場合は
 zip -r hoge.zip hogedir
パスワード付き
 zip -P password -e test.zip *.*

** CtrlとCapsを入替
/etc/X11/XF86Config-4の
 #    Option "XkbOptions" "ctrl:swapcaps"
の#をとります。fedoraの場合は、xorg.conf

** 起動しない
MIRACLE LINUXの場合ですが、インストールCDを入れて
 boot: linux rescue
とします。そのままメッセージにしたがって進めていくと、プロンプトがでてきますので、/mnt/sysimageにルートがいます。
またsingleやemergencyでの起動も試しましょう。
 boot: linux single
 boot: linux emergency
http://www.redhat.co.jp/manual/Doc80/RH-DOCS/rhl-cg-ja-8.0/s1-rescuemode-booting-single.html~
FreeBSDの場合では、 single user modeであげて、
 boot -s
デフォルトのシェルを聞かれるので、デフォルトでよければenter。read onlyでマウントされているので、
 mount -u /   読み書き可能でrootをマウント
 mount -a -t ufs   /etc/fstabの内容をマウント
 swapon -a    スワップを有効にする
[[FC4/FAQ/シングルモードで動作させるには?>http://pocketstudio.jp/linux/?FC4%2FFAQ%2F%A5%B7%A5%F3%A5%B0%A5%EB%A5%E2%A1%BC%A5%C9%A4%C7%C6%B0%BA%EE%A4%B5%A4%BB%A4%EB%A4%CB%A4%CF%A1%A9]]~
**パーティションサイズ変更
http://ftp.gnu.org/gnu/parted/からparted-1.6.19.tar.gzをダウンロードしました。解凍後
 ./configure
 make; make install 
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/461useparted.html~
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/462partedsfd.html~
http://nobumasa-web.hp.infoseek.co.jp/partition/parted/~
**バックアップ
rsync
 rsync -avz --delete /home/test/ filesrv:/home/backup/
 -a : ファイルの属性などの情報を保ってコピーする
 -c : checksum を使う
 -u : より新しければ、更新しない
 -z : ファイルを圧縮しながら転送する
 -v : 転送情報を詳しく表示
 -q : 転送情報を表示しない
 --delete : 転送元のディレクトリにはないが、転送先のディレクトリにあるファイルを削除する
 --exclude: 転送元のディレクトリのうち、転送しないファイルを指定する
ネットワーク越しにやるときは、バックアップ先のマシンに/etc/xinet.d/rshを起動しておいてください。
ここで/home/test/とすると/home/test/以下のファイルがコピーされ、/home/testとするとtestを含んでコピーされます。~
参考:[[rsyncを使った熟練者レベルのバックアップ>http://www.itmedia.co.jp/enterprise/articles/0707/19/news059.html]]


dar 完全、差分、増分バックアップができ、サイズを指定できるので、CD-R等に納めることができたり、あるファイルのみをリストアできたりと多機能なツールです。
そもそもこの完全、差分、増分とは
 完全バックアップ:その名の通りすべてバックアップです。
 差分バックアップ:完全バックアップ後にそれ以降は完全バックアップしたもに対しての差分をバックアップします。
          そのため、時間がたつにつれてどんどん差分が大きくなっていきます。
 増分バックアップ:完全バックアップ後に直前のバックアップに対しての増分をバックアップします。ですので、容量自体は大きくならないですが、
          すべての増分がないとリストアできません。
http://dar.linux.free.fr/からダウンロードします。
 wget http://downloads.sourceforge.net/dar/dar-2.3.2.tar.gz?modtime=1162240068&big_mirror=0
 tar xzvf dar-2.3.2.tar.gz
 cd dar-2.3.2
 ./configure
 make
あら?
 /lib/libattr.a: No such file or directory
とエラーがでました。http://dar.linux.free.fr/doc/FAQ.htmlに従って、
 ln -s /usr/lib/libattr.a /lib/libattr.a
として、再度makeするとうまくいきました。では再開
 make install-strip
これでおわりです。
 Commands are:
  -c  creates an archive
  -x  extracts files from the archive
  -d  compares the archive with the existing filesystem
  -t  tests the archive integrity
  -l  lists the contents of the archive
  -C  isolates the catalogue from an archive
  -+  merge two archives / create a sub archive
ではバックアップです。
 dar -c /backup/homeall -g home
/backupがバックアップ先のディレクトリで、homeがバックアップの対象です。/homeとすると、
 Parse error on command line (or included files): Cannot add an absolute path
となり、エラーになるので相対パスで指定します。このhomeallはbasenameでこの名前をベースネームとしてバックアップが作成されます。
実行すると
 homeall.1.dar
とbasenameでファイルが作成されます。では差分です。
 dar -c /backup/homeall-1 -g home  -A /backup/homeall
homeall-1が差分basenameで、backup/homeallが完全バックアップのbasenameです。実行すると
 homeall-1.1.dar
で作成れます。ではリストア
 dar -x /backup/homeall
とするとカレントディレクトリにリストアされます。差分も同じです。あるファイルのみリストアしたい場合は、
 dar -x /backup/homeall -g home/hoge.txt
です。圧縮するときは -zでgzip -y でbzip2です。


コピー
 cp -ar /var/lib/mysql/*** /home/backup
 cp -ar /home/httpd/html /home/backup
dump
 #二日前のファイルを削除
 find /backup -mtime +1 -maxdepth 1 -name '*.zip' -exec rm -f {} \; 
 #バックアップ実行
 /sbin/dump -0f - /dev/hda1 2>> /backup/backup.log | gzip > /backup/hda1_`date +%m%d`.zip
 #圧縮しな場合
 dump -0f /backup/backup /dev/hda1
 #リストア
 zcat /backup/hda7_0307.zip | restore -tf - z

ユーザデータは/etcの
 passwd
 group
 shadow
をとっておきましょう。

http://www-6.ibm.com/jp/developerworks/linux/040213/j_l-roadmap8.html~
http://vision.featia.net/linux/rsync.jsp~
http://www.double-h.com/linux/tipsmemo/others/general01.html~
http://www.mediaweb.biz/database/cobalt_tips/cobalt_rsync.html~
http://ito-web.dip.jp/server_conf/mondo_rescue.html~
[[Linuxをシステムバックアップ>http://omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%F2%A5%B7%A5%B9%A5%C6%A5%E0%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7]]~

**ls コマンドでディレクトリのみを表示する方法
できなかったけ?
 find . -type d
これでみえるんだけど...

**サブディレクトリ以下も権限を変えたい
たとえば、拡張子phpをすべて555にしたい場合は、
 find . -name "*.php" -exec chmod 555 {} \;

** 簡単バックアップ
 cp -a /hoge /backup/hoge`date +%w`
これをcronに登録しておきます。すると1週間バックアップされます。%dであれば一ヶ月です。

**ディスク増設
http://www.a-yu.com/opt/fdisk.html~
http://www.deer-n-horse.jp/linux/tips/extension_hdd.html~

**cron
各フォルダに実行ファイルをおきます。/etc/crontabの中身参照
 分  時  日  月  曜日 実行者 実行オプション  実行コマンド
 01   *   *   *   *    root   run-parts       /etc/cron.hourly
 02   4   *   *   *    root   run-parts       /etc/cron.daily
 22   4   *   *   0    root   run-parts       /etc/cron.weekly
 42   4   1   *   *    root   run-parts       /etc/cron.monthly
最後はリターンで。run-partsを指定すると、ディレクトリ内にあるファイルをアルファベット順に実行してくれます。

 /etc/cron.hourly  毎時:01分に自動実行
 /etc/cron.daily   毎日:04時02分に自動実行
 /etc/cron.weekly  毎週:日曜:04時22分に自動実行
 /etc/cron.monthly 毎月:1日:04時42分に自動実行

 分 0 - 59 ex. */15(15分毎)
 時 0 - 23 ex. 0-4,8-12 
 日 1 - 31 ex. 1-20,25 
 月 1 - 12 ex. 1,6,12 
 曜日 0 - 7 0と7は日曜日 

5分毎に実行
 0-59/5 * * * * /test
該当する項目にカンマで区切って複数の数値を指定すると、その値ごとに実行される。たとえば次の例では10分ごとに実行される。 
 0,10,20,30,40,50 * * * *
以下のように指定すると、毎日5時~5時59分の1分ごとといった指定が可能。 
 * 5 * * *
/var/log/cron に、crond[xxxx]: (tmp.2081) ORPHAN (no passwd entry) というエラーが出ていました。これは/var/spool/cronにごみがいたみたいで、消しておきました。
各個人用には/var/spool/cronの配下に作成します。
また 
 run-parts /etc/cron.hourly
で/etc/cron.hourly以下のファイルが実行されます。このとき、拡張子があるファイルが無視されてたので、拡張子を消すと動いた。あと#/bin/shを書いておかないとexec format errで落ちたこともありました。

/etc/cron.allowがある場合は、rootのみ実行されます。中にユーザが設定されている場合はそのユーザとrootです。

http://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

**fstab
/etc/fstabで起動時に設定しているとマウントしてくれます。fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passnoで、例を挙げると
 LABEL=/                 /                       ext3    defaults        1 1
 LABEL=/boot             /boot                   ext3    defaults        1 2
fs_mntops
 defaults:rw、suid、dev、exec、auto、nouser、async などを用います  
 auto:mount -a で、自動的にマウントされます  
 noauto:mount -a で、自動的にマウントされません  
 user:一般ユーザーによるマウントを可能
 rw:読み取りと書き込み
 ro:読み取り専用
 grpquota:グループ・クオータ
 usrquota:ユーザー・クオータ
fs_freq
 0 ダンプする必要が無い
 1 ダンプする必要がある
fs_passno 
 0 検査する必要が無い
 1 検査する必要がある

** ディレクトリの容量がしりたい。
 du -s dir
オプションで-mはMバイト,-kはKバイト-bはバイト単位で表示します。サブディレクトリも表示されますが、総容量だけ知りたい場合は、-sをつけます。また
 df -k
でマウント先の容量がわかります。
 df -hT
見やすく表示します。

** ディレクトリを一気につくりたい
 mkdir -p hoge/hoge/hoge
** メモリ
 free -s 1 -c 300
メモリの情報が指定した秒数で表示される。 この場合は、1秒間隔で、300秒間出力する。
            total       used       free     shared    buffers     cached
 Mem:       1018348    1002200      16148          0      91376     709944
 -/+ buffers/cache:     200880     817468
 Swap:      2031608        160    2031448
と表示さるとき、この-/+ buffers/cacheが実際に使用されている容量である。またwatchコマンドで継続的に表示することもできる。
 watch -n 1 -d free
この-nが秒間隔で、-dが異なっている部分をハイライトで表示してくれる。
 vmstat 1 300
で、1秒間隔で300秒間、CPU,I/Oと併せて表示してくれます。

http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230989/
**アンチウィルス
[[BitDefender>http://www.bitdefender.com/bd/site/products.php?p_id=16]]からBitDefender-Console-Antivirus-7.0.1-3.linux-gcc29x.i586.rpmをダウンロードしました。後はrpm -ivhでインストールです。bdc --updateで定義ファイルを最新状態にします。また以下のコマンドでスキャンができます
 bdc --all --arc --delete --log=/var/log/bitdefendef.log /home

** nfk 文字コード変換
ない場合は、
 wget http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/nkf204.tar.gz
 tar xzvf nkf204.tar.gz
 cd nkf204
 make
 make test
 mv nkf /usr/bin/
使い方は、たとえば、
 find . -name '*.*' | xargs nkf -e -Lu --overwrite
とすると、EUCに変換されます。引数ですが
 -e EUCコードに変換
 -s シフトJISに変換
 -w UTF-8に変換
 -L 改行モード Luでunix(LF),Lwで(CRLF),Lmでmac(CR)
** パスワードの有効日数設定
chageを使います。
 -l hoge hogeユーザの情報を表示
 -M 10 hoge hogeユーザがパスワードを変更した後、変更が必要になるまで10日
 -m 10 hoge hogeユーザがパスワードを変更した後、変更できるようになるまで10日
 hoge 対話モードでhogeユーザの設定
一人ひとり設定するのはめんどくさい場合は、/etc/login.defsに設定しておく。
 
** 開いているファイル調べる
lsofを使います。
 -u ユーザ
 -g グループ
 -i:80 80番ポートを開いてるプロセスを調べる
 -c http コマンドがhttpで始まるプロセスを調べる
 -i@192.168.1.1 192.168.1.1が開いているプロセスを調べる

**制限をかける
ulimitを使います。
 -a 制限を表示
 -m メモリ
 -v 仮想メモリ
 -u 1人のユーザが利用可能なプロセス数
 -t cpu時間
** RAMディスクのようにメモリを使う。
 mount -t tmpfs -o size=10m tmpfs /dev/shm
 mount -t tmpfs -o size=10m /dev/shm /hoge
上限10MBのメモリのディスクを作成して、/hogeにマウントします。また常時使いたい場合は、/etc/rc.d/rc.localにでも記述しておきます。テンポラリでつかったり、もっと大きくとって、MySQLなどのDBをそっちに乗せて、高速化を図ったりしてみましょう。
**共有ライブラリを検索する場所
/etc/ld.so.confに記述する。ただし、/libと/usr/libは既定で登録されている為、設定はない。また編集後は、 /sbin/ldconfigで反映
 ldconfig -p | grep hoge.so
でキャッシュにあるかどうかを確認できる。
**文字コード
/etc/sysconfig/i18n
 LANG="ja_JP.UTF-8"
eucの場合
 LANG="ja_JP.eucJP"
日本語(ja)で日本国。文字コードはEUC
**nmap
ポートを調査します。http://www.insecure.org/nmap/からダウンロードしました。
 wget http://download.insecure.org/nmap/dist/nmap-4.20.tgz
 tar xzvf nmap-4.20.tgz
 cd nmap-4.20
 ./configure
 make 
 make install

** ポートを使っているプログラムを知りたい。
 netstat -lutp
 lsof -i:80,81
http://x68000.q-e-d.net/~68user/unix/pickup?netstat や http://www.atmarkit.co.jp/flinux/rensai/linuxtips/664useportps.htmlを参考に~
netstatの詳細はhttp://www.linux.or.jp/JM/html/net-tools/man8/netstat.8.html~
** ポートの状況
 netstat -ape

**ルートのみログインの許可をしたい。
マシンのメンテナンスをする場合等につかえます。/etc/nologinファイルを作成します。その中身はなんでもよく、とりあえずメッセージをいれておきます。するとroot以外ではログインできなくなります。また可能かどうかは/etc/pam.d/loginの中身を見てましょう。この中に
 auth       required     pam_nologin.so
とあれば、ルートのみのログインが可能です。

**ログイン後にメッセージ表示
/etc/motdにメッセージを追加。通常0バイトのファイルである。

**configureのオプションを忘れてしまった...
configureと同じ階層にconfig.statusというファイルがある場合、その中に記述がありますので、見てみましょう。

**make installしたソフトの管理
[[paco>http://paco.sourceforge.net/]]を使えば、rpmでなくても管理ができる!
 wget http://downloads.sourceforge.net/paco/paco-2.0.6.tar.gz?modtime=1223591447&big_mirror=0
 tar xzvf paco-2.0.6.tar.gz 
 cd paco-2.0.6
 ./configure
ありゃ?エラーだ
 checking for GTKMM... configure: error: The pkg-config script could not be found or is too old.  Make sure it
では、ftp://ftp.ring.gr.jp/pub/X/gnome/sources/gtkmm/2.4/より
 wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/gtkmm/2.4/gtkmm-2.4.8.tar.gz
 tar xzvf gtkmm-2.4.8.tar.gz  
 cd gtkmm-2.4.8
 ./configure
む?今度は
 configure: error: Library requirements (glibmm-2.4 >= 2.4.0 atk >= 1.6.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
んー とりあえずglibmmからいくか。ftp://ftp.ring.gr.jp/pub/X/gnome/sources/glibmm/2.4/より
 wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/glibmm/2.4/glibmm-2.4.8.tar.gz
 tar xzvf glibmm-2.4.8.tar.gz 
 cd glibmm-2.4.8
 ./configure
今度は、
 configure: error: The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
 To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
んーーー 無限地獄.. これLeopardでやっているんで、Linux等であれば、普通にいけるかも。
では、http://pkg-config.freedesktop.org/wiki/より
 wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
 tar xzvf pkg-config-0.23.tar.gz 
 cd pkg-config-0.23
 ./configure
 make
 make install
さてもう一度glibmmを
 ./configure
エラーが変わったぞ。
 configure: error: Package requirements (sigc++-2.0 >= 2.0.0 glib-2.0 >= 2.4.0 gobject-2.0 >= 2.4.0 gmodule-2.0 >= 2.4.0) were not met.
では、ftp://ftp.ring.gr.jp/pub/X/gnome/sources/libsigc++/2.0/より
 wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/libsigc++/2.0/libsigc++-2.0.18.tar.gz
 tar xzvf libsigc++-2.0.18.tar.gz 
 cd libsigc++-2.0.18
 ./configure
 make
 make install
ちょっと先は遠いなー 今度はCentでやってみよう。~
[["make install"したソフトウェアを管理できる超便利ツール「Paco」>http://d.hatena.ne.jp/rx7/20081011/p2]]~
[[link集/バージョン管理システム>http://www.nbrains.net/php/pukiwiki/index.php?Build%2FToytoiseSVN]]~
**ソフトウェアRAID
インストール画面のディスクパーティションの設定でDisk Druidを使用して手動パーティション設定を選択し、
ファイルシステムタイプでソフトウェアRAIDを選択し、ハードディスクも選択して、まず作成していきます。
このとき、シリンダで分ける場合は、右端でダブルクリックすると、その画面で表示されます。
swapはそのままで作成しておきます。そうでなくてもかまいません。お好みで。
同じことをもう一本のHDDにも行い、その後でRAIDボタンを選択し、RAIDデバイスを作成をしていきます。
ではインストールが終わりましたらブートローダのコピーをしておきます。grubと入力して、
 device (hd0) /dev/hdb
 root (hd0,0)
 install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf 
 quit
hdbではなくsdbの場合は
 device (hd0) /dev/sdb
 root (hd0,0)
 install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf
 quit
それでは
 more /proc/mdstat
で見てみましょう。
 Personalities : [raid1]
 md0 : active raid1 hdb1[1] hda1[0]
  104320 blocks [2/2] [UU]
であればとりあえずOKです。 [2/2] [UU] となっていますが、 [2/1] [U_]となっていれば片方が動作していません。
壊れたらこんな感じのメールが... メールは/etc/mdadm.confで送信先を確認しておきましょう。
 A Fail event had been detected on md device /dev/md3.
さて2台目も同じようにやってみましたが、
 Personalities : [raid0] [raid1]
 md0 : active raid0 hdb2[1] hda2[0]
      131539968 blocks 256k chunks
あれ?なんじゃこりゃ?失敗したのかな?ちょっと調査... どうも作成時にRAID0を選択してなかったようですね。raidtoolsを使おうとしたらないといわれました。どうも2.4までで、2.6からはmdadmを使うようです。
 mdadm --query /dev/md3
 /dev/md3: 48.83GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
 /dev/md3: No md super block found, not an md component.
これでraid1で2つのデバイスより構成されていることがわかります。詳細にみるには
 mdadm --detail /dev/md3
        Version : 00.90.01
  Creation Time : Tue Jul  5 01:43:51 2005
     Raid Level : raid1
     Array Size : 40957568 (39.06 GiB 41.94 GB)
    Device Size : 40957568 (39.06 GiB 41.94 GB)
   Raid Devices : 2
  Total Devices : 1
 Preferred Minor : 2
    Persistence : Superblock is persistent
 
    Update Time : Wed Jul 25 11:53:11 2007
          State : clean, degraded
 Active Devices : 1
 Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0
 
           UUID : 804f4246:8ee45dfb:61f65e69:124a6043
         Events : 0.163354
 
    Number   Major   Minor   RaidDevice State
       0       0        0        -      removed
       1       3       69        1      active sync   /dev/hdb5
ここで、Stateにdegradedが表示されている場合は、障害が発生しています。んー
しょがない。とりかえるか.... ということで、ディスク交換して、
 fdisk -l /dev/hda
でシリンダを控えておいて、
 fdisk /dev/hdb
でパーティションをhdaと同じようにふっていきます。後raidにしたいパーティションの種類をfd (linux raid auto)
にして、最後wで書き込みして終わります。後は
 fdisk -l /dev/hdb
で確認しておきます。さてここまではパーティションを作成しただけですので、raidに追加しましょう。
 mdadm --manage /dev/md0 --add /dev/hdb1
 mdadm --manage /dev/md1 --add /dev/hdb2
これで/dev/md0に追加されますので、
 more /proc/mdstat
で確認すると、新しいディスクにデータがコピーされている様子がわかります。

SoftwareDesignの2005/3月号に記事があります。本もでてますね。
[[Linux RAID入門>http://www.amazon.co.jp/exec/obidos/ASIN/4774130923/worried-22]]~

[[ソフトウェアRAIDに障害が発生した時の確認方法>http://max01.skr.jp/blog/2007/01/raid.html]]~
[[OSをRAID構成でインストール>http://www.obenri.com/_raid_build/pre_install_raid.html]]~
[[CentOS5をインストールしよう その2~インストール中にソフトウェアRAIDを構築しよう~>http://mizushima.ne.jp/Linux/CentOS/CentOS-install2-RAID.php]]~
[[ソフトウェアRAIDの導入>http://www.combu.org/gensui/machine/linux/raid.shtml]]~
[[ソフトウェアRAID1のつくりかた>http://justlikeakame.com/pc/softwareraid.html]]~
[[The Software-RAID HOWTO>http://www.linux.or.jp/JF/JFdocs/The-Software-RAID-HOWTO.html]]~
[[ソフトウェアRAIDの構築--パーティションの構築>http://www.atmarkit.co.jp/fpc/experiments/011raid4oldpc/raid4oldpc_04.html]]~

** mount
Windows2003 DCに対してマウントしたい場合。普通にやると、cli_negprot: SMB signing is mandatory and we have disabled itってなエラーが出たとき。
 mount.cifs //192.168.1.10/test /mnt/test -o username=hoge,passwrd=hogepass
じゃないWindowsの場合
 mount -t smbfs -O username=hoge,password=hogepass //192.168.1.10/test /mnt/test
ここでsmbfsがサポートされていない場合はcifsにしてみる。下記コマンドで使用できるファイルシステムを確認
 cat /proc/filesystems
nfs
 mount -t nfs 192.168.1.2:/ /mnt/hoge
参考:http://www.linux.or.jp/JM/html/util-linux/man8/mount.8.html
** パフォーマンス
IDEのパラメータを調整します。
 hdparm /dev/hda
 /dev/hda:
 multcount    = 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 19929/255/63, sectors = 163928604672, start = 0
このIO_supportでdefault 16-bitとなってますが、変更しましょう。まず
 hdparm -Tt /dev/hda
で
 Timing cached reads:   2200 MB in  2.00 seconds = 1099.07 MB/sec
 Timing buffered disk reads:  164 MB in  3.00 seconds =  54.64 MB/sec
を控えておきます。この、32bitに変更してみます。
 hdparm -c3 /dev/hda
いろいろと調整しみましょう。

参考:~
http://www.linux.or.jp/JM/html/hdparm/man8/hdparm.8.html~
[[Linuxのパフォーマンスを改善する3つのTips>http://www.itmedia.co.jp/enterprise/articles/0707/19/news012.html]]~
**ログアウトしてもプログラムを実行する。
 nohup hoge &
としますと、HUPシグナルを無視して実行してくれます。出力は~/nohup.outにされてます。
**コマンドやアプリケーションが、どんなライブラリをダイナミックリンクしているのか調べるには? 
 ldd
macの場合は
 otool -L
**ディスクの負荷を調べたい。
sysstatをインストールします。
http://perso.wanadoo.fr/sebastien.godard/からダウンロードしました。
 wget ftp://ibiblio.org/pub/linux/system/status/sysstat-6.0.1.tar.gz
 tar xzvf sysstat-6.0.1.tar.gz
 cd sysstat-6.0.1
 make config
とりあえずデフォルトでいきました。
 make
 make install
面倒な場合は、
 yum install sysstat
では
 iostat
また
 sar 1 5
とかするとCPUとIOの状況を一秒間隔で5回表示してくれたりします。
またmpstatというCPU 使用率を調べるコマンドもあります。
http://www.atmarkit.co.jp/flinux/rensai/root07/root07b.html
**ハードディスクを調べる
ハードディスクのセルフテスト shortで2分ぐらい
 smartctl -t short /dev/hda
ログは
 smartctl -l selftest /dev/hda
温度を調べる
 smartctl -a /dev/hda
を実行すると、
 194 Temperature_Celsius     0x0032   042   253   000    Old_age   Always       -       44
と出力されるので、右端が温度 -aですべての情報が表示される。この194とう項目IDは
http://ja.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technologyを参考に。また
 Device: /dev/hda, 1 Currently unreadable (pending) sectors
こんなログがmessagesにでていたら、一度セルフテストを実行し、-a
 SMART Self-test log structure revision number 1
 Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
 # 1  Short offline       Completed: read failure       60%     17878         234152622
この234152622を確認します。
 fdisk -lu /dev/hda
 Disk /dev/hda: 163.9 GB, 163928604672 bytes
 255 heads, 63 sectors/track, 19929 cylinders, total 320173056 sectors
 Units = セクタ数 of 1 * 512 = 512 bytes
 
  デバイス Boot      Start         End      Blocks   Id  System
 /dev/hda1   *          63      208844      104391   fd  Linux raid 自動検出
 /dev/hda2          208845   131749064    65770110   fd  Linux raid 自動検出
 /dev/hda3       131749065   234147374    51199155   fd  Linux raid 自動検出
 /dev/hda4       234147375   320159384    43006005    5  拡張領域
 /dev/hda5       234147438   316062809    40957686   fd  Linux raid 自動検出
 /dev/hda6       316062873   320159384     2048256   82  Linux スワップ
どうも/dev/hda5にあるようです。

[[不良セクタの解消>http://d.hatena.ne.jp/k3c/20060601/p2]]
**Xlib: connection to "display:0.0" refused by server
 xhost + ホスト名
で追加してやりましょう。
**TCP転送
rinetdを使えばできるらしい。検証はしてません。
**bashで履歴操作
 Ctrl+r
とすると
 (reverse-i-search)`':
って変わるので、文字を入力すると履歴を後方検索してくれます。逆はCtrl+sなんですが、
 stty -a
で確認すると、
 stop = ^S;
ってなってますんで、とまっちゃうので、
 stty stop ^x 
とかに変更しておけばいいのですが、Ctrl+sを押すと
 (i-search)`':
ってなります。
**configure: error: C++ preprocessor "/lib/cpp" fails sanity check
 yum install gcc-c++
**etc
http://www.linuxworld.jp/etc/
**CPU情報
 cat /proc/cpuinfo
http://www-06.ibm.com/jp/developerworks/linux/030314/j_l-htl.html~
http://www-06.ibm.com/jp/developerworks/linux/040227/j_l-web26.html~
**カーネルパニック後の再起動?
echo 30 > /proc/sys/kernel/panic 
**リカバリ用Linux
リカバリに特化しているlinuxだそうです。[[RIPlinux>http://www.tux.org/pub/people/kent-robotti/looplinux/rip/]]
**fedora8で解像度が変わらん!
メニューのシステム>管理>ディスプレイから選択すると解像度が変わらないので、設定>ハードウェア>画面の解像度から変更すると変わりました。次ログインし直すと、やたら文字が大きくなっていたので、画面を右クリックして、背景の変更を選択し、フォントタブの詳細ボタンをクリックして、解像度の値を変更しておきました。
** CentOS6.5 インストール時のパッケージ追加
インストールのときに種類を選んで「今すぐカスタマイズ」を選びます。~
その後パッケージグループを選びますが、そのままでは最小のパッケージしかインストールされません。~
chroot化されたBINDなどを最初からインストールしたい場合はパッケージグループを選んだ後「追加パッケージ」を押してパッケージグループの詳細から追加するパッケージを選びましょう。
** CentOS6.5 インストール後のLVMサイズ変更
CentOS6をインストールするとLVMで/ディレクトリのサイズを小さく
/homeディレクトリを大きく確保されてしまいます。

 /dev/mapper/VolGroup-lv_root
                     ext4    50G   47G   37M 100% /
 tmpfs               tmpfs  3.9G     0  3.9G   0% /dev/shm
 /dev/sda3           ext4   477M   61M  391M  14% /boot
 /dev/mapper/VolGroup-lv_home
                     ext4   399G   20G  360G   6% /home

rootが50GBでhomeが399GBです。
このままMySQL等を使用しているといつかこんな感じで怒られます。
 got error 28 from storage engine

なのでLVMのサイズを変更します。
今回はrootとhomeのサイズを逆にします。

※必ずバックアップを取ってから作業しましょう!!

1.homeディレクトリアンマウント
 umount /home

2.ファイルシステムチェック
 fsck.ext4 -f /dev/mapper/VolGroup-lv_home
 
 e2fsck 1.41.12 (17-May-2010)
 Pass 1: Checking inodes, blocks, and sizes
 Pass 2: Checking directory structure
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
 /dev/mapper/VolGroup-lv_home: 4190/26574848 files (0.5% non-contiguous), 6729788/106281984 blocks

3./homeファイルシステムサイズを50GBに変更
 resize2fs /dev/mapper/VolGroup-lv_home 50G
 
 resize2fs 1.41.12 (17-May-2010)
 Resizing the filesystem on /dev/mapper/VolGroup-lv_home to 13107200 (4k) blocks.
 The filesystem on /dev/mapper/VolGroup-lv_home is now 13107200 blocks long.

4./home論理ボリュームを50GBに変更
 lvreduce -L 50G /dev/mapper/VolGroup-lv_home
 
 WARNING: Reducing active logical volume to 50.00 GiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
 Do you really want to reduce lv_home? [y/n]: y ※データ破壊される恐れあるけど、本当にいいの?y
 Size of logical volume VolGroup/lv_home changed from 405.43 GiB (103791 extents) to 50.00 GiB (12800 extents).
 Logical volume lv_home successfully resized

5.ext4で/homeをマウント
 mount -t ext4 /dev/mapper/VolGroup-lv_home /home

6.ファイルサイズ確認
 df -Th
 
 /dev/mapper/VolGroup-lv_root
                     ext4    50G   47G   37M 100% /
 tmpfs                tmpfs  3.9G     0  3.9G   0% /dev/shm
 /dev/sda3            ext4   477M   61M  391M  14% /boot
 /dev/mapper/VolGroup-lv_home
                     ext4    50G   20G   28G  42% /home

無事に50GBに変更されました。
次にrootディレクトリを拡張します。

1./root論理ボリュームを399GBに変更
 lvextend -L 399G /dev/mapper/VolGroup-lv_root
 
 Size of logical volume VolGroup/lv_root changed from 50.00 GiB (12800 extents) to 399.00 GiB (102144 extents).
 Logical volume lv_root successfully resized

2./rootファイルシステムサイズを変更
 resize2fs /dev/mapper/VolGroup-lv_root
 
 resize2fs 1.41.12 (17-May-2010)
 Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
 old desc_blocks = 4, new_desc_blocks = 25
 Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 104595456 (4k) blocks.
 The filesystem on /dev/mapper/VolGroup-lv_root is now 104595456 blocks long.

3.サイズ確認
 df -Th
 
 /dev/mapper/VolGroup-lv_root
                     ext4   393G   47G  327G  13% /
 tmpfs                tmpfs  3.9G     0  3.9G   0% /dev/shm
 /dev/sda3            ext4   477M   61M  391M  14% /boot
 /dev/mapper/VolGroup-lv_home
                     ext4    50G   20G   28G  42% /home

無事に変更されました。~
最後に一度再起動をして正常に起動できればOK~
インストール時に変更できれば変更しておくようにしましょう。


** リンク
***[[コマンド集>http://itpro.nikkeibp.co.jp/linux/command/index.shtml]]
***[[ホームディレクトリの引越し>http://www.a-yu.com/pub/qa27.html]]
***[[ブートCD作成>http://www1.u-netsurf.ne.jp/~ysk-net/dest/Column/bootcd.html]]
***[[BashとBashのプロンプト>http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO-2.html#ss2.5]]
***[[Linuxにデフラグが無い理由>http://www.geekpage.jp/blog/?id=2006/8/22]]
***[[Linux を電源ボタンで shutdown (by apmd)>http://www.nn.iij4u.or.jp/~tutimura/shutdown.html]]
***[[Linuxのネットワークで悩まない10のコツ>http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20379256,00.htm]]
***[[第7回 Linux印刷システムの仕組みと設定>http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill07/lpicdrill01.html]]
***[[Linuxにソフトウェアをインストールする際にやってしまいがちな失敗10選>http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20380440,00.htm]]
***[[「実現したいことを計算機の問題に置き換えることが『技術力』」、伊藤CTOが“はてな流”大規模データ処理の極意を語る>http://codezine.jp/article/detail/3315]]
一読しておきましょう。
** コメント
--#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS