Linux 基础学习大考核

0.关于Linux的简介php

Linux(好又免费)的组成部分:html

Linux 是一种计算机操做系统: 一系列能让您与计算机进行交互操做并运行其它程序的程序。 
    操做系统由多种基础程序构成。它们使计算机能够与用户进行交流并接受指令, 读取数据或将其写入硬盘、磁带或打印机,控制内存的使用,以及运行其它软件。
    操做系统最重要的组成部分是内核。
    在 GNU/Linux 系统中,Linux 就是内核组件。
    Linux不是一个操做系统,严格来说,Linux只是一个操做系统中的内核。 

内核是什么?java

内核创建了计算机软件与硬件之间通信的平台,内核提供系统服务,好比文件管理、虚拟内存、设备I/O等。
  既然Linux只是一个内核。那么咱们一般所说的Linux操做系统又是什么?
    咱们一般所说的Linux,指 GNU/Linux ,即采用Linux内核的GNU操做系统。
    操做系统的实际名称是GNU。 

什么是GNU?node

GNU表明GNU’s Not Unix。能够说是一个操做系统又能够说是一种规范。
    GNU主要有gcc,bash等基础软件
    Linux内核有 Linux Kernel2.2 Linux Kernel2.4 Linux Kernel 2.6 
    DVD1.iso
    mini.iso 

Fedora,Centos和Redhat的区别mysql

CentOS是Redhat的另外一个分支,以Redhat发布的源码重建符合GPL许可协议的Linux系统,即把Redhat中取出商标Logo以及非自由软件的部分后从新编译。
    CentOS以及被Redhat收购,但任然开源,免费。
    Redhat有版权有售后,CentOS无版权无售后
    Fodora是Redhat的一个分支,支持GPL协议,能够认为是Redhat预发布版本 

Linux安装linux

    ISO镜像安装、光盘安装
    64位运算速度快,能够更好的发挥硬件的性能,提升业务效率 

Linux特色:ios

    硬件->内核->shell解析器->外围程序
    Linux以高效和灵活著称。
    Linux是自由软件,开方源码,自由修改。
    兼容Unix且能够实现几乎所有的Unix特性,多用户,多线程,多任务,多CPU
    能够自由传播,免费、
    有很高的系统安全型,有大量的免费应用程序和大型数据库平台(Oracle+Mysql) 

1.只查询当前目录的一级目录 nginx

  ls -l | grep "^d"             只显示目录
         ==>ls -ld */    只显示目录
         ==>ls -ld | grep /
         ==>ls -lF | awk '/^d/'
         ==>ls -lF | sed -n  '/^d/p'
         ==>ls -lF | grep "/$"  目录后会加斜线,清晰的表示目录
         ==>find ./ -maxdepth 1  -type d  ! -name "oldboy"  只显示1级目录文件且过滤自身

2.保留7天的日志文件web

 for n in `seq 1 25` ; do date -s "2017/07/$n" ; touch access_web_`(date +%F)`.log;     done; 
    find . -name "*.log" -mtime +7  | xargs rm –f  

3.文件显示行号面试

    nl  h.txt
    vi  h.txt  ->set nu
    cat -n h.txt
    less -N h.txt (不能直接显示全部,只能显示一屏)
    grep -n "." h.txt1   ==> grep -n "$" h.txt  
    awk '{print NR,$0}' h.txt     

4.装完系统后但愿网络文件共享NFS服务,仅在3级别以上开机自启(chkconfig)

chkconfig --level 3456 nfs on
chkconfig nfs on(默认2345)   ->关闭2 chkconfig --level 2 nfs off  

5.文本内容是:    I am oldboy, my qq is 123213231 
  请过滤出 "oldboy"  "123213231"          

    awk '{print $3 "\n" $7}' h.txt 
    cut -d" " -f3,7 h.txt         
    cut -c 6-11,21- h.txt 

  请过滤出 "oldboy,123213231"     

    awk '{print $3 "," $7}' h.txt
    # 使用sed替逗号为空格,而后再用上面的命令去作
    awk -F "[, ]" '{print $3, $7}' h.txt           
    grep -Eo "oldboy|123*" h.txt       

 6.向磁盘写入信息,发现提示以下错误"No space on device",df -h 发现磁盘没满,请问什么状况多是inode被消耗尽了  

df -i 查看inode数量       
可能缘由就是还有服务在调用,不停的在写入文件进去(进程访问的时候,文件能够被删除)           
虽然此时文件已经被删除,可是block没有被删除,还在占用磁盘空间(重启服务便可/etc/init.d/httpd reload 启后会生成新的,因此原来的释放)           
lsof | grep deleted  能够查看被删除的文件,可是没有被link的内容     

7.1个100M(100000K)的磁盘分区,分别写入1k的文件或者写入1M的文件,能够写多少个?
 

Inode:存放文件属性和文件指向
Block:存放文件的实际内容,通常多用4k
    一个文件至少占用一个inode和一个block,默认分区时block大于inode
    在默认较大分区的生产环境下,inode的数据时充足的,block消耗的更快

    解答: 1K的文件写入,根据inode数量大小

7. Linux跟Unix区别在于什么?为何服务器使用Linux多于Unix?

UNIX系统大可能是与硬件配套的,而Linux则可运行在多种硬件平台上.
UNIX是商业软件,而Linux是自由软件,免费、公开源代码的,linux免费
unix和linux都是操做系统的名称.但unix这四个字母除了是操做系统名称外,还做为商标归SCO全部.
Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.
Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware
在网络管理能力和安全方面,
UNIX系统一直被用作高端应用或服务器系统,所以拥有一套完善的网络管理机制和规则
Linux沿用了这些出色的规则,使网络的可配置能力很强,为系统管理提供了极大的灵活性。

8.软硬链接的区别?(10条) 

1. ln 建立软硬连接概念区别
2. ln 文件软硬链接,inode区别,是否能够跨系统,是否能够对目录建立链接
3. 删除软硬连接对源文件的影响

9.linux 系统文件的删除原理    

i_nolid=0 && i_count=0  删除   + 解析硬连接(内含inode的概念)
    Linux经过link的数量控制文件的删除,只有当一个文件不存在任何link的时候,文件才会被删除。
    rm命令而言,就是减小磁盘引用计数i_nlink(文件到inode的连接数量)
    inode节点指向存储数据的block,删除文件并非清除inode和block。文件的硬连接为0,引用计数为0 才能删除文件
    若是有新的数据存储或者系统经过相似fsck命令作磁盘检查的时候,被删除的数据块和目录会被释放,数据没法找回
    文件删除的条件: i_link = 0 && i_count =0           
        i_nlink  文件的硬连接数量,磁盘的引用计数器
         i_count 内存引用计数(一个文件被几个程序调用,有一个程序使用i_count + 1 )
      静态文件:没有程序调用的文件

