*-===================-*
* 网络
*-===================-*

; 重新启动网络

   
   
   
   
  1. $ /etc/init.d/network restart 
  2. $ service network restart 


; DHCP
; 重新获取ethX上的IP地址
$ dhclient ethX
; 在服务器“DNS”上追踪"DOMAIN","NOERR"表示没有错误,"NXDOMAIN"表明不存在的域,如果配置了DNS服务,检查记录与区域文件记录是否正确,如果追踪的服务器为别人的DNS服务器,请检查你输入的域名,

   
   
   
   
  1. $ dig @DNS DOMAIN 
  2. $ dig @8.8.8.8 baidu.com 
  3. $ nslookup DOMAIN 


; 修改网络DNS
$ vi /etc/resolv.conf

nameserver server1
nameserver server2

; 修改接口IP地址
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE = eth0
ONBOOT = YES
BOOTPROTO = static
IPADDR = x.x.x.x
NETMASK = x.x.x.x
GATEWAY = x.x.x.x

; 修改网关,主机名,是否启用网络,注意有部分应用可能需要正确配置主机名才能正常工作
$ vi /etc/sysconfig/network

  NETWORKING = YES
  HOSTNAME = SAM
  GATEWAY = x.x.x.x


; 命令修改IP与网关

   
   
   
   
  1. $ ifconfig eth0 x.x.x.x netmask x.x.x.x 
  2. $ route add 0.0.0.0/0 gw x.x.x.x   


; 访问NFS服务器

   
   
   
   
  1. $ mount -t nfs x.x.x.x:/MP/SHARE /mnt/nfs 
  2. $ umount /mnt/nfs 


; 访问SMB

   
   
   
   
  1. $ mount -t cifs -o  username=xxx,password=yyy //Server/SHARE /mnt/MountPoint 
  2. $ umount /mnt/MountPoint 



; 路由

   
   
   
   
  1. $ ip route add 192.168.0.0/24 via 192.168.0.1 
  2. $ ip route add 192.168.0.0/24 dev eth0 
  3. $ ip route del 192.168.0.0/24 via 192.168.0.1 
  4. $ ip route add default via 192.168.0.1 
  5. $ ip route flush cache ;FLUSH FIB 
  6. ; The command is 'route add x.x.x.x/x [-p]' under windows series system 


; IP 隧道

   
   
   
   
  1. $ modprobe ipip 
  2. $ ip tunnel add Tunnel1 mode ipip remote x.x.x.x local x.x.x.x ttl 255 
  3. $ ifconfig Tunnel1 x.x.x.x 
  4. $ ip route add x.x.x.x/x dev Tunnel1 

; VLAN

   
   
   
   
  1. $ lsmode | grep 8021q 
  2. $ modprobe 8021q 


+ 网络统计
$ netstat -sw ;以RAW形式对各种报文进行统计
$ netstat -I'eth0' ;查看接口总流量
$ ifconfig lo | egrep 'RX|TX' ;同上
$ ifconfig | egrep 'Link|RX|TX' ;查看所有接口总流量
$ netstat -rCF ;查看路由表,缓存,转发表
$ dstat ;查看NETWORK列

; 查看打开的端口及打开它的进程
$ netstat -anp ;netstat -tulnp



*-===================-*
* 系统
*-===================-*
- 时区&时间
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ date -R
$ ntpdate us.pool.ntp.org ;使用NTP服务器同步时钟
$ date -s M/D/Y ;按照指定格式
$ date -s H:M:S
$ date +%S 返回秒数
$ date +%s 返回总秒数
$ date +%s%N 真随机数
$ date +%s%N%Y
$ clock -w ;将时钟写入CMOS
$ hwclock --hctosys ;将CMOS时钟写入系统时钟

- 语言
* export LANG=en_US
* LC_ALL=en_US
* vi /etc/default/locale

- 系统发行相关
* lsb_release -a
* head -n1 /etc/issue
* uname -a ;See CPU
* getconf LONG_BIT ;系统位数

