Total Pageviews

Sunday, 11 December 2011

查看Linux VPS系统信息的命令大全

系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# cat /proc/cpuinfo | grep flags | grep ‘ lm ‘ | wc -l

2(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
#lscpu  (查看cpu信息概要。在ubuntu上竟然也有~)
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
-----------------------------------

  1. # uname -a               # 查看内核/操作系统/CPU信息
  2. # head -n 1 /etc/issue   # 查看操作系统版本
  3. # hostname               # 查看计算机名
  4. # lspci -tv              # 列出所有PCI设备
  5. # lsusb -tv              # 列出所有USB设备
  6. # lsmod                  # 列出加载的内核模块
  7. # env                    # 查看环境变量资源
  8. # free -m                # 查看内存使用量和交换区使用量
  9. # df -h                  # 查看各分区使用情况
  10. # du -sh <目录名>   # 查看指定目录的大小
  11. # grep MemTotal /proc/meminfo   # 查看内存总量
  12. # grep MemFree /proc/meminfo    # 查看空闲内存量
  13. # uptime                 # 查看系统运行时间、用户数、负载
  14. # vmstat     # 查看详细系统运行信息
  15. # cat /proc/loadavg      # 查看系统负载磁盘和分区
  16. # mount | column -t      # 查看挂接的分区状态
  17. # fdisk -l               # 查看所有分区
  18. # swapon -s              # 查看所有交换分区
  19. # dmesg | grep IDE       # 查看启动时IDE设备检测状况网络
  20. # ifconfig               # 查看所有网络接口的属性
  21. # iptables -L            # 查看防火墙设置
  22. # route -n               # 查看路由表
  23. # netstat -lntp          # 查看所有监听端口
  24. # netstat -antp          # 查看所有已经建立的连接
  25. # netstat -s             # 查看网络统计信息进程
  26. # ps -ef                 # 查看所有进程
  27. # top                    # 实时显示进程状态用户
  28. # w                      # 查看活动用户
  29. # id <用户名>            # 查看指定用户信息
  30. # last                   # 查看用户登录日志
  31. # cut -d: -f1 /etc/passwd   # 查看系统所有用户
  32. # cut -d: -f1 /etc/group    # 查看系统所有组
  33. # crontab -l             # 查看当前用户的计划任务服务
  34. # chkconfig –list       # 列出所有系统服务
  35. # chkconfig –list | grep on    # 列出所有启动的系统服务程序
  36. # rpm -qa                # 查看所有安装的软件包
  37. # cat /proc/cpuinfo 查看CPU相关参数
  38. # cat /proc/partitions 查看硬盘和分区
  39. # cat /proc/meminfo 查看内存信息
  40. # cat /proc/ioports 查看设备io端口
  41. # cat /proc/interrupts 查看中断
  42. # cat /proc/pci 查看pci设备的信息
  43. # cat /proc/swaps  查看所有swap分区的信息
http://s3d4.turboimagehost.com/sp/9b42dfa2ba5836433332e86ae88f5466/linux_commands.png

http://s3d3.turboimagehost.com/sp/48b0350305fe6085c85610be1feb2667/linux_commands-2.png
------------------------------------------------------------------------
系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量
资源
# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载
磁盘和分区
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
网络
# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息
进程
# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态
用户
# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务
服务
# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
程序
# rpm -qa                # 查看所有安装的软件包
 ----------------------------------------------------------------------------------------------
RPM

在Linux 操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是 Red Hat Package Manager(简称RPM)。此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就 给大家介绍一下它的具体使用方法。

1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看:
rpm -qpi Linux-1.4-6.i368.rpm

系统将会列出这个软件包的详细资料,包括含有多少个文件、各文件名称、文件大小、创建时间、编译日期等信息。

2.上面列出的所有文件在安装时不一定全部安装,就像Windows下程序的安装方式分为典型、完全、自定义一样,Linux也会让你选择安装方式,此时我们可以用下面这条命令查看软件包将会在系统里安装哪些部分,以方便我们的选择:
rpm -qpl Linux-1.4-6.i368.rpm

3. 选择安装方式后,开始安装。我们可以用rpm-ivh Linux-1.4-6.i368.rpm命令安装此软件。在安装过程中,若系统提示此软件已安装过或因其他原因无法继续安装,但若我们确实想执行安装命 令,可以在 -ivh后加一参数“-replacepkgs”:
rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm

4.卸载某个安装过的软件,只需执行rpm -e xxx.rpm命令即可。

5.对低版本软件进行升级是提高其功能的好办法,这样可以省去我们卸载后再安装新软件的麻烦,要升级某个软件,只须执行如下命令:rpm -uvh <文件名>;,注意:此时的文件名必须是要升级软件的升级补丁.

6. 另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。当找到含有你所需软件的站点并 与此网站连接后,执行下面的命令即可实现在线安装,譬如在线安装Linux-1.4-6.i368.rpm,可以用命令:
rpm -ivh ftp://ftp.pht.com/pub/linux/redhat/…-1.4-6.i368.rpm

7. 在我们使用电脑过程中,难免会有误操作,若我们误删了几个文件而影响了系统的性能时,怎样查找到底少了哪些文件呢?RPM软件包提供了一个查找损坏文件的 功能,执行此命令:rpm -Va即可,Linux将为你列出所有损坏的文件。你可以通过Linux的安装光盘进行修复。

8.Linux系统中文件繁多,在使用过程中,难免会碰到我们不认识的文件,在Windows下我们可以用“开始/查找”菜单快速判断某个文件属于哪个文件夹,在Linux中,下面这条命令行可以帮助我们快速判定某个文件属于哪个软件包:
rpm -qf <文件名>;

9.当每个软件包安装在Linux系统后,安装文件都会到RPM数据库中“报到”,所以,我们要查询某个已安装软件的属性时,只需到此数据库中查找即可。注意:此时的查询命令不同于1和8介绍的查询,这种方法只适用于已安装过的软件包!命令格式:
rpm -参数 <文件名>;

APT-GET
apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。
apt-get install packagename——安装一个新软件包(参见下文的aptitude)
apt-get remove packagename——卸载一个已安装的软件包(保留配置文件)
apt-get –purge remove packagename——卸载一个已安装的软件包(删除配置文件)
dpkg –force-all –purge packagename 有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险。
apt-get autoclean apt会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
apt-get clean 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
apt-get upgrade——更新所有已安装的软件包
apt-get dist-upgrade——将系统升级到新版本
apt-cache search string——在软件包列表中搜索字符串
dpkg -l package-name-pattern——列出所有与模式相匹配的软件包。如果您不知道软件包的全名,您可以使用“*package-name-pattern*”。
aptitude——详细查看已安装或可用的软件包。与apt-get类似,aptitude可以通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。由于aptitude比apt-get了解更多信息,可以说它更适合用来进行安装和卸载。
apt-cache showpkg pkgs——显示软件包信息。
apt-cache dumpavail——打印可用软件包列表。
apt-cache show pkgs——显示软件包记录,类似于dpkg –print-avail。
apt-cache pkgnames——打印软件包列表中所有软件包的名称。
dpkg -S file——这个文件属于哪个已安装软件包。
dpkg -L package——列出软件包中的所有文件。
apt-file search filename——查找包含特定文件的软件包(不一定是已安装的),这些文件的文件名中含有指定的字符串。apt-file是一个独立的软件包。您必须 先使用apt-get install来安装它,然后运行apt-file update。如果apt-file search filename输出的内容太多,您可以尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文件名)或者类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文件,如果您要查找的是某个特定的执行文件的话,这样做是有帮助的)
-----------------------------------------------------------------------------------
redhat/centos下的一些命令