10.企业目录软链接的做用   

1.编译软件时,指定版本号(apache/apcahce-2.2.3),访问时须要去掉版本号(apache/apache)
	能够设置软链接到编译的路径,全部程序都访问软链接文件
	当软件升级高版本后,只需删除链接文件后,从新链接到高版本的文件
2.企业代码发布的时候(PHP),须要全部的代码传到一个新的目录或者站点目录。
	发布时,直接mv  也能够重建软链接到新的临时目录或者站点目录
3.不方便文件的移动,还想在当前目录访问到,也能够 ln -s

11.打印IP地址      

    ifconfig  eth0 | grep "inet addr" | sed -r 's#^.*dr:##g'|sed -r 's# B.*$##g'  
       ifconfig  eth0 | grep "inet addr" | sed -r 's#^.*dr:(.*)  Bc.*$#\1#g'
       ifconfig  eth0 | sed -nr '2s#^.*dr:(.*)  Bc.*$#\1#pg' 
       ifconfig  eth0 | sed -n '2p' | awk -F "[:B]" '{print $2}'
       ifconfig  eth0 | awk -F "[:B]" 'NR==3 {print $2}'
       ifconfig  eth0 | sed -n '2p' | cut -c 21-34
       ifconfig  eth0 | sed -n '/inet addr/p' | cut -c 21-34 
       ifconfig  eth0 | awk '/inet addr/' | cut -c 21-34 
       ifconfig  eth0 | awk -F '[: ]+' 'NR==2 {print $4} 
       ifconfig  eth0 | sed '/inet addr/'

12.文件目录      

       /var/log/sercure       系统安全日志
       /etc/sysctl.conf
       /etc/sysconfig/i18n
       /etc/sudoers
       /var/spool/cron/root
       /var/log/messages       系统日志
       /etc/passwd 
       /etc/shadow
       /etc/group
       /etc/gshadow
       /etc/motd
       /etc/issue
       /etc/redhat-release
       /etc/inittab
       /etc/profile
       /etc/fstab              磁盘文件系统开机挂载文件
       /etc/rc.local
       /etc/resolv.conf
       /etc/network-script/ifcfg-eth0
       /etc/sysconfig
       /etc/hosts
       /var/spool/clientmqueue  邮件临时目录
       /proc/interrupts         查看中断文件

12-1  文件解压大全 

tar xf    *.tar
tar zxf   *.tar.gz
gunzip -d *.gz
tar jxf   *.bz2
gunzip    *.zip
unzip     *.zip

13.说出10个通配特殊字符(bash环境下执行,多用于命令行)以及含义     

       *    表明任意0到多个字符
       ?     任意一个字符      ls oldbo?.log
       ~    用户家目录
       -    上次路径  
       ..    上一级目录
       >>    追加输出重定向
       !     取反
       >     输出重定向
       <     输入重定向
       .     当前目录
       $   变量前面增长的内容
       ''  所见即所得
       ``  反引号,tab之上,2个``中间即命令,会先执行,等价于${}
       ""  会把变量解析  
       {}  中间位命令区块组合或
       内容序列   touch {a,b,c}.log  touch log.{4..6}  echo {1..3} ==>1 2 3
       |     管道
       /   路径分隔符 
       #   注释符号
       ;      连续不一样命令的分隔符
       ||  当前一个命令执行失败 也会执行后面的命令行   二选一的  你去我就不去 你不去我就去
       &&  当前一个命令执行失败 也不会执行后面的命令   echo "hello" && echo "world" -->hello world

       无引号:把内容输出出来,可是可能不能将含有空格的字符串做为一个总体区输出
           若是内容中有命令,变量等,会先解析出结果,最后输出最终内容
           若是字符串有空格等特殊字符则不能完整输出,须要改加双引号    

14.Linux的开机启动流程 