- 硬件
* 磁盘SMART
; 查看信息: smartctl -i /dev/sda
; 启用: smartctl --smart-on --offlineauto=on --saveauto=on /dev/sda
  健康状况: smartctl -H /dev/sda
* PCI总线
  查看:$lspci [-tv]
; 硬件与BIOS: $dmidecode | less
; USB总线: $lsusb [-tv]
; SCSI总线 SCSI OIR

   
   
   
   
  1. $ cat /proc/scsi/scsi 
  2. $ echo "scsi add-single-device ControllerID ChannelID SCSI-ID LUN-ID" > /proc/scsi/scsi 
  3. $ echo "scsi remove-single-device ControllerID ChannelID SCSI-ID LUN-ID" > /proc/scsi/scsi 
  4. $ echo "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi 
  5. $ echo "- - -" > /sys/class/scsi_host/hostX/scan 


; 说明:控制器ID,如果为普通服务器的话只有一个控制器;通道ID,VMWARE中为也为0,SCSIID,这个会有所不同,LUNID一般情况也为0
$ service kudzu start ;可用于扫描硬件改变

; 硬盘
* 查看UUID: blkid
* 查看与修改卷标: e2label [newLabel]
* 通过卷标装载: mount /Label
* 查看分区: fdisk -l [device]
* 创建与修改分区: fdisk /dev/sda
* 磁盘克隆: dd if=/dev/sda of=/dev/sdb
* MBR备份: dd if=/dev/sda of=/root/disk.mbr bs=512 count=1
* 磁盘报废: dd if=/dev/zero of=/dev/sda
* 格式化分区: mkfs -t Fs /dev/sdb1
* 装载磁盘: mount /dev/sda1 /cc
* 查看使用量: df -h
* GPT - 可以支持2TB以上的硬盘
  查看分区: parted /dev/sda & print [free]
  创建分区: parted /dev/sda & mklabel gpt & mkpart
  加载GPT分区: UUID= /cc OPTIONS
* REMOVABLE & USB & NTFS
  eject ;弹出
  mount -t ntfs-3g /dev/sdb1 /mnt/USBRAM -o force ;NTFS USBRAM
  mount -o loop -t iso9660 x.iso /media/ISO ;加载ISO文件
  dd if=/dev/cdrom of=x.iso ;从光盘创建ISO

- 设备管理
; LOOP

   
   
   
   
  1. $ modprobe loop ;装载LOOP驱动,LOOP可以将文件虚拟成分区 
  2. $ dd if=/dev/zero of=/root/SS bs=1k count=100 ;创建文件备用 
  3. $ ls -lL /dev/loop0 ;查看LOOP0相关信息 
  4. $ mknod /dev/SS -m 640 b 7 0 ;根据相关信息新建LOOP设备 
  5. $ losetup /dev/SS /root/SS ;将文件安装到/dev/SS 
  6. $ mkfs -t ext3 /dev/SS ;格式化分区,后面的装载省略 
  7. $ losetup -d /dev/SS ;取消绑定 


; RAMFS ;将物理内存当作磁盘使用(用于高性能计算)
$ moount -t ramfs none /RAM -o maxsize=SIZE
; TMPFS ;临时文件系统,可以使用RAM,也可以使用硬盘
$ mount -t tmpfs tmpfs /RAM -o size=32M

- 系统inittab文件
* init Ss123456Qq
* 修改INITTAB以后可以用"init Q"命令进行重载,也可以使用kill -HUP 1
* 阻止CTRL+ALT+DEL: #ca::ctrlaltdel:/sbin/shutdown -r now -t3
* 系统初始化脚本: si::sysinit:/etc/rc.d/rc.sysinit
* 默认启动等级: id::3:initdefault:

*-=======================-*
* 系统安全
*-=======================-*
- 内核
; 查看内核转发状态
$ sysctl net.ipv4.ip_forward
$ sysctl -w net.ipv4.ip_forward=1 ;启用
$ echo 1 > /proc/sys/net/ipv4/ip_forward ;同上

