*-===================-*
* 网络
*-===================-*
; 重新启动网络
- $ /etc/init.d/network restart
- $ service network restart
; DHCP
; 重新获取ethX上的IP地址
$ dhclient ethX
; 在服务器“DNS”上追踪"DOMAIN","NOERR"表示没有错误,"NXDOMAIN"表明不存在的域,如果配置了DNS服务,检查记录与区域文件记录是否正确,如果追踪的服务器为别人的DNS服务器,请检查你输入的域名,
- $ dig @DNS DOMAIN
- $ dig @8.8.8.8 baidu.com
- $ 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与网关
- $ ifconfig eth0 x.x.x.x netmask x.x.x.x
- $ route add 0.0.0.0/0 gw x.x.x.x
; 访问NFS服务器
- $ mount -t nfs x.x.x.x:/MP/SHARE /mnt/nfs
- $ umount /mnt/nfs
; 访问SMB
- $ mount -t cifs -o username=xxx,password=yyy //Server/SHARE /mnt/MountPoint
- $ umount /mnt/MountPoint
; 路由
- $ ip route add 192.168.0.0/24 via 192.168.0.1
- $ ip route add 192.168.0.0/24 dev eth0
- $ ip route del 192.168.0.0/24 via 192.168.0.1
- $ ip route add default via 192.168.0.1
- $ ip route flush cache ;FLUSH FIB
- ; The command is 'route add x.x.x.x/x [-p]' under windows series system
; IP 隧道
- $ modprobe ipip
- $ ip tunnel add Tunnel1 mode ipip remote x.x.x.x local x.x.x.x ttl 255
- $ ifconfig Tunnel1 x.x.x.x
- $ ip route add x.x.x.x/x dev Tunnel1
; VLAN
- $ lsmode | grep 8021q
- $ 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
- $ cat /proc/scsi/scsi
- $ echo "scsi add-single-device ControllerID ChannelID SCSI-ID LUN-ID" > /proc/scsi/scsi
- $ echo "scsi remove-single-device ControllerID ChannelID SCSI-ID LUN-ID" > /proc/scsi/scsi
- $ echo "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi
- $ echo "- - -" > /sys/class/scsi_host/hostX/scan
; 说明:控制器ID,如果为普通服务器的话只有一个控制器;通道ID,VMWARE中为也为0,SCSIID,这个会有所不同,LUNID一般情况也为0
$ service kudzu start ;可用于扫描硬件改变
; 硬盘
* 查看UUID: blkid
* 查看与修改卷标: e2label
* 通过卷标装载: 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=
* 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
- $ modprobe loop ;装载LOOP驱动,LOOP可以将文件虚拟成分区
- $ dd if=/dev/zero of=/root/SS bs=1k count=100 ;创建文件备用
- $ ls -lL /dev/loop0 ;查看LOOP0相关信息
- $ mknod /dev/SS -m 640 b 7 0 ;根据相关信息新建LOOP设备
- $ losetup /dev/SS /root/SS ;将文件安装到/dev/SS
- $ mkfs -t ext3 /dev/SS ;格式化分区,后面的装载省略
- $ 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
*-====================-*
* 乱码问题
*-====================-*
; 软件包
- $ yum install fonts-chinese-*
- $ yum install fonts-ISO8859-2-*
- $ 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查询码"~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
* 系统安全关闭与重启
- $ echo 'e' > /proc/sysrq-trigger ;Terminate Processes
- $ echo 'k' > /proc/sysrq-trigger ;Kill
- $ echo 's' > /proc/sysrq-trigger ;Sync
- $ echo 'u' > /proc/sysrq-trigger ;mount -o ro -a
- $ echo 'o' > /proc/sysrq-trigger
; 已上命令也可以使用组合键完成,同时,一旦向系统发送了"K"或者"E"信号,则不能再使用上述命令完成,而必须采用组合键的方式
*-======================-*
* Linux 性能调优
*-======================-*
; 判定系统中CPU密集型进程
; 查找CPU密集型线程,用于多线程作业,如
- $ ps -mp $Pid -o THREAD,tid,time
- $ ps -Lfp $Pid
- $ top -Hp $Pid
; 查找CPU密集型应用
- $ ps -Lef
- $ ps aux | sort -k3 -r ;%CPU
- $ ps aux | sort -k4 -r ;%MEM
- $ vmstat #INT ;#INT为间隔,注意"Si/So"列
; 判定系统中是否存在IO瓶颈
$ iostat -c #INT ;%IOWAIT
; 获取系统中磁盘相关数据
- $ iostat -d ;查看磁盘活动,吞吐量与TPS
- $ iostat -x ;看吞吐量与TPS
- $ dstat
; 对WEB进行压力测试,<-c>并发连接,<-n>总连接数
$ ab -c 10 -n 100 http://www.baidu.com/
; 查看文件打开情况
- $ lsof -p $Pid ;由进程$PID打开的文件
- $ lsof -i:80 ;打开80端口的进程
- $ lsof /tmp/Sess_xxxxx ;定位打开文件的进程
; 命名管道,适合于做有先后顺序的工作
; 适合于做多次输入一次取出的操作
- $ mkfifo o
- $ echo Hello > o&
- $ echo World > o&
- $ echo 'I\'am FC' > o&
- $ cat o
; 请思考,上面最后一条命令的结果是什么呢