1开机BIOS自检   -->检查CPU,硬盘信息等内容    
2.MBR引导(读取磁盘的0磁道,0柱面,1扇面,前446字节) -->预启动,肯定硬盘启动    
3.grub引导菜单(/etc/grub.conf)-->肯定加载哪一个系统       
4.加载内核kernel    
5.启动init进程(Linux第一个进程)  /sbin/init    
6.读取inittab文件(/etc/inittab),设定运行级别,init进程执行rc.sysinit(设置主机名,网络等信息)  -->(/etc/rc.d/rc.sysinit  + /etc/rc.d/rc3.d/*)    
7 启动内核模块,执行不一样级别的脚本程序    
8.执行/etc/rc.d/rc.local    
9.执行/bin/login登陆程序,启动mingetty(终端登陆进程),进入系统登录界面
    http://oldboy.blog.51cto.com/2561410/791273/   

15.    如何取得/etc/hosts  文件的权限所对应的数字内容,例如 -rw-r--r--为644  

 stat -c %a /etc/hosts    --> -c==format  %a 输出二进制
     stat /etc/hosts | sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'
    stat /etc/hosts | sed -n '4p' | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | sed -n '/Access: (/p'  | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | awk '/Access: \(/'  | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | awk -F "[0/]" 'NR == 4 {print $2}' 
    stat /etc/hosts | awk -F "[0/]" '{ if(NR == 4) print $2}'
    stat /etc/hosts | sed -n '4p' | cut -d "/" -f1 | cut -d "0" -f2   (-d表示切割符,-f表示第几列)
    stat /etc/hosts | head -4 | tail -1 | cut -d "/" -f1 | cut -d "0" -f2   (-d表示切割符,-f表示第几列)
    ll   /etc/hosts | tr rwx- 4210| awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
    ll   /etc/hosts | cut -c 2-10 | tr rwx- 4210 |awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
总结:head.tail,sed,awk,grep 定位到单行   -->惯用取行命令
      cut,awk  设置分隔符取出须要的内容  -->惯用取列命令
      能够用 sed -n '/***/p' ==> sed  '/^$/d' h.txt 过滤信息 
            ==> awk '/***/'                           过滤信息

如何查看当前的Linux服务器的运行级别?

#  命令能够用来查看当前的Linux服务器的运行级别。
# 方案一
who -r
# 方案二
runlevel

如何查看Linux的默认网关?

# 方案一
route -n
# 方案二
netstat -rn

如何在Linux上重建初始化内存盘镜像文件?

在CentOS 5.X / RHEL 5.X中,能够用mkinitrd命令来建立初始化内存盘文件
若是你想要给特定的内核版本建立初始化内存盘,你就用所需的内核名替换掉 ‘uname -r’
在CentOS 6.X / RHEL 6.X中,则用dracut命令来建立初始化内存盘文件

patch命令是什么?如何使用?

答: patch命令就是用来将修改(或补丁)写进文本文件里。patch命令一般是接收diff的输出并把文件的旧版本转换为新版本。举个例子,Linux内核源代码由百万行代码文件构成,因此不管什么时候,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,而后接收者用patch命令将改动写进原始的源代码里

如何从命令行查看域SPF记录?

答: 咱们能够用dig命令来查看域SPF记录

如何识别Linux系统中指定文件(/etc/fstab)的关联包?

# 使用rpm命令
rpm -qf /etc/fstab

Linux系统中的/proc文件系统有什么用?

答: /proc文件系统是一个基于内存的文件系统,其维护着关于当前正在运行的内核状态信息,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。这个文件系统所表明的并非各类实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的

如何在/usr目录下找出大小超过10MB的文件?

find /usr -size +10M

如何在/home目录下找出120天以前被修改过的文件?

find /home -mtime +120

如何在/var目录下找出90天以内未被访问过的文件?

find /var ! -atime -90

如何在整个目录树下查找文件“core”,如发现则无需提示直接删除它们?

答: find / -name core -exec rm {}

strings命令有什么做用?

答: strings命令用来提取和显示非文本文件中的文本字符串。(LCTT 译注:当用来分析你系统上莫名其妙出现的二进制程序时,能够从中找到可疑的文件访问,对于追查入侵有用处)

tee 过滤器有什么做用 ?

答: tee 过滤器用来向多个目标发送输出内容。若是用于管道的话,它能够将输出复制一份到一个文件,并复制另一份到屏幕上(或一些其它程序)

export PS1 = ”$LOGNAME@hostname:$PWD: 这条命令是在作什么?

答: 这条export命令会更改登陆提示符来显示用户名、本机名和当前工做目录

ll | awk ‘{print $3,”owns”,$9}’ 这条命令是在作什么?

答: 这条ll命令会显示这些文件的文件名和它们的拥有者

Linux中的at命令有什么用?

答: at命令用来安排一个程序在将来的作一次一次性执行。全部提交的任务都被放在 /var/spool/at 目录下而且到了执行时间的时候经过atd守护进程来执行

linux中lspci命令的做用是什么?

答: lspci命令用来显示你的系统上PCI总线和附加设备的信息。指定-v,-vv或-vvv来获取愈来愈详细的输出,加上-r参数的话,命令的输出则会更具备易读性

查看请求访问量

页面访问排名前十的IP

cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10

页面访问排名前十的URL

cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10

查看最耗时的页面

cat access.log | sort -k 2 -n -r | head 10

16. test用户下执行 sudo su - omd ,请问输入谁的密码? 

  [test@oldboy ~] $ sudo su - omd       -->test用户的密码
      # 经过test用户切换到omd,因此此时输入的是test用户的密码

17. echo "hello"; echo "world"   -->但愿输出来 helloworld怎么解决  

 echo -n "hello"; echo "world"
 echo $?   -->为0表示执行没有报错

18. 但愿输出date日期为 17-08-02 

date +%F  --> 2017-08-02
date +%y-%m-%d -->17-08-02  
date +%y-%m-%d\ %H-%M-%S -->17-08-02 21-16-14
date +%y-%m-%d\ %H:%M:%S -->17-08-02 21:16:14
date +%F\ %T   --> 2017-08-02 21:18:14
安装时间打包:
    tar -czvf omd-`date +%F`.tar.gz  ./home/
    tar -czvf omd-$(date +%F).tar.gz ./home/
echo $(date +%F -d +3day)
--实现安装周打包
date +%w    第3天   
tar -czvf system_$(date +%F).tar.gz /host

19.生产环境中,要求保留最近的7天的内容,何解?
  

1. 定时删除7天以前的文件(必定要用-name -f -mtime 3个参数肯定好你的文件)
	find /var/log -type f -name "*.log" -mtime +7 | xargs rm -f   删除7天前的
2. 按照周打包文件
	tar -czvf system_$(date +%w).tar.gz ./home/

20.root用户切换到omd后,执行ifconfig后显示命令不存在,何解?

  这个是由于omd用户的系统环境变量PATH路径问题致使,但在只在CentOs5中有,由于此命令在/sbin,再也不全局变量中
  解决1:
        带全路径执行   /sbin/ifconfit eth0
  解决2:-->临时
        将ifconfig的环境变量添加到PATH路径中   export PATH=$PATH:$HOME/bin:/sbin
  解决3: -->永久
        omd用户下编辑vi .bash_profile ,修改以下后保存
            PATH=$PATH:$HOME/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
        source .bash_profile

20-1. 自动删除n天前日志

删除文件命令
find /var/log/ -mtime +30 -type f -name '*.log' -exec rm -f {} \;
find /var/log/ -mtime +30 -type f -name '*.log' |xargs rm -f ;

21. 如何把文件中的空行去掉:
 

grep -v "^$" h.txt -->标准
grep "." h.txt     -->不标准
sed  '/^$/d' h.txt
awk '/^[^$]/' h.txt 


22.查找命令:
      

快速查找ifconfig的全路径,请给出命令
which   --> 重PATH路径查找     which ifocnfig
whereis --> -b 查找二进制文件  whereis -b ifconfig
find     --> find / -type f -name "ifconfig"
locate  --> locate ifconfig | head -l  locate是从一个数据库(须要提早updatedb更新数据库)中查找-->通常不用的

23. 开关机命令
     

关机 
	关机以前使用  sync;sync;sync;将缓存中的数据写入磁盘,避免形成数据丢失
	***shutdown -h now    shutdown -h 1(1分钟后)     -->生产环境
	init 0    -->切换到运行级别0
	***halt      -->当即中止系统,须要人工关闭电源   -->生产环境
	poweroff  -->中止系统,关闭电源

   重启命令
       reboot
       shutdown -r now 
       shutdown -r +1    1分钟后重启
       init  6
   
   注销:
       logout
       exit
       ctrl + d    -->经常使用 

24. 说出10个linux正则表达式

 .
 *
 .*
{n,m} 
[] 
[^abc] 
\b 
\w 
\d 
^
$ 
? 
+ 
() 
| 
^$ 
\ 

25. 说出Linux的默认目录以及目录对应权限,如何控制默认权限
         

文件    644  umask 022  666 - 022 644 (umask遇奇数位 + 1 )
目录    755  umaks 022  777 - 022 755 

26. 如何Linux修改文件以及目录权限
   

1.chmod 755 h.txt 
2.chmod u=rx,g=rx,o=wx h.txt

27. 如何普通用户执行某个特殊命令的使用?
 

  a.sudo
  b.suid 
  c.chmod 

28. Linux的特殊权限suid的做用以及应用场景
 

  suid: 普通用户执行某个命令的时候得到了这个二进制命令/程序对应的用户的权限  omd得到root用户的rwx,s用4表示
    应用场景:全部普通用户须要处理的工做,可是很危险,又但愿得到root的特殊命令来本身执行
              passwd ping 受权uid

29. 描述对于文件和目录,rwx-分别是什么权限做用

区别root和普通用户不一样的权限
    文件:
        r:查看内容 cat 
        w:修改文件内容  echo >>  vi(须要r配合) 
        x:执行文件 须要wr配合
        -:没有权限
    目录:
        r:ls 显示出来
        w:rm 建立文件,目录
        x:cd 须要wr配合
        -:没有权限

30. 描述一下三次握手和四次挥手

三次握手创建链接

    1)客户端发送 SYN 消息,其中包含服务器的端口和客户端的初始序列号(ISN)到服务器(活动打开)。
    2)服务器会发送回SYN和ACK(其中包括的客户端的 ISN + 1)。
    3)客户端发送一个 ACK,(其中包括的服务器的 ISN + 1)。 