- 修改文件属性
$ chattr +i ;不可删除
$ chattr +a ;Append only
$ chattr +b ;不更新文件存取时间
$ chattr +S ;即时更新,不入CACHE
$ chattr +s ;保密文件,删除后无法恢复

- 安全日志
$ tail /var/log/secure* ;SSH & PAM
$ tail /var/log/httpd/*_access_log
$ tail /var/log/cron ;Scheduled Task Log
$ kill -HUP id ;尽量使用平滑重启而不是Terminate来重启服务

*-========================-*
* Shell
*-========================-*
; 目录书签
$ SS='/home/CAMPUS/cc'
$ cd $SS
; 对重复的命令,目录切换命令,退出命令等不记录历史
$ export HISTIGNORE="&:cd:exit:ls"
; 以特权模式运行上一条指令
$ sudo !!
; 以HTTP方式共享当前文件夹,端口8000
$ python -m SimpleHTTPServer
; vi命令,保存需要ROOT权限才能保存的文件
: w !sudo tee %
: q!
; 回上一个目录
$ cd -
; 替换命令行中的参数
$ !!:s/PAT/TEXT/
; 清空一个文件S
$ :>S
; SSH反向代理
$ ssh -N L2001:TARGET:80 id@HOST
; 将对本机2001端口的数据通过HOST转发到TARGET,id为登录凭据
; HOSTS文件: echo '127.0.0.1 TARGET' >> /etc/hosts
; 终端重置/破乱码: $reset
; 午夜游行: $echo COMMAND | at midnight
; 通过SSH传送声音: $dd if=/dev/dsp | ssh id@HOST dd of=/dev/dsp
; SSH跳板: $ssh -t id@HOST1 id@HOST2 id@HOST3 ... id@TARGET

*-======================-*
* 网络安全
*-======================-*
- NMAP
* 获取主机类型与端口
$ nmap -sS -P0 -sV TARGET
; -sS => TCP.SYN 扫描,又叫半扫描,隐身扫描
; -P0 => 不使用ICMP PING
; -sV => 检测操作系统版本
; -O => 尝试识别远程操作系统
; -A => 同时进行操作系统版本与指纹检测
; -v => 显示进度
* 列出开放了指定端口的主机
$ nmap -sT -p 80 -oG TARGET | grep open
; -sT => 使用TCP
; -p 80 => 扫描80端口
* 查找网络在线主机
$ nmap -sP TARGETS
; -sP => 使用PING查找
* 查找子网上的未用IP
$ nmap -T4 -sP TARGETs && egrep "00:00:00:00:00:00" /proc/net/arp

*-=====================-*
* 在线帮助
*-=====================-*
* man 5 proc ;PROC FS
* man 5 filesystem ;FS
* man 7 bootparam
* man 7 charset

*-====================-*
* 乱码问题
*-====================-*
; 软件包

   
   
   
   
  1. $ yum install fonts-chinese-* 
  2. $ yum install fonts-ISO8859-2-* 
  3. $ yum install xorg-x11-fonts* 

vi /etc/sysconfig/i18n

*-====================-*
#LANG="zh_CN.UTF-8"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
#SYSFONT="latarcyrheb-sun16"
*-====================-*


; Virtualization
; yum groupinstall "Virtualization"
; yum groupremove "Virtualization"

*-=======================-*
* Linux启动问题
*-=======================-*
; GRUB启动系统最少需要的指令
; 指定从哪里寻找启动内核
$ root=(hdx,y)
; 指定找到内核后,将哪里作为"/"以及内核文件
$ kernel=/vmlinuz-* ro root=/dev/sda6
; 系统的初始化RAM/INITRD是哪一个,一般与内核版本对应
$ module /initrd-*.img ;系统初始化镜像是哪一个
; 创建INITRD、需要内核文件存在
$ cd /boot && ls
$ mkinitrd initrd-$(uname -a).img $(uname -a)
; 内核安装
$ mkdir /mnt/CDROM
$ mount -t iso9660 /dev/hdX /mnt/CDROM
$ cd /mnt/CDROM/RPMS
$ rpm -ivh --force kernel-*.rpm
; 救援模式下光驱叫HDX而不是CDROM
; 在启动菜单按“C”进入命令行,按E进入参数编辑(完成后B启动)
; 内核要使用安装模式重新安装
; 救援模式: linux rescue
; 权限问题
  r/READ
  w/WRITE
  x/EXECUTE
  S/SETUID
  T/STICKY
; T - 粘滞位,仅对目录有效,在目录下的文件只有创建者才拥有删除它的能力
; S - 用户在运行程序时,可以适时拥有程序拥有者权限,换名话说,如果该程序属主为ROOT,则任何有权限运行

它的用户均具有ROOT权限

*-===================-*
* SSH
*-===================-*
* SSH退出码"~",主要用在SSH主机上使用SSH登录到另一主机的情况,其中CR表示回车
* SSH查询码"~s"

*-===================-*
* Linux SYSRQ
*-===================-*
* 使得系统响应:
$ echo 1 > /proc/sys/kernel/sysrq
* Key列表
; 'k' - 杀死虚拟终端(VC)下的所有进程
; 's' - 对文件系统同步,进行重启,关机时最好进行此操作,其命令为"$ sync"
; 'b' - 立即重启系统,危险
; 'e' - 对除INIT外所有进程发送"TERM"信号
; 'm' - 将当前的内存信息输出到控制台
; 'o' - 立即关闭系统,危险
; 'p' - 打印当前寄存器,调试用
; 'u' - 以只读模式重新装载文件系统
; 'f' - 杀死内存占用过多的进程
; 'h' - 帮助
* 调用SYSRQ
; 方法一、按住ALT+SYSRQ与命令键
; 方法二、将命令键写入/proc/sysrq-trigger, 以下命令立即关闭系统
$ echo 'o' > /proc/sysrq-trigger
* 系统安全关闭与重启

   
   
   
   
  1. $ echo 'e' > /proc/sysrq-trigger ;Terminate Processes 
  2. $ echo 'k' > /proc/sysrq-trigger ;Kill 
  3. $ echo 's' > /proc/sysrq-trigger ;Sync 
  4. $ echo 'u' > /proc/sysrq-trigger ;mount -o ro -a 
  5. $ echo 'o' > /proc/sysrq-trigger 

; 已上命令也可以使用组合键完成,同时,一旦向系统发送了"K"或者"E"信号,则不能再使用上述命令完成,而必须采用组合键的方式

*-======================-*
* Linux 性能调优
*-======================-*
; 判定系统中CPU密集型进程
; 查找CPU密集型线程,用于多线程作业,如

   
   
   
   
  1. $ ps -mp $Pid -o THREAD,tid,time 
  2. $ ps -Lfp $Pid 
  3. top -Hp $Pid 



; 查找CPU密集型应用

   
   
   
   
  1. $ ps -Lef 
  2. $ ps aux | sort -k3 -r ;%CPU 
  3. $ ps aux | sort -k4 -r ;%MEM 
  4. $ vmstat #INT ;#INT为间隔,注意"Si/So"列 


; 判定系统中是否存在IO瓶颈
$ iostat -c #INT ;%IOWAIT

; 获取系统中磁盘相关数据

   
   
   
   
  1. $ iostat -d ;查看磁盘活动,吞吐量与TPS 
  2. $ iostat -x ;看吞吐量与TPS 
  3. $ dstat 



; 对WEB进行压力测试,<-c>并发连接,<-n>总连接数
$ ab -c 10 -n 100 http://www.baidu.com/

; 查看文件打开情况

   
   
   
   
  1. $ lsof -p $Pid ;由进程$PID打开的文件 
  2. $ lsof -i:80 ;打开80端口的进程 
  3. $ lsof /tmp/Sess_xxxxx ;定位打开文件的进程 


; 命名管道,适合于做有先后顺序的工作
; 适合于做多次输入一次取出的操作

   
   
   
   
  1. $ mkfifo o 
  2. $ echo Hello > o& 
  3. $ echo World > o& 
  4. $ echo 'I\'am FC' > o& 
  5. $ cat o 

; 请思考,上面最后一条命令的结果是什么呢