smbclient用法:
smbclient -L //share -U frank
或 smbclient -L //share -U frank -W workgroup

也可以用mount
mount -t cifs -o username=frank,password=123456 //10.0.0.11/share /mnt

Fedora Linux 修改預設顯示語系

先備份
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak

然後修改
vim /etc/sysconfig/i18n

修改開機用哪一個kernel
vim /boot/grub/grub.config
修改default=0 改為需要的kernel號碼
如果改錯後重開機, 無法開機:
1. 重開機
2. 開機紅色畫面出現時, 按esc
3. 在quiet後面輸入 1 (開機到level 1 single user mode)
4. 改回原本的設定

use yum sample:
cd /var/cache/yum (yum的cache檔存放路徑)
rm -rf ./* 刪yum cache

ftp 192.168.0.254
ftp ftp
cd pub
cd server
mget aman*

yum list createrepo
yum install createrepo (安裝產生yum repo的工具)

createrepo -v /REPO (在/REPO目錄產生repo檔)

yum remove amanda 移除套件

yum whatprovides /etc/inittab 查inittab來自哪個package

server.repo file sample

repo檔存放目錄 /etc/yum.repos.d

編輯一個 .repo的文字檔 , 如: server1.repo 內容參考如下:
# Main rhel5 server
[server-base]
name=Server1 Server Repository
#baseurl=ftp://10.0.1.200/pub/Server/Server
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0
enabled=1

# This one is needed for xen packages
[server-VT]
name=Server1 VT Repository
#baseurl=ftp://10.0.1.200/pub/Server/VT
baseurl=ftp://192.168.0.254/pub/VT
gpgcheck=0
enabled=1
check package
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm -qa gpg-pubkey
出現: gpg-pubkey-37017186-45761324
用 rpm -K amanda-2.5.0p2-4.i386.rpm
出現 amanda-2.5.0p2-4.i386.rpm: (sha1) dsa sha1 md5 gpg OK 表示經過redhat確認的package

show出程式所安裝的package
rpm -qf /etc/passwd
出現setup-2.5.58-1.el5
rpm -qf /etc/inittab
出現: initscripts-8.45.17.EL-1

rpm顯示安裝過程:
rpm -ivh amanda-2.5.0p2-4.i386.rpm
出現:
Preparing... ########################################### [100%]
1:amanda ########################################### [100%]

更新kernel:
uname -r 查kernal版本
rpm -ivh kernel-2.6.18-53.el51ex.i686.rpm
出現:
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]

修改開機相關設定:
vim /boot/grub/grub.conf
修改default指定的 kernal

修改開機的run level
vim /etc/inittab
修改這一行 : id:5:initdefault: (如果要run level 為3, 就把5改為3)

查詢服務的run level
chkconfig --list
設定開啟某一個服務
chkconfig httpd on
service httpd start
或指定httpd服務在run level 3,4,5 實時才啟動
chkconfig --level 345 httpd on
service httpd start

建立Initial RAM Disk
mkinitrd /boot/initrd-$(uname -r) $(uname -r)

校時
ntpdate time.stdtime.gov.tw
ntpd
hwclock -w (寫入硬體時間)

建立printer, 連到網路印表機
到 http://localhost:631/
點Adding Printers and Classes
點add printer
輸入name為ex: prt250 後點continue
選internet printing protocal (ipp) 點continue
輸入url: ipp://192.168.0.254/printers/prta
或http://10.0.2.15:631/ipp/
選製造商Make點continue (如選Generic)
選Model (如: Generic text-only printer)點add printer
查看印表機
lpstat -t
測試列印
lp -d prt250 /etc/passwd
刪除印表機
lpadmin -x prt251(印表機名稱)
分享印表機
vim /etc/cups/cups.config
Listen localhost:631的下一行
加入: Listen 192.168.0.254:631


Order allow,deny
Allow localhost
Allow 192.168.0.254 <--加這一行

scp語法:
從本機copy file到遠端:
scp /home/test/test.php frank@my.testweb.com:/home/frank/
從遠端copy file到本機:
scp frank@my.testweb.com:/home/frank/test.php /home/frank/

編輯cron
使用crontable -e
內容ex:
59 13 * * * echo "test" > /tmp/cron.1
查看cron
ls /var/spool/cron/ 會看到username, 如 root的cron
cat ls /var/spool/cron/root 就會看到:
59 13 * * * echo "test" > /tmp/cron.1 (格式為: m H d M W 執行命令)

補做cron (只捕system cron)
用anacron system
排程設定查詢: /etc/anacrontab
anacron最後執行時間記錄:
/var/spool/anacron/cron.daily 和 /var/spool/anacron/cron.weekly 和 /var/spool/anacron/cron.monthly

/etc/cron.daily/0anacron

fdisk切partition
df
dumpe2fs /dev/hda
fdisk /dev/hda
按n 新增
輸入First cylinder : 1206
輸入size: +200M
按w去寫入和離開
fdisk -l /dev/hda
cat /proc/partitions
partprobe
cat /proc/partitions
mke2fs -j /dev/hda9
mkdir /data1
mount /dev/hda9 /data1
dumpe2fs /dev/hda9 | less
修改 vim etc/fstab 開機自動mount新的partition
vim etc/fstab
最後一行加上:
/dev/hda9 /data1 ext3 defaults 0 3 (0: for dump 3: for fsck)

用parted建partition
parted /dev/hda print
parted /dev/hda mkpart logical 9912 10012
parted /dev/hda print
parted /dev/hda rm 10
parted /dev/hda print

partition swap
fdisk /dev/hda
按n
first cylinder: 1026
partno: 10
查type, 輸入: L
輸入: 82 (is swap)
w (存檔)
partprobe (同步到kernel)
mkswap /dev/hda10 (產生swap)
cat /proc/swaps (查尋swap發現不存在)
swapon /dev/hda10 (起動swap)
cat /proc/swaps (查尋swap發現存在)
設開機mount
vim /etc/fstab
ADD /dev/hda10 swap swap defaults 0 0

fdisk選單內容:
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)


mount server share folder:
showmount -e 192.168.0.254 (list share folder)
mkdir /NFS1
mount 192.168.0.254:/abc/john /NFS1
edit fstab to boot mount:
vim /etc/fstab
add192.168.0.254:/abc/john /NFS1 nfs defaults 0 0

server 的 share folder設定
mkdir /home/ccc
編輯 vim /etc/exports 檔
內容: /home/ccc 192.168.0.0/24(rw)
再輸以下2個指令:
service nfs start
/etc/init.d/portmap start
這時再打: showmount -e 192.168.0.21
就可以看到:
Export list for 192.168.0.21:
/home/ccc 192.168.0.0/24

參考:
http://linux.vbird.org/linux_server/0330nfs.php

讓bbb目錄底下的檔案在建立時都能繼承目錄的group權限
mkdir bbb
chmod 2777 bbb (或chmod g+s bbb)
ls -al 看到目錄權限
drwxrwsrwx 2 root root 1024 2月 28 19:21 bbb
裡面的檔案任何group裡的人都能刪
chmod 1777 bbb
ls -al
drwxrwxrwt 2 root root 1024 2月 28 19:21 bbb
裡面的檔案只有: 1. file的owner, 2. 目錄的owner 3. root 才能刪

automount:
1. vim /etc/auto.master
content add:
/- /etc/auto.abc

2. showmount -e 192.168.0.254
Export list for 192.168.0.254:
/abc/john 10.0.1.0/255.255.255.0,192.168.0.0/255.255.255.0

3. vim /etc/auto.abc
content add:
/home/abc 192.168.0.254:/abc/john
4. service autofs restart
5. cd /home/abc
6. ls -al (will auto mount)

indirect mount
vim /etc/auto.master
加/home/jjj /etc/auto.jjj
vim /etc/auto.jjj
加dira 192.168.0.254:/abc/john
service autofs start
ls /home/jjj/dira


umask
root umask default為 022
user umask default為 002
umask ex:
mkdir ccc
ls -al
drwxr-xr-x 2 root root 1024 2月 28 19:51 ccc
在root的shell裡下指令: umask 002
mkdir ddd
drwxrwxr-x 2 root root 1024 2月 28 19:51 ddd

setfacl -m d:u:david:rw- sss (設定david在sss目錄底下的default權限為rw-)

/etc/hosts (local名稱解析)
/etc/resolv.conf (remote名稱解析)
etc/nsswitch.config (內容裡: host: files dns)

可用語系可以打 locale -a 來查詢

使用nis:
system-config-authentication
輸入nis網域 如: rhce
輸入ip: 192.168.0.254
使用nis要注意selinux的布林要設定

Set ACL
touch zzz
setfacl -m u:david:rw- zzz
ls -al
-rw-rw-r--+ 1 root root 0 2月 28 23:53 zzz
getfacl zzz
內容:
# file: zzz
# owner: root
# group: root
user::rw- (owner 權限)
user:david:rw- (david權限)
group::r--
mask::rw- (最大權限)
other::r--
setfacl -x u:david zzz (取消david對zzz的ACL)
setfacl -b zzz (取消zzz的所有acl)

for mount directory use acl
setfacl -m u:david:rw- dira
setfacl: dira: 此項操作並不被支援
mount -o remount,acl /data1
OR modify /etc/fstab --> default,acl

設user quota:
vim /etc/fstab
LABEL=/home /home ext3 defaults,usrquota
mount -o remount,usrquota /home
quotacheck -c /home
edquota -u david
對內容: soft設8000(8M) hard設10000(10M)
查quota使用狀況:
repquota -uav

dump: (backup partition)
df
backup /dev/hda8 (/home)
dump 0uf /tmp/home.dump0 /dev/hda8 (backup /home to /tmp/home.dump0)
cat /etc/dumpdates
(will see: /dev/hda8 0 Mon Mar 1 17:48:35 2010 +0800)
vim /home/hhh.txt
dump 1uf /tmp/home.dump1 /dev/hda8 (incremental backup)
cat /etc/dumpdates
will see:
/dev/hda8 0 Mon Mar 1 17:48:35 2010 +0800
/dev/hda8 1 Mon Mar 1 17:51:47 2010 +0800

restore:
restore tvf home.dump0 (list dump data list)
restore xvf home.dump0 ./bbb/test (only extract /bbb/test file)
input 1 (volume)
input n (permision)
restore ivf home.dump0 (interactive extract)
restore > add ccc (mark ccc folder )
restore > add frank (mark frank folder )
restore > ls
will see:
2 ./ 106081 bbb/ 11 lost+found/
2 ../ 48961 *ccc/ 83641 nfs/
6122 aquota.user 79561 *frank/ 6121 zzz
restore > quit (type help show command)
restore > extract
input 1 (volume)
input n (permission)
restore > quit
restore rvf home.dump0 (extract all file)

製作磁碟的RAID 1 (need 2 partition):
fdisk -l /dev/hda
fdisk /dev/hda
n (new pattition)
1213 (First cylinder)
+200m (size)
t (change partition system id)
11 (partition number)
L (look for list codes)
fd (Linux raid auto)
w (write)
create next partition
n (new pattition)
1238 (First cylinder)
+200m (size)
t (change partition system id)
11 (partition number)
L (look for list codes)
fd (Linux raid auto)
w (write)
q (exit)
fdisk -l /dev/hda (see result)
partprobe
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/hda11 /dev/hda12 (make 2 partition to RAID 1: md0)
(-C create, -a yes 為answer=yes, -l 1 為Raid 1, -n 2 為2個partition)
(所以raid 5要3個以上partition, 為: mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/hda11 /dev/hda12 /dev/hda13)
mdadm --detail /dev/md0
mke2fs -j /dev/md0
mkdir /MD1
mount /dev/md0 /MD1
vim /etc/fstab
content add: /dev/md0 /MD1 ext3 defaults 0 3

stop Raid 1:
mdadm -S /dev/md0

LVM:
fdisk /dev/hda (new hda13 , size +200M, 注意 Hex code : 8e  (Linux LVM) )
partprobe
pvcreate /dev/hda13 (create phisycal volume)
vgcreate vg0 /dev/hda13 (create volume group)
vgdisplay (to show vloume size)
lvcreate -L 100M -n LV-01 vg0
mke2fs -j /dev/vg0/LV-01
mkdir /LM1
mount /dev/vg0/LV-01 /LV1
vim /etc/fstab
content add:
/dev/vg0/LV-01 /LV1 ext3 defaults 0 3

add logical Volume size:
fdisk /dev/hda (new hda14 , size +200M, 注意 Hex code : 8e  (Linux LVM) )
partprobe
pvcreate /dev/hda14 (create phisycal volume)
vgextend vg0 /dev/hda14
vgdisplay (to show vloume size)
lvextend -L +200M /dev/vg0/LV-01
resize2fs /dev/vg0/LV-01

reduce LVM (size become smaller)
e2fsck - f /dev/vg0/LV-01
umount /LV1
resize2fs /dev/vg0/LV-01 390M
lvreduce -L 390M /dev/vg0/LV-01
mount /dev/vg0/LV-01 /LV1

LVM snapshots:
lvcreate -L 50M -p r -s -n snoopy /dev/vg0/LV-01 (50M size, permision, readonly , snapshot name:snoopy)
dump 0uf /tmp/LV.dump /dev/vg0/snoopy (backup snapshot)
lvremove vg0 /dev/vg0/snoopy (remove snapshot)

可參考這篇: http://blog.roodo.com/albertarea/archives/8531489.html

install Xen:
yum -y install kernel -xen xen virt-manager
vi /boot/grub/grub.conf
改 default=0
(因為 kernel /xen.gz-2.6.18-53.el5 這個kernel才support vm )
重開機
輸入 virt-manager &
點 new去新增 vm

xinetd service configuration (以telnet service為例):
yum install telnet-server
chkconfig telnet on
vim /etc/xinetd.d/telnet
可設access control:
only_from = 192.168.0.0/24 (只有這個網段可以access)
no_access = 192.168.0.1 (不可acess)

Service and Application Access controls
ldd /usr/sbin/xinetd
內容為:
linux-gate.so.1 => (0x00d51000)
libselinux.so.1 => /lib/libselinux.so.1 (0x002df000)
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00489000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00110000)
libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00236000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x0086b000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x00491000)
libdl.so.2 => /lib/libdl.so.2 (0x00ff1000)
libsepol.so.1 => /lib/libsepol.so.1 (0x00f09000)
/lib/ld-linux.so.2 (0x00b54000)
從chkconfig --list 或ls /etc/xinetd.d/ 查到哪個服務acxcess control屬xinetd管轄
所以可以 vim /etc/hosts.allow 去設定telnet和ssh的allow ip
加入: in.telnetd,sshd 192.168.0.254 192.168.0.21
把telnet 和 sshd 這2個 daemon (process) 設 allow的ip address為192.168.0.254和21

SELinux
可看 /etc/sysconfig/selinux 查目前設訂
getenforce
看到:Enforcing
setenforce 0
看到:Permissive
(Enforcing和Permissive切換不用重開機 設disable要重開機)
有關ftp, NIS, telnet, samba和SELinux相關設定

產生與簽核數位簽章
request form:
cd /etc/pki/tls/misc/
密碼: ex: abc123
TW
Taiwan
Taipei
UUU (or Yahoo)
dev (部門)
station21.example.com.tw
frank@station21.example.com.tw
enter
enter
產生 newkey.pem newreq.pem (newkey.pem為私鑰)

當CA
./CA -newca
密碼: xyz123
TW
Taiwan
Taipei
UUU (or Yahoo)
dev (部門)
station21.example.com.tw
frank@station21.example.com.tw
enter
enter
密碼:xyz123
產生cacert.pem
(重建CA: 把 /etc/pki/CA目錄del)

簽署簽章
./CA -sign
密碼:xyz123
y
y
產生 newcert.pem

建立rsa
ssh-keygen -t rsa
ssh-copy-id -i id_rsa.pub frank@192.168.0.71
or
ssh-keygen -t rsa
cd .ssh
ssh-copy-id -i id_rsa.pub root@192.168.0.71

查哪些port 在 listen
netstat -ntlp

netfilter 防火牆:
重點為保護server, iptables INPUT的設定為重, 可以從vim /etc/services 查到service的通訊協定和port
iptables設定檔: vim /etc/sysconfig/iptables
iptables -t filter的-t參數沒寫的話預設都是filter table
iptables -F (iptable flush掉)
iptables -A INPUT -p icmp -s 192.168.0.71 -j DROP ( 將來自192.168.0.71的ping drop掉)
service iptables save (存檔重開機後, 設定仍有效)
如果要把iptables的規則寫成shell script, 建議可放在 /etc/sysconifig/rc.local/ 裡去執行

iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.0.71 -j DROP ( 將來自192.168.0.71的ping drop掉)
iptables -I INPUT 1 -p icmp -s 192.168.0.71 -j LOG --log-prefix "--Netfilter log--" ( 插入一個rule到INPUT的第一條rule, 將來自192.168.0.71的ping Log起來)
iptables -D INPUT 1 (刪掉INPUT的第1條rule)
Connection Tracking:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
由本地方出request封包, 對方回應的封包都ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
任何SMTP的封包都ACCEPT
iptables -A INPUT -m state --state NEW -j DROP
其它新進來(非本地發出request然後對方回應)封包DROP
chain:
iptables -N chain1 (建立一個custom chain)
iptables -A chain1 -s 192.168.0.71 -p tcp --dport 25 -j DROP (建立chain1的內容)
iptables -A INPUT -s 192.168.0.71 -j chain1 (建立規則指到chain1)
NAT:
source NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -jSNAT --to-source 1.2.3.56
(把192.168.1網段出去的ip改為1.2.3.56)
destination NAT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -jDNAT --to-destination 192.168.1.3:80
把進來的HTTP request指到內部的192.168.1.3
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -jDNAT --to-destination 192.168.1.4:28
把進來的SMTP request指到內部的192.168.1.4

DNS:
Trace DNS query
dig +trace www.yahoo.com.tw
maintain DNS:
到 /var/named/chroot
vim named.boot
內容為:
DRECTORY /var/named
cache . named.ca
PRIMARY example named.host
PRIMARY 0.168.192.in0addr.arpa named.rev
PRIMARY 0.0.127.in-addr.arpa named.local
存檔後:
named-bootconf < named.boot > named.conf
產生 named.conf
然後...媽的....Linux的DNS真的粉難設定.

vsftp:
cd /var/ftp/
mkdir incoming
chown root.ftp /var/ftp/incoming
chmod 730 /var/ftp/incoming/
vim /etc/vsftpd/vsftpd.conf
內容加入:
anon_upload_enable=YES
chown_uploads=YES
chown_username=nobody
anon_umask=077

chcon -t public_content_rw_t /var/ftp/incoming
setsebool -P allow_ftpd_anon_write=1
service vsftpd restart
編輯user登入
vim /etc/pam.d/vsftpd
設定sense=deny file=/etc/vsftpd/ftpusers (阻檔user名單在etc/vsftpd/ftpusers)
設定sense=allow file=/etc/vsftpd/ftpusers (ㄊ允許user名單在etc/vsftpd/ftpusers)

NFS Share
vim /etc/exports
加入 /tmp/share 192.168.0.0/255.255.255.0(rw,sync,root_squash)
exportfs -r (refresh一下)
exportfs
會看到 : /tmp/share 192.168.0.0/255.255.255.0
service nfs start
service portmap start
showmount -e 192.168.0.21
Export list for 192.168.0.21:
/tmp/share 192.168.0.0/255.255.255.0

Samba:
vim /etc/samba/smb.conf
netbios name = smb21
browseable = yes
然後
service smb start
chkconfig smb on
nmblookup smb21
會看到:
querying smb21 on 192.168.0.255
192.168.0.21 smb21<00>
建立samba user密碼:
smbpasswd -a frank 後輸入password
mount -t cifs -o username=frank //192.168.0.21/homes /smb1
setsebool -P samba_enable_home_dirs=1
mount -t cifs -o username=frank //192.168.0.21/homes /smb1 (就可以了)

samba share 指定folder
mkdir /tmp/testshare
chmod 1777 /tmp/testshare (這裡很重要, 否則mount上去後會無法讀寫)
vim /etc/samba/smb.conf
內容加入:

host allow = 192.168.0.   (可存取的網段)

[data]
path=/tmp/testshare
browseable=yes
valid users=frank,bob
writable=yes
read list=bob (bob 為read only權限)

smbpasswd -a frank (設frank的samba密碼, 第一次建立密碼要加 -a)
smbpasswd -a bob (設bob的samba密碼)

testparm /etc/samba/smb.conf (查看smb.conf有無設錯)
setsebool -P samba_export_all_rw=1 (設定SELinux)
restorecon -R -v /tmp/testshare (設定目錄權限)
service smb reload (或restart)
mount -t cifs -o username=frank //192.168.0.21/data /smb1
cd /smb1
touch aaa.txt 可以寫入file
cd /
umount /smb1
mount -t cifs -o username=bbb //192.168.0.21/data /smb1
cd /smb1
touch ccc.txt
touch: cannot touch ‘ccc’: 拒絕不符權限的操作 (權限為readonly)

要讓guest也可以mount
security = user
改為
security = share
加入guest ok=yes

samba設網段權限:
/etc/samba/smb.conf
hosts allow = 127. 192.168.12. 192.168.13.
或設成:
hosts deny = 127. 192.168.12. 192.168.13.

Apache:
設定Virtual host:
namebase:
vim /etc/httpd/conf/httpd.cong
加入以下:
NameVirtualHost 192.168.0.21:80
<VirtualHost 192.168.0.21:80>
ServerAdmin webmaster@www21.example.com
DocumentRoot /var/www/www21
ServerName www21.example.com
ErrorLog logs/www21.example.com-error_log
CustomLog logs/www21.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.0.21:80>
ServerAdmin webmaster@web21.example.com
DocumentRoot /var/www/web21
ServerName web21.example.com
ErrorLog logs/web21.example.com-error_log
CustomLog logs/web21.example.com-access_log common
</VirtualHost>

建立 /var/www/www21/index.html
建立 /var/www/web21/index.html
service httpd restart
查看:
www21.example.com
web21.example.com
會看ㄉ到不同網頁
記得 /etc/hosts 要設
192.168.0.21 www21.example.com web21.example.com

ipbase:
ifconfig eth0:1 inet 192.168.0.121 netmask 255.255.255.0 up
ifconfig eth0:2 inet 192.168.0.221 netmask 255.255.255.0 up

<VirtualHost 192.168.0.121:80>
ServerAdmin webmaster@www121.example.com
DocumentRoot /var/www/html121
#ServerName www21.example.com
ErrorLog logs/www21.example.com-error_log
CustomLog logs/www21.example.com-access_log common
</VirtualHost>

<VirtualHost 192.168.0.221:80>
ServerAdmin webmaster@web221.example.com
DocumentRoot /var/www/html221
#ServerName web21.example.com
ErrorLog logs/web21.example.com-error_log
CustomLog logs/web21.example.com-access_log common
</VirtualHost>

vim /var/www/html21/index.html
vim /var/www/htm221/index.html
service network restart
service httpd restart
查看
http://192.168.0.121/
http://192.168.0.221/
會看到不同網頁

看網頁要輸帳號密碼
1. vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/www21">
AllowOverride AuthConfig
</Directory>


2. cd /var/www/www21
vim .htaccess
AuthName "Welcome th www21"
AuthType Basic
AuthUserFile /etc/httpd/secret
Require user davud nancy
3. 設密碼
htpasswd -mc /etc/httpd/secret david
htpasswd -m /etc/httpd/secret nancy
到 http://www21.example.com 會要輸入 帳號, passwd

設定可擁有個人網頁
vim /etc/httpd/conf/httpd.conf
<IfModule mod_userdir.c>
#UserDir disable
UserDir public_html
</IfModule>


/home/frank裡mkdir public_html
建立index.html
public_html的other要有權限, index.html的other要有r的權限
restorecon -R -v /home/frank/public_html
service httpd restart
查看http://192.168.0.21/~frank/

製作有file list的網頁功能:
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
Options Indexes FollowSymLinks
</Directory>
/etc/httpd/conf.d 資裡的檔案移除
service httpd restart

proxy server設定
/etc/squid/squid.conf
內容:
acl rhce src 192.168.0.0/255.255.255.0
http_access allow localhost
http_access allow rhce
http_access deny all

#http_port 3128
http_port 8080

起動服務:
service squid restart
chkconfig squid on
export http_proxy=http://192.168.0.21:3128
link -dump http://station21.example.com (測試)


E-mail server:
修改, 註解掉只能寄送127.0.0.1
vim /etc/mail/sendmail.mc
dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl (用dln# 註解)
m4 sendmail.mc > sendmail.cf (m4指令要裝 sendmail-cf )
service sendmail restart
mail -vs 'thhis is mail test' root@station21.example.com
(也可以直接打 : mail root@station21.example.com)
輸入內文
.
完成 mail

mail
4 (第4封)
x (離開)

mail
3 (第3封)
r (回信)
輸內容
.
x (離開)

設定幫哪些主機收信
vim /etc/mail/local-host-names
內容:
station21.example.com
mail.example.com

編輯允許或拒絕對象
vim /etc/mail/access
Connect:abc.com REJECT
To:mary@station21.example.com DISCARD
To:john@station21.example.com ERROR:550 This is Bad Mail
Connect:10.0 OK

設定轉信機制(寄給A轉給B)
vim /etc/aliases
mary: mary@abc.com, john@abc.com
service: root, frank@station21.example.com
all: service, mary
存檔
newaliases (立刻生 效)

要讓user寄的mail, domain為example.com 而不是 station21.example.com
vim /etc/mail/sendmail.mc
內容, 把以下四條的dnl拿掉, domain設example.com
EXPOSED_USER(`root')dnl
FEATURE(masquerade_envelope)dnl
MASQUERADE_AS(`example.com')dnl
FEATURE(masquerade_entire_domain)dnl
然後
m4 sendmail.mc > sendmail.cf (不一定需要)
service sendmail restart
su - frank
mail root@station21.example.com
輸入內容存檔
切回root
mail
看到 frank寄的mail, 寄件地址為: frank@example.com 而不是frank@station21.example.com

sendmail -q (立刻把queue裡的mail寄出)
mailq 看到queue的mail

postfix:
yum install postfix
alternatives --config mta (切換smtp)
出現:
有 2 程式提供 'mta'。

選擇 指令
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
選2切換到postfix

vim /etc/postfix/main.cf (修改設定, 看印出來的講議)
myhostname = station21.example.com
mydomain = example.com
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
inet_interfaces = all
mynetworks_style = host
relay_domains = $mydestination

然後
service sendmail stop
service postfix start

mail frank@station21.example.com
凹切換身份到frank
mail 凹查看信件

設定每封進出的mail都會bcc給bob@station21.example.com
vim /etc/postfix/main.cf
always_bcc = bob@station21.example.com (設定每封進出的mail都會bcc給bob@station21.example.com)

Dovecot (POP3)
service dovecot start
chkconfig dovecot on
mutt -f pop://frank@station21.example.com
輸入密碼
mutt -f pops://frank@station21.example.com (通訊有加密)
輸入密碼
mutt -f imap://frank@station21.example.com
輸入密碼

可以安裝thunderbird(類似outlook express的東西, 去收pop3 mail
yum install thunderbird 去安裝(root的e-mail不允許用這工具收)

做pop3的ssl
find /etc/ -name dovecot.pem
find /etc/ -name dovecot.pem -exec rm {} \; (刪除dovecot.pem)
製作ssl
make -C /etc/pki/tls/certs/ dovecot.pem
依續輸入以下資料:
TW, Taiwan, Taipei, MyCompany, DEV, station21.example.com, root@station21.example.como
vim /etc/dovecot.conf
ssl_cert_file = /etc/pki/tls/certs/dovecot.pem
ssl_key_file = /etc/pki/tls/certs/dovecot.pem
然後
service dovecot restart

製作NIS Server:
yum install ypserv
service ypserv start
service portmap start
domainname abcd (NIS 取名 abcd)
vim /etc/sysconfig/network
加入: NISDOMAIN=abcd
/usr/lib/yp/ypinit -m
在next host to add:  abcd (輸入abcd)
按ctrl + d (存檔)
就會/var/yp/abcd/ 建立 nis的db
service ypserv restart
chkconfig ypserv on

如果在NIS server新增帳號, 如:
useradd -d /home/guests/seven seven
passwd seven
只要切換目錄 cd /var/yp/
用make (重新產生帳號db), 或刪除 /etc/yp/abcd的目錄, 重新再用/usr/lib/yp/ypinit -m 產生也可
client端即可用新的seven帳號登入

另外NIS server要把 /home/guests    給share出來:
vim /etc/exports
內容加入: /home/guests    192.168.0.0/24(rw,sync)


到client端的NIS設定:
system-config-authentication
勾選Enable NIS Support
點Configure NIS,
NIS Domain : abcd
NIS Server: 192.168.0.254
如此即可用nis server的帳號登入

設定client的auto mount(因為client並沒有NIS user帳號的home directory)
vim /etc/auto.master
/home/guests /etc/auto.home
vim /etc/auto.home
* 192.168.0.254:/home/guests/& 
service autofs restart


其它指令:
ypwhich
ypcat passwd (查nis 帳號資訊)


環境設定

英文就是en_US.UTF-8
中文就是zh_TW.UTF-8

改完reboot後, x window就變成英文版

再改回zh_TW.UTF-8後reboot, 發覺x window仍是英文版

vim /etc/environment

內容為 :
LANG=zh_TW.UTF-8

存檔後reboot, x window就變回中文版了

解決Fedorw安裝在VirtualBox裡, x window顯示的解析度只有800*600和640*480的問題:
啟動Linux後進到桌面,在VirtualBox選單選取『裝置 -> CD/DVD裝置 -> VBoxGuestAddItions』
此時會發現光碟機掛載了VirtualBox的光碟
開啟終端機進入cdrom底下:cd /media/VBOXADDITIONS_3.1.2_56127
執行VBoxLinuxAdditionals-x86.run:sudo ./VBoxLinuxAdditionals-x86.run --target ~/vbox
切換至~/vbox底下:cd ~/vbox
執行安裝:sudo ./install.sh
重新開機
之後更改解析度時就可以看到跟你螢幕解析度一樣的選項了!
參考網址: http://slo.twbbs.org/?p=399 Changing display resolution of Ubuntu 9.10 in VirtualBox

如果遇到安裝過程中build kernel失敗的狀況, 用yum update kernel更新kernel後重開機, 再重新以上的安裝步驟就應該會成功了.

在Fedora安裝google的chrome browser
先刪除yum的cache
cd /var/cache/yum/
sudo rm -rf ./*
再編輯yum的repo檔
sudo vim /etc/yum.repos.d/chromium.repo
chromium.repo的內容如下:
[chromium]
name=Chromium Test Packages
baseurl=http://spot.fedorapeople.org/chromium/F$releasever/
enabled=1
gpgcheck=0
存檔後, 用yum安裝, 安裝語法:
yum -y install chromium
裝完後就會在 x-window的 應用程式 > 網際網路 看到Chromium web Browser了
參考網址: http://digitizor.com/2009/06/25/how-to-install-chrome-browser-on-fedora-linux-that-works/
--------------------------------------------------------
linux desktop下的命令


1、linux启动过程
开启电源 --> BIOS开机自检 --> 引导程序lilo或grub --> 内核的引导(kernel boot)--> 执行init(rc.sysinit、rc)--> mingetty(建立终端) --> shell
2、网卡绑定多IP
ifconfig eth0:1 192.168.1.99 netmask 255.255.255.0
3、设置DNS、网关
echo "nameserver 202.16.53.68" >> /etc/resolv.conf
route add default gw 192.168.1.1
4、弹出、收回光驱
eject
eject -t
5、用date查询昨天的日期
date --date=yesterday
6、查询file1里面空行的所在行号
grep ^$ file
7、查询file1以abc结尾的行
grep abc$ file1
8、打印出file1文件第1到第三行
sed -n '1,3p' file1
head -3 file1
9、清空文件
true > 1.txt
echo "" > 1.txt
> 1.txt
cat /dev/null > 1.txt
10、删除所有空目录
find /data -type d -empty -exec rm -rf {} \;
11、linux下批量删除空文件(大小等于0的文件)的方法
find /data -type f -size 0c -exec rm -rf {} \;
find /data -type f -size 0c|xargs rm –f
12、删除五天前的文件
find /data -mtime +5 -type f -exec rm -rf {} \;
13、删除两个文件重复的部份,打印其它
cat 1.txt 3.txt |sort |uniq
14、攻取远程服务器主机名
echo `ssh $IP cat /etc/sysconfig/network|awk -F = '/HOSTNAME/ {print $2}'`
15、实时监控网卡流量(安装iftop)
/usr/local/iftop/sbin/iftop -i eth1 -n
16、查看系统版本
lsb_release -a
17、强制踢出登陆用户
pkill -KILL -t pts/1
18、tar增理备份、还原
tar -g king -zcvf kerry_full.tar.gz kerry
tar -g king -zcvf kerry_diff_1.tar.gz kerry
tar -g king -zcvf kerry_diff_2.tar.gz kerry
tar -zxvf kerry_full.tar.gz
tar -zxvf kerry_diff_1.tar.gz
tar -zxvf kerry_diff_2.tar.gz
19、将本地80端口的请求转发到8080端口,当前主机外网IP为202.96.85.46
-A PREROUTING -d 202.96.85.46 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.9.10:8080
20、在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh
crontab -e
0 6-12/2 * 11 * /usr/bin/httpd.sh
21、查看占用端口8080的进程
netstat -tnlp | grep 8080
lsof -i:8080
22、在Shell环境下,如何查看远程Linux系统运行了多少时间?
ssh user@被监控主机ip "uptime"
23、查看CPU使用情况的命令
""每5秒刷新一次,最右侧有CPU的占用率的数据
vmstat 5
""top 然后按Shift+P,按照进程处理器占用率排序
top
24、查看内存使用情况的命令
""用free命令查看内存使用情况
free -m
""top 然后按Shift+M, 按照进程内存占用率排序
top
25、查看磁盘i/o
""用iostat查看磁盘/dev/sdc3的磁盘i/o情况,每两秒刷新一次
iostat -d -x /dev/sdc3 2
26、修复文件系统
fsck –yt ext3 /
-t 指定文件系统
-y 对发现的问题自动回答yes
27、read 命令5秒后自动退出
read -t 5
28、grep -E -P 是什么意思
-E, --extended-regexp 采用扩展正规表达式。
-P,--perl-regexp 采用perl正规表达式
29、vi编辑器(涉及到修改,添加,查找)
插入(insert)模式
i    光标前插入
I    光标行首插入
a    光标后插入
A    光标行尾插入
o    光标所在行下插入一行,行首插入
O    光标所在行上插入一行,行首插入
G    移至最后一行行首
nG    移至第n行行首
n+    下移n行,行首
n-    上移n行,行首
:/str/          从当前往右移动到有str的地方
:?str?          从当前往左移动到有str的地方
:s/str1/str2/      将找到的第一个str1替换为str2  
:s/str2/str2/g      将当前行找到的所有str1替换为str2
:n1,n2s/str1/str2/g    将从n1行至n2行找到的所有的str1替换为str2
:1,.s/str1/str2/g      将从第1行至当前行的所有str1替换为str2
:.,$s/str1/str2/g      将从当前行至最后一行的所有str1替换为str2
30、linux服务器之间相互复制文件
copy 本地文件1.sh到远程192.168.9.10服务器的/data/目录下
scp /etc/1.sh king@192.168.9.10:/data/
copy远程192.168.9.10服务器/data/2.sh文件到本地/data/目录
31、使用sed命令把test.txt文件的第23行的TEST换成TSET.
sed -i '23s/TEST/TSET/' test.txt
sed -i '23 s/TEST/TSET/' test.txt
32、使history命令能显示时间
export HISTTIMEFORMAT="%F %T "
        
33、如何查看目标主机192.168.0.1开放那些端口
nmap -PS 192.168.0.1
34、如何查看网络连接
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
35、如何查看当前系统使用了那些库文件
ldconfig -v
36、如何查看网卡的驱动版本
ethtool -i eth0
37、使用tcpdump来监视主机192.168.0.1的tcp的80端口
tcpdump tcp port 80 host 192.168.0.1                                               
38、 如何看其它用户的邮件列表
mial -u king
39、对大文件进行切割
按每个文件1000行来分割
split -l 1000 httperr8007.log httperr
按照每个文件5m来分割
split -b 5m httperr8007.log httperr
40、合并文件
取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq
取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat file1 file2 | sort | uniq -d
删除交集,留下其他的行
cat file1 file2 | sort | uniq –u

------------------------------------------
使用iftop查看详细网络状况
 
安装IFTOP软件:
安装后,使用iftop运行,查看网络情况。TX,发送流量;RX,接收流量;TOTAL,总流量;Cumm,运行iftop期间流量;peak,流量峰值;rates,分别代表2秒、10秒、40秒的平均流量。
快捷键:h帮助,n切换显示IP主机名,s是否显示本机信息,d是否显示远端信息,N切换端口服务名称,b切换是否时数流量图形条。