四次挥手关闭链接

    TCP的链接是全双工(能够同时发送和接收)链接,所以在关闭链接的时候,必须关闭传和送两个方向上的链接。客户机给服务器一个FIN为1的TCP报文,而后服务器返回给客户端一个确认ACK报文,而且发送一个FIN报文,当客户机回复ACK报文后(四次握手),链接就结束了。
    1)客户端发送一个FIN(活动收盘)。这是一个如今半关闭链接。客户端不能再将数据发送,但仍然可以从服务器接收数据。收到此 FIN 服务器进入被动关闭状态。
    2)服务器发送一个ACK(这时客户端 FIN 序列 + 1)
    3)服务器发送其自身FIN。
    4)客户端发送一个ACK(这是服务器的 FIN 序列 + 1)。收到此 ACK 服务器关闭链接。

30-1 描述/dev/null和/dev/zero的区别

    1./dev/null:表示 的是一个黑洞,一般用于丢弃不须要的数据输出, 或者用于输入流的空文件
        1.1 将无用的输出流写入到黑洞丢弃。
            curl -Iwww.baidu.com 2>/dev/null | head -l  错误信息定位到黑洞
        1.2 清空文件      
            cat /dev/null > /home/omd/h.txt
        1.3 在书写定时任务总,规范的写法就是将全部定时任务脚本结尾加上>/dev/null 2>&1,让全部的输出流(包括错误的和正确的)都定向到空设备丢弃。
            00 01 * * * /bin/sh/server/scripts/mysqlbak.sh >/dev/null 2>&1
    2./dev/zero:当咱们使用或者读取他的时候,她是会提供无限接二连三的空的数据流
        2.1覆盖其余的文件信息
        2.2产生指定大小的空文件,如交换文件,模拟虚拟文件系统    

31.程序和进程的区别:
  

 程序:静止的汽车
 进程:运动中的汽车    -->运行的程序叫进程

32.关于crond的问答:
   

omd用户编辑内容:     crontab -u omd -e   
查看omd用户编辑内容:crontab -u omd -l
    ==> cat /var/spool/cron/omd 
问:显示omd用户没有权限执行修改命令,为什么还能修改:
[root@localhost cron]# ll /var/spool/cron/omd 
   -rw-------. 1 root root 2 Aug  5 21:25 /var/spool/cron/omd
答:由于crontab命令的权限是 -rws  能够执行root用户的权限
   [root@localhost cron]# which crontab
   /usr/bin/crontab
[root@localhost cron]# ll /usr/bin/crontab
   -rwsr-xr-x. 1 root root 47520 Mar  4  2011 /usr/bin/crontab
问:怎么可让omd用户不执行crontab命令呢?
答:1.取消/usr/bin/crontab 文件的s权限
    2.vim /etc/cron.deny   

33.邮件队列有哪些?怎么清空?
   

crond里面顶一楼不少定时任务,每执行一次,就会发送一个邮件给管理员,文件会占用系统的inode资源,致使服务器报错,能够定时删除,或者vi /etc/crontab 将‘MAILTO=root’改写为MAILTO="" 或 crontab -e 第一行添加MAILTO=""
/var/spool/clientqueue/       -->  centOs5
/var/spool/postfix/maildrop/  -->  centOs6
find /var/spool/clientqueue -type f | xargs rm -f  -->删除

34.每隔2小时,打包/home/omd文件到/tmp ? 定时任务    $(date +%Y%H:%M:%S)
     

 vim tar.sh 
cd /home && tar -xfz /tmp/omd_$(date +%F_%H:%M:%S).tar.gz 
/bin/sh /home/omd/tar.sh
crontab -e 
    #tar  /home/omd to /tmp for backup
    0 */2 * * * /bin/sh /home/omd/tar.sh >/dev/null 2>&1 
	01.每隔2小时  0 */2
	02.打包到上级目录打包
	03.测试命令正确后粘贴到crontab  
	04.定向的空设备,不要屏幕输出,能够写入log文件  
	05.写脚本用来执行任务,脚本路径要规范
	06.直接写入crontab -e 里面注意特殊字符的转义

35.为何只要一添加用户,就会从/etc/skel下面拷贝.bash*的文件呢? 

 由于在/etc/default/useradd文件中写了默认从这个文件拷贝文件

36.批量建立10个用户stu01-stu10,而且随记设置8个密码
     

1.Linux中也有能够实现批量添加用户而且设置密码的命令(newusers   chpasswd)
2.思路以下:  -->待完善
    2.1 00 建立
        seq -w 10  --> 00 01 02 03 04 05 06 07 08 09 10 
            ==>echo {00..10} --> 00 01 02 03 04 05 06 07 08 09 10 
    2.2 随记密码生成  
        echo $RANDOM      -->5位
        echo $RANDOM|md5sum|cut -c 1-8  ->8位
        pass=$((RANDOM + 10000000));     -->生成8为密码
    2.3 建立用户
        echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM + 10000000));echo "$pass"|passwd --stdin \1;echo -e "\1 \t `echo "$pass"`" >> /home/omd/h.txt#g'|bash
        ->分解一下
                echo stu{01..10}   -->打印stu01到stu10 默认是空格显示
                tr " " "\n"        -->空格换成换行
                sed -r 's#(.*)#useradd \1; #g'   -->显示useradd stu01 
                    pass=$((RANDOM + 10000000));     -->生成8为密码
                    echo "$pass"|passwd --stdin \1;  -->交互式写入用户密码
                    echo -e "\1 \t `echo "$passwd"`" -->stu01 密码
                sed -r 's#(.*)#useradd stu01 -p $pass  #g'  
                echo -e "stu01 密码"  >> /home/omd/h.txt 
    2.4 批量删除
            echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#userdel -r \1#g' |bash
3.shell编程
    for stu in stu{00.10}
       do
           pass=$(echo $RANDOM|md5sum|cut -c 1-8)
           useradd $stu && echo "$pass"|passwd --stdin $stu
       done; 

37.怎么能够阻止一个用户登陆?
   

1.确保删除一个文件以前,先进行备份,管好你的回车键,除非你确保没问题
2.比删除更好的是注释掉这个文件
3.删除用户,能够#也可使用/bin/nologin
4.pawd -l omd   -->锁定帐户
5.设置文件过时
    chage -E "2017/08/11" omd
            ==>useradd -e "2017/08/11" omd
            ==>usermod -e "2017/08/11" omd

38.企业生产环境用户权限集中管理方案实例              
   

1.建立初级工程师3个,网络工程师1个,中级工程师1个,经理1个
    for user in chuji{01..03} net01 senior01 manager01 
    > do
    >  useradd $user
    > echo "111111"|passwd --stdin $user
    > done;
2.建立5个开发人员,属于phpers组
    groupadd -g 999 phpers
    for n in `seq 5`
    do 
        useradd -g phpers php0$n
    done
3.建立开发经理,中级phper
    for user in kaifaManager seniorPhper
    > do
    > useradd $user
    > echo "111111"|passwd --stdin $user
    > done
4.sudo的配置内容
    ########################Cmnd_Alias By FTL ###################################
    
    Cmnd_Alias CY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route 
    Cmnd_Alias GY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route, /sbin/iptables, /etc/init.d/network, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/rpm, /usr/bin/updatedb, /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
    Cmnd_Alias CK_CMD_1=/usr/bin/tail, /bin/grep, /var/log/messages*
    Cmnd_Alias GK_CMD_1=/sbin/service, /sbin/chkconfig, /bin/tail, /var/log/*, /bin/grep, /bin/cat, /bin/ls, /bin/sh
    Cmnd_Alias GW_CMD_1= /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/*
    
    ########################User Aliases By FTL ###################################
    
    User_Alias  CHUJI_YUNWEI_ADMINS=chuji01,chuji02,chuji03
    User_Alias  CHUJI_KAIFA_ADMINS=php01,php02,php03,php04,php05
    User_Alias  GAOJI_WANG_ADMINS=net01

    ########################Runas_Alias By FTL ###################################
    
    Runas_Alias  OP = root     -->将来切换到某个角色执行任务

    ########################Config By FTL ###################################

    senior01               ALL=(OP)      GY_CMD_1
    manager01           ALL=(ALL)   NOPASSWD:ALL
    kaifaManager        ALL=(ALL)   ALL, /usr/bin/passwd [A-Za-z], !/usr/bin/passwd root, !/usr/sbin/visudo,\
                                    !/usr/bin/vi *sudoer*,  !/usr/bin/sudo su -, !/bin/su
    seniorPhper            ALL=(OP)    GK_CMD_1
    CHUJI_YUNWEI_ADMINS ALL=(OP)    CY_CMD_1
    CHUJI_KAIFA_ADMINS  ALL=(OP)    CK_CMD_1
    GAOJI_WANG_ADMINS   ALL=(OP)    GW_CMD_1

        注意:别名要大写   
             命令的路径要全路径  
             超过一行,用"\"换行  
             排除的命令必定在最后面写
             kaifaManager 由于有ALL,因此能够直接su - 切换root,可是 sudo su -切换不了

39.企业生产环境日志审计解决方案                   

1.日志审计:记录全部系统以及相关用户行为的信息,而且能够自动分析,处理,展现(文本形式)
2.思路以下:
    1.经过环境变量命令以及syslog服务进行所有日志的审计         -->信息太大,不推荐
    2.sudo配合syslog服务,进行日志审计                (信息较少,效果不错,推荐使用)
    3.在bash解释器程序中潜入一个监视器,让全部被审计的系统用户使用修改过的增长了监视器的特殊bash做为程序解释程序
    4.使用商业产品    -->堡垒机
3.项目;sudo日志审计   -->专门对使用sudo命令的系统用户记录其执行的命令
  
  3.0.如下针对单机版本(完整版):
    1.安装/查看sudo命令,syslog服务
        rpm -qa | egrep "sudo|syslog"
    2.配置/etc/sudoers
        增长配置,表示sudo的log记录到/var/log/sudo.log文件中  
            echo "Defaults  logfile=/var/log/sudo.log"  >> /etc/sudoers
            echo "local2.debug   /var/log/sudo.log" >> /etc/rsyslog.conf     -->其实能够不用的
                --> 再rsyslog.conf的文件指定一个local2的设备,执行级别是debug,把执行的命令,经过rsyslog写入sudo.log

        查看添加的配置信息
            tail -1 /etc/sudoers
            tail -l /etc/rsyslog.conf 
        echo使用时要检查语法
            visudo -c        -->针对/etc/sudoers
        重启rsyslog服务
            service rsyslog restart
                ==> /etc/init.d/rsyslog restart
        查看日志文件:
            ll /var/log/sudo.log
                权限600 root.root

      3.1 日志集中管理   ---集群环境(部分参考版)
            1.思路  
                1.rsync + inotify或者定时任务+rsync,推送日志管理到服务器上, 10.185.163.162_20170813_sudo.log
                2.rsync服务处理
                    echo "10.185.163.162 logserver" >> /etc/hosts
                    日志服务器地址:
                        echo "*.info  @logserver" >> /etc/rsyslog.conf     -->适合全部的日志推走
                3.日志收集  scribe
                            flume对nginx采集
                            storm
                            logstash

            2.配置日志服务器记录日志
                1.配置logserver服务器
                    echo "10.185.163.162  logserver" >> /etc/hosts
                    tail -1 /etc/hosts
                    ping logserver
                2.配置客户端syslog文件
                    echo "*.info    @logserver" >> /etc/rsyslog.conf    将日志推送到服务器
                    tail -1 /etc/syslog.conf
                    /etc/init.d/rsyslog restart


40.已知一个端口为333,如何查看端口对应的服务名
  

 1. lsof -i :333
 2. netstat -lntup|grep 333
         -n:number  数字形式显示
         -t: tcp协议
         -u: udp协议
         -l: list
         -p: print 进程
 附加:若是给你一个进程名,如何查看端口:
     netstat -lntpu|grep sshd

41.如何查看一个已经被删除但任然占用进程的文件名?
  lsof |grep deleted
    groff     5734      root    0r      REG              253,0    53449     534312 /tmp/man.HZYQ8B (deleted)

42.网络以及服务故障的检查:

-->先肯定是我的问题仍是所有的问题
1.上不了网(局域网以及我的)
    0. 网卡坏了      
    a. ping www.baidu.com   -->icmp协议
        1.1不通则 ping 网关 -->不通则路由有问题
    b. traceroute www.baidu.com    -->测试路由之间是否通
    c. telnet www.baidu.com 22     -->测试服务器WEB有没有开启服务,以及防火层有没有挡
        ==>nmap     www.baidu.com  -p 22
        ==>nc  
    不通:端口没开,或者不存在
         fw防火墙阻挡
         服务监听的端口不在链接的IP上
    其余: IP被占用,IP冲突,其余人是否能够上网,大面积不能上网,检查路由,交换机
    附:window的跟踪路由
        tracert -d www.baidu.com
2.能上网,可是很慢(运维人员)
    同上abc
    服务器负载资源太高,服务器以及服务器的链接数过多
    服务器带宽满了,用户带宽  流量监控
    检查是否是存储服务器,NFS以及磁盘IO搞
    查看数据库是否是负载高,IO搞,CPU搞
    服务器受攻击

3.总结以上:
    1.先肯定是我的仍是所有
        a. ping www.baidu.com   -->icmp协议
              通:
                  不丢包: 正常
                  丢包:   服务器带宽不稳定,过载
            不通:服务器挂了,交换机故障
        b. traceroute www.baidu.com    -->测试路由之间是否通
    
    2.机房业务是否OK
        c. telnet www.baidu.com 22     -->测试服务器WEB有没有开启服务,以及防火层有没有挡
            ==>nmap     www.baidu.com  -p 22
    3.外部问题
        d.带宽满了
        f.服务器IO,CPU过载等
        g.代码问题
    4.其余问题
        客户本身的问题,带宽小,CPU处理慢等
    5.集群架构(数百台服务器)
        h.数据库问题,登陆数据库,优化数据库等
        i.存储服务器的问题等,IO以及NFS是否太高等

43.http协议(应用层)的工做原理
   

超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议。
        它经过两个程序实现:一个是客户端程序(各类浏览器),另外一个是服务器 (常称Web服务器)。
        这两个一般运行在不一样的主机上,经过交换报文来完成网页请求和响应。
一次HTTP操做称为一个事务,其工做过程可分为四步:
    1)首先客户机与服务器须要创建链接。只要单击某个超级连接,HTTP的工做开始。        
2)创建链接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。        
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。	
4)客户端接收服务器所返回的信息经过浏览器显示在用户的显示屏上,而后客户机与服务器断开链接。        若是在以上过程当中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来讲,这些过程是由HTTP本身完成的,用户只要用鼠标点击,等待信息显示就能够了


44.dns的解析原理                                      -----画图解答
45.OSI的7层模型  
46.生产环境中磁盘的选型和应用案例             --

 磁盘接口类型:IDEA,SCSI,SAS(15000/m),SATA,SSD(除了SSD,都是串口),光纤
 IDEA:淘汰
 企业级SAS:    15000/分, 300G 600G 1T,    多用线上的服务器    -->首选
 企业级SATA:7200-10000/分  1T 2-4T 6T  经济实惠,多用数据存储,站点数据库,线下备份等   -->HW 
 企业级SSD: 线上高并发,小容量业务
 思想: 根据/业务场景进行选择,SSD + STAT(访问频率大的放SSD,访问次数不高的放入SATA,始终把SSD放入高频率用户,冷热数据能够动态调动,从而兼顾性能,容量,成本)
	提醒: 不要用SATA用做磁盘作在线的高并发服务存储数据和数据库业务

41.磁盘工做的过程和原理
  

 磁盘工做的过程:
    磁盘工做的时候,磁盘会高速运动,当达到必定速度的时候,气流很强,足够将磁头托起并保持微小的距离(距离越小,磁头读取数据的灵活性越高),磁头会慢慢地由启停区向外移动,磁头读取最外面的0磁道的数据(由0磁道检测器进行引导)
        磁头沿着直径作径向运动,盘片旋转,转一圈读取一圈的数据。·不工做的时候回到启停区。
        1.磁盘的读写是按照柱面为单位进行的;从0盘面开始,读取完数据后,读取1盘面相同半径的数据,以此类推,读取半径相同的磁盘的数据到结束后读取另外一个半径的数据
        2.不一样磁头之间的切换是电子切换,不一样半径直接的切换是机械的(依靠电机移动磁头手臂)
    磁盘读取数据的原理:电脉冲信号转换为电脑可识别的信息
            利用特定的磁粒子的极性来记录数据。
            磁头在读取数据时,将磁里自带不一样极性转换成不一样的电脉冲信号,再利用数据转换器将原有的初始信号变成电脑可用的数据。
            写与此相反
    磁盘读写数据的时候,应尽量的让磁头不动,这样才能尽量多的读取更多的数据

42.问172.16.22.38/27,求子网ID,广播地址,主机数和主机可用数目

    答: 32-27=5,故主机为有2的5次方 -2 = 30个(这串地址的最小和最大地址分别用做网络地址(也叫网络号)和广播地址,不能分配给主机)
        子网掩码连续27个1
        11111111 11111111 11111111 11100000  -> 子网DI为255.255.255.224.0
        网络位27个,172.16.22就不用看了,占用了24个网络位,还有3个网络位,计算一下38的二进制00100110,咱们取前三位001;那就是如今这样
        172.16.22.001xxxxx,若是咱们都改为0就是网络地址(网络号),都改为1就是广播地址,计算一下,地址的范围是32到63

4? 一台服务器6块600G磁盘,raid5后,总大小3T,此时没法安装操做系统,解决办法是作raid5后,不要重启装系统,而是raid界面,继续分1个小的虚拟磁盘vd 200G,用这个200G的虚拟磁盘安装系统,安装完成后再把剩余的2.8T分区经过parted

43.企业不一样业务场景的服务器你是如何区分的?(备用)
 

    普通: /boot 100  /dev 1.5(8-16G)   /  
    db:    /boot 100  /dev 1.5(8-16G)   date 50G  / 
    门户:  /boot 100  /dev 1.5(8-16G)   / 50-100 剩余的留着备用

44.说出5个以上的磁盘管理的命令*(分区,格式化,挂载)
  

    fdisk -l -cu
    parted
    mkfs
    mount -a -t -o 
    umount 
    tune2fs -c -1
    dump2fs(块组,可用的inode) 详细信息
    df -hi
    du -sh 
    partprobe

45.RAID 0 1 5 10原理,冗余,性能的区别?
   

Raid有”廉价磁盘冗余阵列”的意思,就是利用多块廉价的硬盘组成磁盘组,让
        数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的;
        也能够用做数据的冗余,当某块硬盘损毁后,其余硬盘能够经过冗余数据计算出损坏磁盘的数据,这样就提升了数据储存的安全性。
        能够提供较普通磁盘更高的速度、安全性,因此服务器在安装时都会选择建立RAID。
    建立方式:
        软RAID(经过操做系统软件来实现)
        硬RAID(使用硬件阵列卡)。
    为何用RAID:
        提升数据安全性 
        提高数据读写性能 
        提供更大的单一逻辑磁盘数据容量存储
    RAID-0 :striping(条带模式)
        特色:在读写的时候能够实现并发,因此相对其读写性能最好,每一个磁盘都保存了完整数据的一部分
              读取也采用并行方式,磁盘数量越多,读取和写入速度越快。
              由于没有冗余,一个硬盘坏掉所有数据丢失
              至少两块硬盘才能组成Raid0阵列。 
              容量:全部硬盘之和。磁盘利用率为100%
        生产应用场景 
            一、负载均衡集群下面的多个相同RS节点服务器 
            二、分布式文件存储下面的主节点
            三、MySQL主从复制的多个slave服务器 
            四、对性能要求很高,对冗余要求很低的相关业务
    RAID-1 :mirroring(镜像卷)
        特色:
            至少须要两块硬盘
            raid大小等于两个raid分区中最小的容量(最好将分区大小分为同样)
            数据有冗余,在存储时同时写入两块硬盘,实现了数据备份; 
            磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。
    RAID-5
        特色:
            采用奇偶校验,可靠性强
            磁盘校验和被散列到不一样的磁盘里面,增长了读写速率。
            只有当两块磁盘同时丢失时,数据才没法恢复
            至少三块硬盘而且硬盘大小应该相等才能组成Raid5阵列。
        容量:
            全部硬盘容量之和减去其中一块硬盘的容量
                被减去的容量被分配到三块硬盘的不一样区域用来存放数据校验信息。
    Raid10(Raid1+Raid0)
        特色:
            是如今比较经常使用的一种磁盘阵列级别,
            它的容错好,读写数据效率较高,但经费相对也较高。
            备份和并发式存取数据,可靠性强。
            D一、D2组成一个阵列Raid1,其中D1是数据盘,D2是备份盘;
            D三、D4也组成一个Raid1,其中D3是数据盘,D4是备份盘;
            在这个基础上将D一、D2做为一个总体,将D三、D4也做为一个总体
            这两个总体之间再组成一个Raid0阵列。
            这样不只仅读取数据会很是快,并发写入的速度也会随着磁盘的增多而变快。
            至少四块硬盘而且每块硬盘大小应该相等才能组成Raid10阵列。
        容量:全部硬盘容量之和的一半(一半写数据,一半用来备份数据)。
    总结:
        (从节点)RAID0 读写速度很快  没有任何冗余      MySQL Slave(数据库的从库,小弟),集群的节点RS
        (监控,重要)RAID1 100%冗余,镜像 读写性能通常     成本高 单独的,数据重要,且不能宕机的业务,监控,系统盘
        (正常业务)RAID5 具有必定性能和冗余,能够坏一块盘,读性能不错 写入性能不高 通常的业务均可以用
        (数据库的主节点)RAID10 读写速度很快,100%冗余 成本高 性能和冗余要求很好的业务。数据库主库和存储的主

46.fstab修改错误致使文件系统没法启动故障修复案例
   

维护、单用户模式
    mount -o remount,rw  /     -->文件系统只读的时候须要处理
    修改fstab

47.磁盘设备实战

1.磁盘的外部,内部构造以及原理
2.机械磁盘的读取数据的工做原理
3.什么是磁道,扇区,柱面
4.什么是文件系统,常见的文件系统
5.磁盘存储的最小单位是?数据均为10-100M的视频文件,该如何配置
    文件储存在硬盘上,硬盘的最小存储单位叫作"扇区"(Sector)。
    每一个扇区储存512字节(至关于0.5KB)。
6.一个硬盘最p多有多少分区?为何?
7.一个100M大小的分区,1k的文件能够写入多少个,威慑么?
8.如何查看操做系统以及内核的版本
    uname -r
    cat /etc/redhat-release
    uname -m
9.配置nfs须要启动那些相关的服务
    服务器端:
        /etc/init.d/rpcbind
        /etc/init.d/nfs
    客户端:
        /etc/init.d/rpcbind    -->挂载完成后能够卸载
10.如何在客户端查看当前nfs挂载的客户端以及共享目录有哪些
        showmount -e ip
11.NFS的局限:
    有网络要求
    耦合度高
    高并发下性能差
    文件是铭文的

12.配置NFS服务后,不重启服务,如何使配置生效
    /etc/init.d/nfs reload ==> exportfs -tv
13.救援模式修复/etc/fstab ?    
14.root密码忘记如何修改 ?
15.如何添加IP    
    基于别名配置:ifconfig eth0:ws 192.168.25.132/24 up     -->临时生效,重启失效
    基于辅助IP:  ip addr add 192.168.25.131/24 dev eth0    

48.全网服务器数据备份方案的cron+rsync            
   

1.针对公司重要的数据备份混乱情况和领导提出备份全网数据的解决方案
2.经过本地打包备份,而后rsync结合inotify应用将全网数据统一备份到一个固定的存储服务器
    而后在存储服务器上经过脚本检查并报警管理员备份结果
3.按期将IDC机房的数据备份公司内部的服务器,防止天然灾害致使数据丢失

49.网络的面试题
    1.写出下面端口对应的服务
     

grep -b "\b22\b"  /etc/services
    端口 21   ftp
    端口 22   ssh
    端口 25   SMTP  -->sendmail
    端口 3306 mysql
    端口 873  rsync
    端口 161  snmp  -->远程管理设备
    端口 111  rpcbind
    端口 3389 window远程桌面 
    端口 80   http
    端口 443  https
    端口 110  pop3
    端口 53   dns
    端口 514  syslog

 

    2.FTL R2288的6块600G SAS盘做RAID5后,计划安装部署mysql提供读取服务器,如何划分分区安装操做系统?
        用什么命令来分区?
        分区后如何不启服务就能生效?
 

0.若3T的内存安装不了系统
1.RAID界面分出200G虚拟磁盘安装系统,boot分区200G swap分区100G(内存大于16G 2倍,小于则1.5) /分区给剩余data(用于数据存储)
   安装系统后用parted(先设置为gpt后分区)进行分区
2.若是不是RAID5,则能够先划分2个RAID1进行安装操做系统
3.NFS 的启动没有问题,可是为何chkconfig|grep nfs 任然是关闭的呢?


        答:chkconfig是系统开机自启动,与如今系统的状态无关

    4.批量更名题,移除文件名中的fin字样

# ll stu*
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_1_fin.jpg
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_2_fin.jpg
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_3_fin.jpg
0.touch stu_{1..3}_fin.jpg
1. rename 原字符  目标字符  文件
   rename "fin" "" *
2. for f in `ls *.fin.jpg`
    do
           mv $f `echo $f|sed 's#_fin##g'`
    done
3.ls *.jpg|awk -F '_fin' '{print "mv " $0 " " $1$2}'|bash
4.ls *.jpg|sed -r 's#(^.*)_fin.*$#mv & \1.jpg #g'|bash

50.把/etc/hello.sh 配置成开机自启动的服务
   

1. 添加到rc.local
2. 添加到/etc/init.d下  增长chkconfig

51.查看apache进程命令
  

 prefork进程模式:
        ps -ef | grep httpd
 worker线程:
        pstree -a |grep httpd | wc -l

52.192.168.0.0/24 网段经过192.168.0.1网关连入172.16.1.0/ip段,请问路由如何添加
 

   route add -net 172.16.1.0 gw 192.168.0.1 netmask 255.255.255.0 

53.处理一下的文件内容,将域名取出并根据域名进行计数排序处理

    http://www.etiantian.com/index.html
    http://www.etiantian.com/1.html
    http://post.etiantian.com/index.html
    http://mp3.etiantian.com/index.html
    http://www.etiantian.com/3.html
    http://post.etiantian.com/2.html

54.使用expect交互式命令语言把文件从A服务器推送到B,C服务器,请写出脚本。
   

已知root/HHH200@FTL 22端口

55.集群环境防止木马的方案:
   

主要是防止web,文件root.root  文件644 目录755
分开服务器:
    上传服务器:限制木马访问,只能post,不能get,而后数据存储在Mysql服务器上
    动态服务器:只能跟数据库进行读写(双向),控制文件的解析
    图片服务器:只能读取图片(单向)                
程序目录: 目录755 文件644,用户root
上传文件: 目录755 文件644,用户webserver

56.Linux下安装软件的方式

    1.源码编译安装:灵活,本身作饭本身吃
    2.yum或rpm: 简单,但不灵活,下饭店吃
        访问量小的时候可用  
        追求方便
        服务器数量大
    3.结合编译和yum的双重优势
        根据业务需求->自制rpm->放到yum仓库
            自制rpm?
            放到yum仓库?


57.Apache分析日志
    1.分析全部Web服务器的访问日志,对IP地址段进行去重

awk '{print $1}' h.log|sort|uniq -c|sort -rn
awk '{++S[$1]} END {for (key in S) print S[key], key }' www-access_20170905_log |sort -rn -k1

58.清空日志的方法: 

 1.echo  >/var/log/runlog.log
 2.>/var/log/runlog.log
 3.cat /dev/null >/var/log/runlog.log   -->查看黑洞并重定向到日志文件

      59.高可用?
    60.Rsync Nfs Crond Ssh key 基础命令 Apache Mysql Php Nginx Lvx+keepalive + Iptables +Cacti/流量监控 ?
    61.Linux 高可用(HA)集群之keepalived详解?        

http://freeloda.blog.51cto.com/2033581/1280962

keepalived是一个相似于layer3(网络层), 4(传输层) & 7(应用层)交换机制的软件 Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP); 做用:检测服务器的状态,若是有一台web服务器宕机,或工做出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除同时使用其余服务器代替该服务器的工做,当服务器工做正常后Keepalived自动将服务器加入到服务器群中这些工做所有自动完成,不须要人工干涉,须要人工作的只是修复故障的服务器。 Layer3:Keepalived使用Layer3的方式工做式时,Keepalived会按期向服务器群中的服务器发送一个ICMP的数据包(既咱们平时用的Ping程序),若是发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种状况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效做为服务器工做正常与否的标准。 Layer4:若是您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工做正常与否。如web server的服务端口通常是80,若是Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。 Layer7:Layer7就是工做在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,若是与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

 

    62.怎么把本身写脚本放在服务里面,即便用service调用
        方案一:
       

#!/bin/bash
# chkconfig: - 90 10
# description: just a test
    echo "Hello,$1"
# mv test /etc/init.d/
# chmod +x /etc/init.d/test
# chkconfig --add test
# service test start
//能够看到Hello,start表示成功

 

        方案二:
      

一、开机自启(两种方法)
     一、加入到rc.local系统配置文件
     二、将脚本作成服务形式(拷贝到/etc/init.d/)
2. 能够经过init.d下的脚本控制其启动
    说明脚本要支持start|stop|restart等参数,使用case配合函数进行控制
三、每5分钟将系统进程信息发送至syslog
     提示:logger命令是syslogd提供的shell接口。经过调用该命令可达到效果
     每5分钟自动发送系统进程信息:
   方法:一、脚本中加入sleep 300(秒为单位)
         二、定时任务      

 

    63.如何执行秒级别的任务:
        

1.用while循环执行
	while true
		do
			uptime 
			usleep 1000000  ->usleep表示毫秒级别,1000000为1秒
		done
	
    64.随机数的6中方法
       
echo $RANDOM|
echo $RANDOM|md5sum|cut -c 1-6
echo $((RANDOM+100000))
echo $(date +%t%N)
cat /proc/sys/kernel/random/uuid 

 

    65.判断一个网络里面有哪些IP在线:
        方案一:
         

#!/bin/bash
     while true; do
       for I in {1..5};do
         ping -c 2 -w 2 192.168.3.$I &>/dev/null
         if [ $? -eq 0 ]; then
           echo -e "\033[32;40m 192.168.3.$I is UP.\033[0m"
         else
           echo -e "\033[31;40m 192.168.3.$I is Down.\033[0m"
         fi
           done
             break
     done
  
        方案二:
        
#!/bin/bash
    IP=1
    while [ $IP -le 5 ]; do
        ping -c 2 -w 2 192.168.3.$IP &>/dev/null
        STRING=$?
    #    if ping -w 2 -c 2 192.168.3.$IP &>/dev/null;then
         if [ $STRING -eq 0 ];then
           echo -e "\033[32;40m192.168.3.$IP is up.\033[0m"
        else
           echo -e "\033[31;40m192.168.3.$IP is down.\033[0m"
        fi
        let IP=$IP+1
    done
相关文章
相关标签/搜索