Linux笔记

Linux的基本原则:

    1、有单一的小程序组成,结合小程序完成复杂任务;

    2、一切皆文件;

    3、尽量避免捕获用户接口;

    4、配置文件保存为纯文本格式。

切换用户:su:switch user

    su [-l] 用户名 #全切换

    su 用户名 #半切换

    exit #退出当前登陆

1lo:本地回环

以太网网卡:ethX

ifconfig:显示当前主机的ip详细信息;

    -a:显示所有接口的配置信息

    up/down:ifconfig eth0 up/down #启用或关闭网卡(重启后失效)

    /etc/init.d/network {start/stop/restart/status}

route:

          add:添加

        -host:主机路由

        -net:网络路由

    del:

    route -n:

网络配置文件:/etc/sysconfig/network

网络接口配置文件:/etc/sysconfig/network-scripts/ifcfg-interface_name

DEVICE=“关联设备名称,要与文件名的后半部interface_name保持一致”

BOOTPROTO={static|none|dhcp|bootp}:引导协议;要使用静态地址,使用static或none;DHCP表示使用dhcp服务器获取地址;

IPADDR=:IP地址

NETMASK=:子网掩码

GETEWAY=:设定默认网关;

ONEBOOT=:开机时是否自动激活此网络接口;

HWADDR=:硬件地址,要与硬件中的地址保持一致,可省略

USERCTL={yes|no}:是否允许普通用户控制此接口;

PEERDNS{yes|no}:是否在bootproto为dhcp时接受由服务器指定的dns地址;

不会立即生效,但是重启网络服务或主机重启后都会生效;

路由:

    /etc/sysconfig/network-scripts/route-ethx

    添加格式一:DEST via NEXTHOP

    添加格式二:

        ADDRESSO=

        NETMASK=

        GATEWAY=

DNS服务器指定方法只有一种:

    /etc/resolv.conf

    nameserver DNS_IP_1

    nameserver DNS_IP_2

指定本地解析:

    /etc/hosts

主机IP                 主机名                                 主机别名

192.168.1.100     www.commander.com     commander

DNS-->/etc/hosts-->DNS

配置主机名:

    hostname HOSTNAME

    立即生效,但不是永久生效;

    /etc/sysconfig/network

    HOSTNAME=

ifconfig 老旧

IP route

ip

  link:配置网卡属性

       show:ip -s link route

  set:

    ip link set DEVICE{up|down}


            addr:协议地址一块网卡可以使用多个地址:

网络设备可以别名:

eth0

ethx:x       eth0:0

  route:路由

/etc,/bin,/sbin,/lib,系统启动就需 要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

/usr/;操作系统核心功能,可以单独分区

bin

sbin

lib

init:是所有进程的父进程,其进程号永远为1

ps:process state

    sysV风格;

    BSD风格;

        -a:显示所有跟终端有关的进程;

        -u:显示相关进程的用户;

        -x:显示所有跟终端无关的进程;

        -elF:

        -ef:

        -eF:

进程的分类:

    跟终端相关的进程;

    跟终端无关的进程;

100-139:用户控制

0-99:内核调整

进程的状态:

    D:不可中断的睡眠;

    R:运行或就绪;

    S:可终端的睡眠;

    T:停止;

    Z:僵死;

    <:高优先级进程;

    N:低优先级的进程

    l:多线程进程

    +:前台进程组中的进程

    s:会话进程中的领导者

    

pstree

pgrep

top

vmstat

free

kill:

    1:HUP

    2:INT

    9:kill

    15:TERM

pkill

top:

    M:根据驻留内存大小进行排序

    P:根据CPU使用百分比进行排序

    T:根据累计时间进行排序

    l:是否显示平均负载和启动时间

    t:是否显示进行和CPU状态相关的信息

    m:是否显示内存相关的信息

    c:是否显示完整的命令信息

    q:退出top

    k:终止某个进程

    -d:指定延迟时长,单位是秒

    -b:批模式;

    -n #:在批模式下,共显示多少批

进程间通信:(IPC:inter process commuication)

    共享内存

    信号:signal

    semaphore

重要的信号:

    1、SIGHUP:让一个今年成不用重启,就可以重读其配置文件,并让新的配置信息生效;

    2、SIGINT:CTRL+c,中断一个进程

    9、SIGKILL:杀死一个进程;

    15、SIGTERM:终止一个进程,默认信号

    制定一个信号:

    信号号码:kill -l

    信号名称:kill  -SIGKILL

    信号名称简写:kill  -KILL

kill PID

killall  command #杀死所有是该command进程名的进程;

在启动时指定nice值;

nice -n NI COMMAND

前台:占据了命令提示符;

后台:启动之后,释放命令提示符,后续的操作在后台完成;

CTRL+z:把正在前台的作业送往后台

command &:让命令在后台执行

bg:让后台的停止作业继续运行

    bg (jobid)

fg:将后台的作业调回前台

    fg (jobid)

jobs:查看后台的所有作业

    作业号不同于进程号

    +:命令将默认操作的作业

    -:命令将第二个默认操作的作业

kill %jobid:终止某作业

vmstat:系统状态查看命令;

uptime:开机多长时间

/proc/meminfo:内存信息配置文件;

任务计划:

    1、在未来的某个时间点执行一次;

    2、周期性的执行;

Linux系统启动流程;

    post->bios(boot sequence)-->mbr(bootloader,446)-kernel->/sbin/init

    启动的服务不同:

    运行级别:0-6

        0:halt(关机)

        1:single user mode,单用户模式,直接以管理员身份切入;

        2:multi user mode,no NFS(多用户模式)

        3:multi user mode,text mode(正常多用户文本模式)

        4:reserved(此前尚未定义,属于保留级别)

        5:multi user mode,graphic mode(图形界面)

        6:reboot(重启)

详解启动过程:

    boot leader(MBR)

          LILO:Linux loader

          GRUB:grand unified bootloader

stage1:mbr

stage1.5:

stage2:/boot/grub/

/boot/grub.conf/ #以下文本内容的文件路径

default=0 #设定默认启动的title的编号;

timeout=5 #等待用户选择的超时时长;

splashimage=(hd0,0)/grub/splash.xpm.gz #grub的背景图片

hiddenmenu #隐藏菜单;

password Redhat #明文加密grub

password --md5 $1$VQIZS/$CBruMoSKxXv72k/IG5mUy #密文加密grub

title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) #内核标题或操作系统名称,字符串,可自由修改;

root (hd0,0) #内核文件所在的设备,对grub而言,所有类型硬盘一律hd;格式为(hd#,n),#表示第几个磁盘,最后的n表示对应磁盘的分区;

kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapp

er/vg_commander-lv_root rd_NO_LUKS rd_LVM_LV=vg_commander/lv_sw

ap rd_NO_MD.UTF-8 rd_LVM_LV=vg_commander/lv_root  KE

YBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #内核文件路径,及传递给内核的参数

initrd /initramfs-2.6.32-431.el6.x86_64.img #ramdisk文件路径

核心:动态加载,内核模块

内核:/lib/modules/‘内核版本号命名的目录’

vmlinuz-2.6.32.

内核设计风格:

    单内核:Linux(LWP:轻量级进程)

        核心:ko(kernel object)

    微内核:Windows,Solaris(支持多线程)

文件系统:

    rootfs:根文件系统

    FHS:linux

    /boot:系统启动相关的文件,如内核、initrd以及grub(bootloader)

    /dev:设备文件

        设备文件:

            块设备:随机访问,数据块

            字符块设备:线性访问,按字符为单位

            设备号:主设备号(major)和次设备号(minor)

    /etc:配置文件 

        /etc/mtab

    /home:用户的家目录,默认为/home/USERNAME

    /root:管理员家目录

    /lib:库文件

        /lib/modules:内核模块文件

        静态库:.a 

        动态库:.dll,.so(shared object)

    /media:挂载点目录,移动设备

    /mnt:挂载点目录,额外的临时文件系统

    /misc:杂项

    /opt:可选目录,第三方程序安装目录

    /proc:伪文件系统,内核映射文件

    /sys:伪文件系统,跟硬件设备相关的属性映射文件

    /tmp:临时文件

    /var/tmp:临时文件

    /var:可变化的文件

    /bin:可执行文件,用户命令

    /sbin:管理命令


    /usr:shared,read-only

    /usr/bin

    /usr/sbin

    /usr/lib/

    /usr/local:第三方程序安装目录

    /usr/local/bin

    /usr/local/sbin

    /usr/local/lib/

    文件和目录命名规则:

        1、长度不能超过255个字符;

        2、不能使用/当文件名;

        3、严格区分大小写;

    相对路径:

    绝对路径:

系统管理工作如下:

    文件管理:touch、stat、file、rm、cp、mv、nano

    目录管理:ls、cd、pwd、mkdir、rmdir、tree

    运行程序

    设备管理

    软件管理

    进程管理: 1、在每个进程看来,当前主机上只存在内核和当前进程

                    2、进程是程序的副本,进程是程序的执行实例

    网络管理

    安全功能

    驱动程序

    日期时间:date、clock、hwclock、cal

    查看文本:cat、tac、more、less、head、tail

        文本处理:cut -d : -f1或者(f1,3)或者(f1-3) /etc/passwd #-d:指定分隔符,默认为空格;-f:指定要显示的字段

        sort

            -n:升序排序

            -nr:逆序排序

            -t:字段分隔符

            -k:以那个字段为准排序

            -u:排序后相同行只显示一次

            -f:排序时忽略字符大小写

        uniq:

            -c:显示文件中行重复的次数

            -d:只显示重复的行

        join、sed、awk

    文本统计:wc(word count)

        -l:统计行数

    字符处理命令:tr #转换或删除字符

        tr 'a-z' 'A-Z' </etc/passwd

        -d:删除出现在字符集中的所有字符

bash特性:

    1、命令历史:history

        -c:清空命令历史;

        -d:删除指定行

        -w:保存命令历史至历史文件中

    2、管道、重定向

    3、命令别名

    4、命令行编辑

        光标跳转(ctrl+a#跳转到命令行行首;ctrl+e#跳转到命令行行尾ctrl+u#删除光标至命令行首的内容ctrl+k#删除光标至行为的内容ctrl+l#清屏)

    5、命令行展开

    6、文件名通配:

        *:匹配任意长度的任意字符

        ?:匹配任意单个字符

        []:匹配指定范围内的任意单个字符 #[abc]、[a-z]、[0-9]、[0-9a-zA-Z]

    7、变量

    8、编程

    9、bash支持的引号:

        ``:命令替换

        "":弱引用,可以实现变量替换

        '':强引用,不完成变量替换

用户、组、权限:

    r、w、x

    文件:

        r:可读,可以使用类似cat等命令查看文件内容;

        w:可写,可以编辑或删除此文件

        x:可执行,exacutable,可以在命令提示符下当作命令提交给内核

    目录:

        r:可以对此目录执行ls以列出内部的所有文件;

        w:可在此目录创建文件;

        x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息

常用命令详解:

        chown:改变用户属主(只有管理员才有这个权限)

                chown USERNAME file1,file2...

                chown USERNAME:GROUPNAME  file

                -R:修改目录机器内部文件的属主

                --reference=/path/to/somefile  file#修改文件权限和参考文件权限一样

        chgrp:修改文件属组

                -R:修改目录机器内部文件的属主

                --reference=/path/to/somefile  file#修改文件权限和参考文件权限一样

        chmod:修改文件的权限

                -R:修改目录机器内部文件的权限

                --reference=/path/to/somefile  file#修改文件权限和参考文件权限一样

        umask:(xxx)遮罩码##文件默认不能有执行权限,如果算的的结果中有执行的权限,则将其权限默认+1

                文件:666-xxx

                目录:777-xxx

用户组类别:

        管理员组:

        普通组:

        系统组:

        一般组:

        私有组:

        基本组:

        附加组,额外组,默认组以外的其他组。

        用户管理:

            useradd [options] USERNAME

                -u

                -r:添加系统用户

                -g:指定用户基本组

                -G:附加组

                -d:/path/to/directory

                -s:指定用户shell路径

                -m:强制为用户创建家目录

                -M:不创建用户家目录

        id:查看用户的账号属性信息

            -u:打印用户id号

            -g:打印用户组id号

            -G:打印用户所有组id号

            -n:打印用户的名称

        finger:查看用户账号信息

            finger USERNAME

        usermod:修改账号属性

            -u:修改账号UID

            -s:修改用户的shell

            -g:修改基本组GID(组id必须事先存在)

            -a -G:GID #指定新的附加组,不使用-a选项会覆盖此前的附加组

            -c:注释信息

            -d:为用户指定新的家目录

            -L:锁定用户账号

            -U:解锁用户账号

        passwd:密码管理(对于普通用户来说只能用来修改自己的密码)

            passwd USERNAME 

            --stdin:从标准输入接受密码(echo "shouhuzhe" |passwd --stdin USERNAME)

            -l:锁定用户账号

            -u:解锁用户账号

            -d:删除用户密码

        pwck:检查用户账号完整性

        userdel:删除用户

            -r:删除用户相关的一切

        chage:

            -d:最近一次修改的时间

            -E:过期时间

            -I:非活动时间

            -m:最短使用期限

            -M:最长使用期限

            -W:警告时间

        chsh:修改用户的shell

        chfn:修改用户的注释信息

        /etc/login.defs:用户信息规定

    组管理:

        groupadd:创建组

            -g:指定gid

            -r:添加为系统组

        groupdel:删除组

        groupmod:

            -g:GID

            -n:GRPNAME

        gpasswd:设定组密码

bash的配置文件:

    全局配置文件:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc

    个人配置文件:

        ~/.bash_profile,~/.bashrc

    profile类的文件:

        1、设定环境变量

        2、运行命令或脚本

    bashrc类的文件:

        1、设定本地变量

        2、定义命令别名

登陆式shell如何读取配置文件:

    /etc/profile—-->/etc/profile.d/*.sh-->~/.bash_profile->~/.bashrc-->/etc/bashrc

非登陆式shell:

    ~/.bashrec-->/etc/bashrc-->/etc/profile.d/*.sh

加密方法:

    对称加密:加密和解密使用同一个密码;

    公钥加密:每个密码都成对出现,一个为私钥(secret),一个为公钥(public key)

    单向加密:散列加密,提取数据特征码

I/O重定向:

set -C:禁止覆盖重定向

set +C:关闭上述功能

    >:覆盖重定向

    >>:追加重定向

    2>:错误覆盖重定向

    2>>:错误追加重定向

管道:前一个命令的输出,作为后一个命令的输入

文本查找的需要:

    grep:根据模式搜索文本,并将符合模式的文本行显示出来。

        -i:忽略字符大小写

        --color:对匹配的字符做高亮显示

        -o:只显示被模式匹配到的字符串

        -E:使用扩展正则表达式

    fgrep:不支持正则表达式

    

匹配次数:

    *:匹配其前面的字符任意次

    \?:匹配其前面的字符一次或0次

    \{m,n\}:匹配其前面的字符至少m次,至多n次。

位置铆钉:

    ^:铆钉行首,此字符后面的任意内容必须出现在行首

    $:铆钉行尾,此字符前面的任意内容必须出现在行尾

    ^$:空白行

    \<或\b:铆定词首,其后面的任意字符必须作为单词的首部出现

    \>或\b:铆定词尾,其前面的任意字符必须作为单词的尾部出现

shell编程:

    bash变量类型:

        环境变量

        本地变量(局部变量)

        位置变量:

            $1,$2...:第一个参数,第二个参数

        特殊变量:

            $?:上一个命令执行状态返回值

            $#:参数的个数

            $*:参数列表

            $@:参数列表

    脚本在执行时会启动一个子shell进程

        命令行在启动的脚本会继承当前shell环境;

        系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

    bash如何实现条件判断:

        条件测试类型:

            整数测试:

                -eq:测试两个整数是否相等 [ a -eq b ]

                -ne:测试两个整数是否不等,不等为真,相等为假;

                -gt:测试一个属是否大于另一个数,大于为真,小于为假;

                -lt:测试一个数是否小于另一个数,小于为真,大于为假;

                -ge:大于或等于;

                -le:小于或等于;

            命令间的逻辑关系:

                逻辑与:&&

                逻辑或:||

            字符测试:

                ==或=:相等为真,不等为假

                !=:不等为真,相等为假

                -n:测试指定的字符串是否为空,空则真,不空则假

                -z:测试指定的字符串是否为空,不空为真,空则为假

            文件测试:

                -e file:测试文件是否存在

                -f file:测试文件是否为普通文件

                -d file:测试指定路径是否为目录

                -r file:测试当前用户对指定文件受否有读取权限

                -w file:测试当前用户对指定文件受否有写权限

                -x file:测试当前用户对指定文件受否有执行权限

        shell中如何进行算数运算:

            let 算术表达式

            c=$[$a+$b]

            $((算术运算表达式))

            expr {例子:c=`expr $a + $b`}算数运算表达式,表达式中各操作数及运算符要有空格

grep、sed(流编辑器)、awk

    sed的基本用法:

        模式空间:默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后将模式空间打印至屏幕

        sed [options] 'AddressCommand' file ...

            -n:静默模式,不在默认显示空间中的内容

            -i:之间修改原文件

            -e script -e script ...:可以同时执行多个脚本

            -f /PATH/TO/SED_SCRIPT

            sed -f /path/to/scripts  /file

            -r:表示使用扩展正则表达式

        Address:

            1、StartLine,EndLine

                比如1,100

                $:最后一行

            2、/RegExp/

                /^root/

            3、/pattern1/,/panttern2/

                第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

            4、LineNumber

                指定的行

            5、StartLine,+N

                从startline开始,向后的N行

            Command:

                d:删除符合条件的行

                p:显示符合条件的行

                \n:可以换行

                a \string:在指定的行后面追加新行,内容为string

                i \string:在指定的行前面添加新行,内容为string

                r FILE:将指定文件的内容添加至符合的行处

                sed '$r /etc/issue' /etc/fstab

                sed '1,2r /etc/issue' /etc/fstab

                w FILE:将指定范围内的内容另存至指定的文件中

                sed  '/root/w /tmp/root.txt' /etc/passwd

                s/pattern/string/':查找并替换,默认至替换每一行中第一次被模式匹配到的字符串

                s/pattern/string/g':全局替换

                s/pattern/string/i':忽略字符大小写

文件查找:

    locate:非实时,非精确查找,是根据全系统文件数据库进行的

        updatedb:手动生成文件数据库

    find:实时查找,精确,支持众多查找标准,遍历指定目录中的所有文件完成查找,速度慢

        find 查找路径(可以省略) 查找标准 查找到以后的处理标准

        查找路径:默认当前路径

        查找标准:默认当前路径下的所有文件

        处理运作:默认为显示

        匹配标准:

            -name ‘FILENAME':根据文件名查找,支持通配符

            -iname “FILENAME':文件名匹配时不区分大小写

            -regex PATTER :基于正则表达式进行文件名查找

            -user  USERNAME:根据属主查找

            -group GROUPNAME:根据属组查找

            -uid UID:根据UID查找

            -gid GID:根据GID查找

            -nouser:查找没有属主的文件

            -nogroup:查找没有属组的文件

            -type

                f:普通文件

                d:目录

                c:字符

                b:块设备

                s:套接字设备

                l:连接文件

            -size

                [+|-]#k/M/G :+表示大于,-表示小于

                #K:

                #M:兆

                #G:GB

        组合条件:

            -a:与关系

            -o:或关系

            -not:非

vim编辑器:

    1、打开文件:

        vim +# :打开文件,并定位于第#行

        vim +:打开文件,定位至最后一行

        vim +/pattern:打开文件,定位至第一次被pattern匹配到行的行首

    2、模式转换:

        i:在当前光标所在所有字符的前面,转为输入模式

        a:在当前光标所在所有字符的后面,转为输入模式

        o:在当前光标所在行的下方,新建一行,并转入输入模式

        I:在当前光标所在行的行首,并转换为输入模式

        A:在当前光标所在行的行尾,并转换为输入模式

        O:在当前光标所在行的上方,新建一行,并转入输入模式

    3、以单词为单位移动:

        w:移动至下一个单词的词首

        e:跳到当前单词词尾或下一个单词的词尾

        b:跳到当前单词词首或前一个单词的词首

    4、行内跳转:

        0:跳至行首

        ^:行首的第一个非空白字符

        $:绝对行尾

    5、行间跳转

        #G:直接跳转至第#行

        G:最后一行

    6、翻屏操作

        ctrl + f:向后翻屏

        ctrl + b:向上翻一屏

        ctrl + d:向下翻半屏

        ctrl + u:向上翻半屏

    7、删除单个字符

        #x:删除光标所在处及向后的共#个字符

        x:删除光标处的字符

    8、删除命令

        d命令和跳转命令组合使用

        #dd:删除#行

        dd:删除当前光标所在行

    9、末行模式

        startAdd,EndAdd

        .:表示当前行

        $:最后一行

        +#:向下的#行

    10、粘贴命令

        p:如果删除的或复制的为整行内容,则粘贴至光标所在行的下方,如果复制的或删除的内容为非整行,则粘贴至光标所在字符的后面

        P:如果删除的或复制的为整行内容,则粘贴至光标所在行的上方,如果复制的或删除的内容为非整行,则粘贴至光标所在字符的前面

    11、复制命令

        yy:复制一行

        y$:复制光标到行尾

    12修改

        cc:先删除光标所在行,然后转为输入模式

    13、替换

        r:替换

        R:替换模式

    14、撤销编辑操作

        u:撤销前一次的编辑操作

        连续u命令可撤销此前n次的编辑操作

        #u:直接撤销最近#次的操作

        ctrl+r:撤销最近一次的撤销操作

    15、重复前一编辑操作

        .:重复前一编辑操作

    16、可视化模式

        v:按字符选取

        V:按矩形选取

    17、查找

        /PATTERN

        ?PATTERN

    使用vim编辑多个文件:

        vim file1 file2...

        :next:切换至下一个文件

        :prev:切换至前一个文件

        :last:切换至最后一个文件

        :first:切换至第一个文件

        :qa:全部退出

    分屏显示:

        ctrl+w,s:水平拆分窗口

        ctrl+w,v:垂直拆分窗口

        ctrl+w,ARROW:在窗口间切换光标

        qa:全部退出

    分窗口编辑多个文件

        vim -o:水平分割显示

        vim -O垂直分割显示

    将当前文件中部分内容另存为另外一个文件

        :w

        :ADDR1,ADDR2w /path/to/somewhere

    在当前光标下方将另外一个文件的内容填充在当前文件中

        :r /path/to/somewhere

    根shell交互

        :!:COMMAND

    高级话题

        set nu:显示行号:

        set nonu:取消显示行号

        set ic:忽略大小写

        set noic:不忽略大小写

        set ai:设定自动缩进

        set noai:取消自动缩进

        set hlsearch:设定高亮显示搜索到的文本

        set nohlsearch:取消高亮显示搜索到的文本

        set syntax on:设定语法高亮显示

        set syntax off:取消语法高亮显示

    配置文件:

        /etc/vimrc:全局配置文件,对所有用户都生效

        ~/.vimrc:当前用户配置文件

组合测试条件:

    -a:与关系

    -o:或关系

    !:非关系

    例如:if [ $# -gt 1 -a $# le 3 ]

        或者if [ $# -gt 1 ] && [ $# le 3 ]都是可以的

赋值表达式:

    let i+=1相当于i++

    let i-=1相当于i--

特殊权限:

    SUID:运行某程序时,相应的进程的属主是程序文件自身的属主,而不是启动者;

        chmod u+s 

        chmod u-s 

    SGID:运行某程序时,相应的进程的属组是程序文件自身的属组,而不是启动者;

        chmod g+s

        chmod g-s

    sticky:在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件

        chmod o+t DIR

        chmod o-t DIR

facl:文件访问控制列表(Filesystem Access Control List)

    setfacl:

        -m:设定 

            u:UID:权限 

            g:GID:权限 

    -x:取消

        u:UID:权限 

        g:GID:权限

    getfacl file:查看文件的facl权限

常用命令详解:

    last:显示/var/log/wtmp文件,显示用户登陆历史及系统重启历史

        -n #:显示最近#次的相关信息

    lastb:/var/log/wtmp ,显示用户错误的登陆尝试

        -n #:显示最近#次的相关信息

    lastlog:显示每个用户最近一次的成功登陆信息

        -u USERNAME :显示指定用户最近的登陆信息

    basename:显示路径基名

        $0:执行脚本时的脚本名称

    hostname:修改主机名

echo $RANDOM:生成随机数

终端类型:

    console:控制台

    pty:物理终端(VGA)

    tty#:虚拟终端(VGA)

    ttys#:串行终端

    pts#:伪终端

面向过程:

    控制结构:

        顺序结构

        选择结构:if、case语句

        循环结构:for、while语句

磁盘管理:

    创建链接:

        硬链接:ln  src desc

            1、只能对文件创建,不能应用于目录

            2、不能跨文件系统

            3、创建硬链接会增加文件被链接的次数

        软链接: ln -s src desc

            1、可应用于目录

            2、可以跨文件系统

            3、不会增加被链接文件的连接次数

            4、其大小为指定的路径所包含的字符个数

    设备文件:

        b:按块为单位,随机访问的设备(硬盘)

        c:按字符为单位,线性设备(键盘)

    /dev:

        主设备号(major number)

        标识设备类型

        次设备号(minor number)

        标识同一种类型中不同设备

    mknod [OPTION] NAME TYPE [MAJOR NINOR]

        -M MODE

    硬盘设备的设备文件名:

        IDE\ATA:hd

            第一个IDE接口:主、从

            /dev/hda、/dev/hdb

            第二个IDE接口:主、从

            /dev/hdc、/dev/hdd

        SATA:sd

        SCSI:sd

        USB:sd

            a、b、c...来区别同一种类型下的不同该设备

        hda:

            hda1:第一个主分区

            hda2:第二个主分区

            hda3:第三个主分区

            hda4:第四个主分区

            hda5:第一个逻辑分区

    查看当前系统识别了几块硬盘设备:

        fdisk -l /dev/to/some_device_file

        fdisk /dev/sda:分区操作

            p:显示当前硬件的分区,包括没保存的改动

            n:创建新分区

            e:扩展分区

            p:主分区

            d:删除一个分区

            w:保存退出

            q:不保存退出

            t:修改分区类型

            l:显示所有支持的分区类型

            cat /proc/pattitons:查看当前系统挂载的分区  

            partprobe /dev/sda :重新探测分区

        cat /proc/filesystems:查看当前内核所支持文件系统类型

    创建文件系统:

        mkfs:make file system 

            -t FSTYPE:(ext2、ext3、ext4)指定文件类型

    专门管理ext系列文件:

        mke2fs:

            -j:创建ext3类型文件系统

            -b BLOCK SIZE:指定块大小,默认为4096,可用取值为1024、2048、4096;

            -L LABLE:指定分区卷标

            -m #:指定预留给超级用户的块数百分比

            -i #:用于指定为多少字节的空间创建一个inode,默认为8192,这里给出的数值大小应该为块大小的2^n倍

            -N #:指定inode个数

            -F:强制创建文件系统

            -E:用户指定额外文件系统属性

    blkid /dev/sda:查询或查看磁盘设备的相关属性

        UUID:设备唯一标识符

        TYPE:文件系统格式

        LABLE:查看卷标

    e2lable:查看或设定卷标

        e2lable /dev/sda 卷标:设定卷标

        e2lable /dev/sda:查看卷标

    tune2fs:无损调整文件系统相关属性

        -j:不损坏原有数据,将ext2升级为ext3

        -L:用于设定或更改卷标

        -m #:调整预留百分比

        -r:指定预留块数

        -o:设定默认挂载选项

        -c #:指定挂载次数达到#次后进行自检,0或-1表示关闭此功能

        -i:每挂载使用多少天后进行自检,0或-1表示关闭此功能

        -l:显示超级块中的详细信息

    dumpe2fs:显示文件属性信息

        -h:只显示超级块中的信息

    fsck:检查并修复linux文件系统

        -t FISTYLE:指定文件系统类型

        -a:自动完成修复

    e2fsck:专用于修复ext2、ext3文件系统

        -f:强制检查

        -p:自动修复

    mount:显示当前已挂载的设备及挂载点{挂载:将新的文件系统关联至当前根文件系统}

        -a:表示挂载/etc/fstab文件中定义的所有文件中的设备

        -n:默认情况下,mount命每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件;使用-n选项意味着挂载设备时,不把信息写入此文件

        -t FSTYPE:指定正在挂载设备上的文件系统的类型,不使用此选项时,mount命令会调用blkid命令获取对应文件系统的类型

        -r:只读挂载,挂载光盘时常用此选项

        -w:读写挂载

        -o:指定额外的挂载选项,也即指定文件系统启用的属性

            remount:重新挂载当前文件系统

            ro:挂载为只读

            rw:读写挂载

            loop:挂载本地回环设备

    mount 设备 挂载点 

        设备文件:/dev/sda 

        卷标:LABLE=‘’

        UUID:UUID=“”

        挂载点:目录

            要求:

            1、此目录没有被其他进程使用

            2、目录的是新啊存在

            3、目录中的原有文件会暂时隐藏

    umount:卸载(将某文件系统于当前文件系统的关联关系移除)

    umount 设备或者挂载点

    卸载注意事项:

        1、挂载的设备没有被进程使用

    swap分区:虚拟内存

    mkswap /dev/sda2:创建交换分区

        -L LABLE

    swapon /dev/sda2:启用交换分区

    swapoff /dev/sda2:关闭交换分区

    dd命令:

        if=数据来源

        of=数据存储目标

        bs=#M:块大小为#M

        count=#:总共#块 

        senk=#:创建数据文件时,跳过的空间大小

            dd if=’/etc/passwd‘ of=’/home/passwd'

            dd if=/dev/sda of=/home/mbr.bak bs=512 count=1:备份磁盘mbr

            dd if=/dev/zero of=/var/swapfile bs=1M count=1024

        文件系统配置文件:/etc/fstab 

            OS在初始时,会自动挂载此文件中定义的每个文件系统

            要挂载的设备 挂载点 文件系统类型 挂载选项   转储频率

            /dev/mapper/vg_server-lv_root                /         ext4     defaults                1 1

            UUID=48968f07-cae1-4b7e-b14f-cae762877300   /boot       ext4     defaults                1 2

            /dev/mapper/vg_server-lv_home                /home     ext4     defaults         1 2

            /dev/mapper/vg_server-lv_swap                swap      swap     defaults         0 0

            tmpfs                                      /dev/shm     tmpfs    defaults         0 0

            devpts                                  /dev/pts   devpts   gid=5,mode=620   0 0

            sysfs                                        /sys   sysfs    defaults         0 0

            proc                                        /proc   proc     defaults         0 0

            /dev/sdb/   /mnt/  ext4  defaults 0 0

    fuser :验证进程正在使用的文件或套接字文件

        -v:查看某个文件上正在运行的进程

        -k:

        -m:

        fuser -km MOUNT_POIT:中止正在访问此挂载点的所有进程

压缩解压:

    gzip :.gz

        gzip /PATH/TO/SOME_FILE:压缩完成后会删除源文件

        -d:解压缩

        #:1-9,指定压缩比,默认是6

        gunzip:解压缩

        zcat PATH/TO/SOME_FILE:不解压的情况下临时查看压缩文件内容

    bzip2:.bz2比gzip有着更大的压缩比,使用格式类似

        bzip  /PATH/TO/SOME_FILE:压缩完成后会删除源文件

        -d:解压缩

        -k:压缩时保留原文件

        #:1-9,指定压缩比,默认是6

    bunzip /PATH/TO/SOME_FILE:压缩完成后会删除源文件

        bzcat PATH/TO/SOME_FILE:不解压的情况下临时查看压缩文件内容

    xz :.xz

        /PATH/TO/SOME_FILE:压缩完成后会删除源文件

        -d:解压缩

        -k:压缩时保留原文件

        #:1-9,指定压缩比,默认是6

        unxz /PATH/TO/SOME_FILE:解压缩完成后会删除源文件

        xzcat PATH/TO/SOME_FILE:不解压的情况下临时查看压缩文件内容

        xzdec PATH/TO/SOME_FILE:不解压的情况下临时查看压缩文件内容

    zip:既归档又压缩

        zip FILENAME.ZIP FILE1 FILE2 ...:压缩后不删除原文件

        unzip FILENAME.ZIP:解压缩

    tar:归档工具,只归档,不压缩

        -c:创建归档文件

        -f FILENAME.tar:操作的归档文件

        -x:展开归档

        --xzttrs:归档时,保留文件的扩展属性

        -t:不展开归档查看归档了哪些文件

        -zcf:调用gzip工具,压缩成gzip

        -zxf:调用gzip解压缩并展开归档

        -jcf:调用bzip2归档并调用gzip2

        -xcf:调用bzip2解压缩并展开归档

    cpio:归档工具

    read:内建命令

        read name:直接在屏幕为name赋值

        -t #:指定默认超时时间为#

        -p:

        用read写一个可选择性的备份脚本:

            #/bin/bash 

            read -p "输入三个文件:"FILE1 FILE2 FILE3

            read -p "输入文件保存位置:"DEST

            read -p "请选择压缩方式[gzip|bzip2|xz]"COMP

            case $COMP in

            gzip)

                tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3

                ;;

            bzip2)

                tar -zcf ${DEST}.tar.bz $FILE1 $FILE2 $FILE3

                ;;

            xz)

                tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3

                xz ${DEST}.tar  

                ;;

            *)

                echo "Uknown"

                exit 9

                ;;

           esac

RAID:

    级别:仅代表磁盘组织方式的不同,没有上下之分

    0:条带

        性能提升:读写

        冗余能力(容错能力):吴

        空间利用率:ns

        至少需要2块盘

    1:镜像

        性能表现:写性能下降,读性能提升

        冗余能力:有

        空间利用率:1/2

        至少需要2块盘

    2

    3

    4

    5:性能表现:读写提升

        冗余能力:有

        空间利用率:(n-1)/n 

        至少需要2块盘

    10:性能表现:读写提升

        冗余能力:有

        空间利用率:1/2

        至少需要4块盘

    01:性能表现:读写提升

        冗余能力:有

        空间利用率:1/2

        至少需要4块盘

    50:性能表现:读写提升

        冗余能力:有

        空间利用率:(n-1)/n 

        至少需要6块盘

    jbod:性能表现:无提升

        冗余能力:无

        空间利用率:100%

        至少需要两块盘

    逻辑RAID:

        /dev/md0

        /dev/md1

    mdadm:将任何块设备做成RAID;md命令

        模式化的命令:

            创建模式

                -C:

                    专用选项:

                        -l:级别

                        -n :设备个数

                        -a {yes|no}:自动为其创建设备文件

                        -c :CHUNK大小

            管理模式

                --add,--del,--fail

            监控模式:

                -F

            增长模式:

                -G:

            装配模式

                -A

        mdadm -D /dev/md0:查看raid设备详细信息

    pv:命令

        pvcreat,pvremove,pvscan,pvdisplay,pvmove

    vg:命令 

        vgcreate VG_NAME /PATH/TO/PV

        -s #:PE大小,默认为4MB

        

        ,vgmove,vgextend,vgreduce,vgs,vgdisplay,vgscan

    lv:

        lvcreat -n LV_NAME -L #G VG_NAME 

        lvremove:移除逻辑卷组

        lvextend:

        -L [+]# /PATH/TO/LV :扩展逻辑分区

        lvreduce,lvs,lvdisplay

        resize2fs -p /PATH/TO/LV:扩展逻辑分区

扩展逻辑卷:

缩减逻辑卷:

    注意:1、不能在线缩减,得先卸载

        2、确保缩减后的空间大小依然能够存储原有的所有数据

        3、在缩减之前应该先强行检查文件,以确保文件系统处于一致状态

        df -lh

        umount /PATH/TO/DEVICE

        e2fsck -f 

网络配置:

    IP:

        DHCP:动态主机配置协议

        static :手动指定地址

    NETMASK

    GATEWAY

    HOSTNAME

    DNS1

    DNS2

    ifconfig:

        -a:显示所有接口的配置信息

        ifconfig eth0 ip/mask:临时配置主机ip地址

        ifconfig eth0 up/down:启用或者禁用eth0网卡,并且立即生效

    route:

        route add -net|-host DEST/NETMASK gw NEXTDEST#添加路由信息

        route add default gw NEXTDEST#添加默认路由信息

        route del default gw NEXTDEST#删除默认路由信息

        route del -net|-host DEST/NETMASK#删除路由信息

        -n:以数字显示主机各端口信息

        add:添加

            -host:主机路由

            -net:网络路由

            -net 0.0.0.0

        del:删除 route del -net DEST

            -host:

            -net:

    网络接口配置文件:/etc/sysconfig/ifcfg-ethX

         1DEVICE=eth0#关联的设备名称

         2 HWADDR=00:E0:4C:13:71:CF#MAC地址

         3 TYPE=Ethernet

         4 UUID=d714b59a-4923-492f-b079-87b4b8f96d3b

         5 ONBOOT=yes#开机时是否自动激活此网络接口

         6 NM_CONTROLLED=yes

         7 BOOTPROTO=static#应道协议

         8 IPADDR=10.10.174.150#IP地址

         9 NETMASK=255.255.254.0#子网掩码

        10 GATEWAY=10.10.175.254#网管

        11 DNS1=202.99.96.68#DNS地址

        12  PEERDNS:{yes|no}#是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的dns指定的地址

        13  USERCTL:{yes|no}#是否允许普通用户控制此接口 

        以上配置不会立即生效,但是重启主机或是重启网络服务后会永久生效

DNS:域名解析配置方法

    /etc/resolv.conf:DNS配置文件

    指定本地解析:

        /etc/hosts:本地解析配置文件

        DNS-->/etc/hosts-->DNS缓存

被指主机名:hostname NAME

    /etc/sysconfig/metwork:主机名配置文件

进程:ps

    -a:显示所有和终端有关的进程

    -x:显示所有和终端无关的进程

    -u:显示用户信息

进程状态;

    D:不可中断的睡眠;

    R:运行或就绪

    s:可中断的睡眠

    T:停止

    Z:僵死

    <:高优先级进程 

    N:低优先级进程

    +:前台进程组中的进程

pstree:进程树




查看运行级别:

    runlevel;

    who -r;

查看内核release号:

    uname -r;

安装grub stage1:

    #grubs

    grub>root (hd0,0)  #指定安装位置

    grub>setup (hd0)  #安装

    grub>quit  #退出

    安装grub第二种方式:

    #grub-install --root-directory=/

    grub>find

    grub>root (hd#,N)

    grub>kernel /PATH/KERNEL_FILE

    grub>initrdn/PATH/INITRD_FILE

    grub>boot


kernel初始化过程:

    1、设备探测

    2、驱动初始化(可能从initrd(initramfs红帽6)文件中装载驱动模块)

    3、以只读挂载根文件系统

    4、装载第一个进程init(PID:1)


/sbin/init:(/etc/inittab)

    upstart:Ubuntu,d-bus,event-drive

    systemd:

id:runlevels:action:process

    id:标识符

    runlevels:在那个级别下运行此行

    action:在什么情况下执行此行

    process:要运行程序

id:5:initdefault:(/etc/inittab)

ACTION:

    initdefault;设定默认运行级别

    sysinit:系统初始化

    wait:等待级别切换至此级别时执行

/etc/rc.d/rc.sysinit完成的任务:

    1、激活udev和selinux

    2、根据/etc/sysctl.conf文件,来设定内核参数

    3、设定时钟

    4、装载键盘映射

    5、启用交换分区

    6、设置主机名

    7、根文件系统检测,并以读写方式重新挂载

    8、激活raid和lvm设备

    9、启用磁盘配额

    10、根据/etc/fstab;检查并挂载其他文件系统

    11、清理过期的锁和pid文件


for i in /etc/rc3.d/k*

do

        $i stop

done

for i in /etc/rc3.d/s*

do

        $i start

done

先关闭以k开头的服务,后启动以s开头的;

/etc/rc.d/init.d

服务类脚本:

    start

    SysV:/etc/rc.d/init.d

    start|stop|restart|status

    reload|configtest

chkconfig:runlevels SS KK

        当chkconfig命令来为此脚本在rcc#.d目录创建链接时,runlevels表示默认创建为S*开头的链接,除此之外的级别默认创建为K*开头的链接;

        S后面的启动优先级为ss所表示的数字;K后面关闭优先次序为kk所表示的数字;

    description:用于说明此脚本的简单功能;\ 续行

    chkconfig --list:查看所有独立守护服务的启动设定;独立守护进程

        chkconfig --list service_name

    chkconfig --add service_name:添加服务链接

    chkconfig --del service_name:删除服务链接

    chkconfig --level runlevels service_name(on|off)

/etc/inittab的任务:

    1、设定默认运行级别

    2、运行系统初始化脚本

    3、指定运行级别对应的目录下的脚本

    4、设定ctrl+alt+del组合键的操作

    5、定义ups电源在电源故障/恢复时执行的操作

    6、启动虚拟终端(2345级别)

    7、启动图形终端(5级别)

守护进程的类型:

    独立守护进程

    xinitd:超级守护进程

    瞬时守护进程,不需要关联至运行级别

核心:/boot/vmlinuz-version

    内核模块(ko):/lib/modules/version

    内核设计:

    单内核

        模块化设计

    微内核

装载模块:

    insmod:

    modprobe:

www.kernel.org

用户空间访问、监控内核方式:

    /proc、/sys

    伪文件系统:/proc/sys:此目录中的文件是可读写的

    /sys:某些文件可写

    

设定内核参数值的方法:

echocalue > /proc/sys/to/somefile

sysctl -w kernel.hostname='commander':修改主机名,重启后失效,可以立即生效

永久生效,但不能立即生效:/etc/sysctl.conf

修改完配置文件后,执行如下命令:

sysctl -p

sysctl -a:显示所有内核参数及其值


内核模块管理:

lsmod:查看

modporbe mod_name:装载某模块

modprobe -r mod_name:卸载某模块

modinfo mod_name:查看模块的具体信息


insmod /PATH/TO/MODULE_NAME:装载模块

rmmod mod_name:移除模块

depmod /PATH/TO/MODILES_DIR

内核中的功能除了核心功能之外,在编译时。大多功能都有三种选择:

    1、不使用此功能;

    2、编译成内核模块;

    3、编译进内核;

如何手动编译内核:

    make gconfig:Gnome桌面使用环境,

    make kconfig:KDE桌面使用环境

grub-->kernel-->initrd-->rootfs(/sbin/init,/bin/bash)


/etc/inittab:

    设定默认运行级别

    系统初始化(/etc/rc.d/rc.sysinit)

    运行指定级别的服务脚本

        /etc/rc.d/init.d

            /etc/rc.d/rc#.d

                rc0.d--rc6.d

                    K*

                        S*

                            00-99:运行次序

    启动虚拟终端

    启动图形终端

/etc/rc.d/rc.sysinit:

    检测并以只读方式重新挂载根文件系统;

    设定主机名;

    检测并挂载/etc/fstab中的其他文件系统;

    启动swap分区;

    初始化外围硬件设备驱动;

    根据/etc/sysctl.conf设定内核参数;

    激活udev和selinux;

    激活LVM和RAID设备;

    清理过期锁和PID文件;

    装载键映射;

关机和重启:


mount -n :挂载时不更新/etc/mtab文件;


设定内核参数:

    /etc/sysctl.conf

    sysctl -p

用户:

    PAM:

    /etc/pam.d

绕过PAM:

    /bin/login:

用户:uid /etc/passwd

组:gid /etc/group

login:验证

nsswitch:network service switch

框架:/etc/passwd, /etc/group, /etc/shadow

    配置文件:/etc/nsswitch.conf

/etc/rc.d/init.d/服务脚本

服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件

mktemp:用于创建临时文件或目录;

    mktemp /tmp/file.XXXX

        -d:创建为目录;

任务计划:

    1、在未来的某个时间点执行一次;

        at now+times(minutes...)

        at>command

        at>ctrl+d:保存退出

        指定时间:

            绝对时间:HH:MM,DD:MM:YY,MM/DD/YY

            相对时间:now+*

                单位:mintues,hours,days,weeks

            模糊时间:noon,midnight,teatime

        命令执行结果,将以邮件方式

        at -l:显示队列

        at -d:删除队列

        batch

    2、周期性的执行;

    cron:自身是一个不间断运行的服务;

        anacron:cron的补充,能够实现让Cron因为各种原因在过去的时间该执行而未执行的任务恢复正常执行一次;

    cron:

        系统cron任务:/etc/crontab

            分钟 小时 天 月 周 用户 任务

        用户cron任务:/var/spool/cron/USERNAME

            分钟 小时 天 月 周 任务

            # For details see man 4 crontabs

                Example of job definition:

                .---------------- minute (0 - 59)

                    |  .------------- hour (0 - 23)

                        |  |  .---------- day of month (1 - 31)

                            |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

                                |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

                                    |  |  |  |  |

                                        *  *  *  *  * user-name command to be executed

                                            5  *  *  *  * /home/major/shell_编程/1.sh

         时间有效取值:

            分钟:0-59

            小时:0-23

            天:1-31

            月:1-12

            周:0-7,0和7都表示周日

        时间统配表示:

            *:对应的所有有效值

            3 * * * 7 :每个礼拜天的每个小时的第三分钟

        每两个小时执行一次:08 */2 * * *

        每两天执行一次:10 04 */2 * *

    执行结果将以邮件形式发送给管理员:*/3 * * * * cat /etc/fatab &> /dev/null

    cron的环境变量:cron执行的所有命令都去PATH环境变量指定的路径下去找

    PATH /bin:/sbin:/usr/bin:/usr/sbin

    用户任务的管理:

    crontab:

    -l:列出当前用户的所有Cron任务;

    -e:编辑;

    -r:移除所有任务;

    -u USERNAME:管理其他用户的cron任务;

日志系统:syslog、syslog-ng(开源)

信息详细程序:日志级别

子系统:facility,设施

syslog服务:

syslogd:系统,非内核产生的信息

klogd:内核,专门负责记录内核产生的日志

信息详细程序:

子系统:facility 设施

动作:

日志需要滚动(日志切割):

message1 message2 message3

/sbin/init:

/var/log/message:系统标准错误日志信息;非内核产生引导信息,各子系统产生的信息;

/var/log/maillog:邮件系统产生的日志信息;

/var/log/secure:和安全相关的日志记录,并且会记录ssh登陆的详细信息

telnet:远程登陆协议,tcp

C/S:架构

S:telnet远程服务器

C:telnet客户端

ssh:secure shell,协议 22/tcp

通信和认证过程都是加密的,主机认证;

用户认证过程加密

sshv1:已经被破解,容易被中间人***;

sshv2:建议使用;

认证过程:

基于口令认证;

基于密钥认证;

协议即规范;

实现:服务端、客户端;

Linux:openSSH

C/S:

服务器端:sshd、配置文件/etc/ssh/sshd_config

客户端:ssh、配置文件/etc/ssh/ssh_config

ssh-keygen:密钥生成器;

ssh-copy-id:将公钥传输至远程服务器

scp:跨主机安全复制工具

ssh:

ssh USERNAME@HOST

ssh -l USERNAME HOST

ssh USERNAME@HOST ‘command’

scp:

scp SRC DEST

-r:

-a:

scp USERNAME@HOST:PATH/to/somefile  /path/to/local

ssh-keygen:

-t rsa

~/.ssh/id_rsa

~/.ssh/id_rsa.pub

公钥保存到远程主机某用户的家目录下的.ssh/aut

如何将远程服务器的目录,拷贝到本地:

scp -r [email protected]:/root/rules /opt:意思为将远程服务器上/root/rules目录内的内容拷贝到本地的opt目录下

将本地的文件上传到远程服务器上:

scp /root/node-v4.2.1-linux-x64.tar.gz [email protected]:/opt/test:将本地文件node-v4.2.1-linux-x64.tar.gz上传到服务器/opt/test目录下

dropbear:嵌入式系统是专用的ssh服务器端和客户端工具;

服务器端:dropbear

dropbearkey

客户端:dbclient

dropbear默认使用nsswitsch实现名称解析

/etc/nsswitch.conf

/usr/libnss_files*

/usr/lib/libnss.so

/usr/lib/libnss_files*

dropbear会在用户登录检查其默认shell是否当前系统的安全shell

/etc/shells

linux常见的系统故障排除:

1、确定问题的故障特征;

2、重现故障;

3、使用工具收集进一步信息;

4、排除不可能的原因;

5、定位故障:

从简单的问题入手;

一次尝试一种方式;

6、备份原文件;

7、尽可能借助工具;

可能会出现的故障:

1、管理员密码忘记;

2、系统无法正常启动;

a、grub损坏(mbr损坏、grub配置文件丢失)

b、系统初始化故障(某文件系统无法正常挂载、驱动不兼容)

c、服务故障;

d、用户无法登陆系统(bash程序故障)

3、命令无法运行

4、编译过程无法继续(开发环境缺少基本组件)

sudo的配置文件 /etc/sudoers

-l:列出当前用户可以使用的所有sudo的命令;

-k:让认证信息失效;

修改网卡的网络属性

TCP/IP安全:

机密性:明文传输(ftp、http、smtp、telnet)

plaintext(明文)-->转换规则-->ciphertext(密文)

ciphertext(密文)-->转换规则-->plaintext(明文)

openssl实现私有CA;

1、先生成一对密钥

2、生成自签署证书


DNS(Domain Name Service):域名解析

TLD:

组织域:.com,.org,.net,.cc

国家域:.cn,.jp

DNS:分布式数据库

上级仅知道其直接下级

下级只知道根的位置

DNS服务器:

接受本地客户查询请求(递归)

外部客户端请求:请求权威答案

肯定答案:TTL

否定答案:TTL

外部客户端请求:非权威答案

数据库中的每一个条目称作一个资源记录

资源记录格式如下:

NAME TTL IN RRT VALUE

PHP:超文本预处理器


数据的组织结构:

1、层次结构

2、网状型

3、关系型

RDBMS:

1、数据库的创建、删除

2、创建表、删除表、修改表

3、索引的创建、删除

4、用户和权限

5、数据的增、删、改

6、查询

DML:数据操作语言 insert、update、delete、

DDL:数据定义语言 create、alter、drop

DCL:数据控制语言 grant、revoke


RDBMS:

oracle、Sybase、infomix、SQL server;

mysql、postgresql

MySQL:

软件包格式:

软件包管理器特有的格式

rpm包,.exe格式

通用二进制格式

源程序

交互模式中的命令类别:

客户端模式

服务器端命令

都必须使用语句结束符,默认为分号;

SQL接口:

Oracle,PL/SQL

SQL server,T-SQL

关系数据库对象:

索引

视图

约束

存储过程

存储函数

触发器

游标

用户

权限

事务

库本身

表:

行和列的组合;

表:实体集

行:row

列:field也叫column(字段)

字段名称,数据类型,类型修饰(限制)

字符:

char(n)

varchar(n)

binary(n)

varcharbinary(n)

text(n)

blob(n)

数值:

精确数值型

整型

十进制

近似数值

float

double

日期时间:

date

time

datetime

stamp

日期

布尔

内置

DDL:

create

alter

drop

DML:

insert

update

delete

DCL:

grant

revoke

创建数据库

CREATE DATABASE testda;

删除数据库

DROP DATABASE db_name;

创建表

CREATE TABLE ;

查看表 

SHOW TABLES;

查看库中的表

SHOW TABLE FROM DB_NAME;

查看表结构

DESC STUDENTS;

删除表

DROP TABLE DB_NAME;

修改表

ALTER TABLE DB_NAME;

MODIFY

CHANGE

ADD

DROP

DML:

INSERT INTO TB_NAME ;

REPLACE 

DCL:

创建用户:

CREATE USER 'USENAME'@'HOST' IDENTIFIED BY 'PASSWD';

删除用户:

DROP USER 'USERNAME'@'HOST';

HOST:

IP;

HOSTNAME;

NETWORK;

通配符:

_:匹配任意单个字符,192.168.1._

%:匹配任意字符;

GRANT PRIL1,PRIL2...ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWD'];给用户授予权限

REVOKE PRIL1,PRIL2...ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';删除用户权限

SHOW GRANTS FOR 'USERNAME'@'HOST'; 查看用户的权限


为用户设定密码:

1、SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('PASSWORD');

修改用户密码:

UPDATE USER SET PASSEORD=PASSWORD('PASSWORD') WHERE USER='root';

图形化客户端:

1、phpmyadmin

2、workbench

3、MySQL front

4、navicat for MySQL

单层结构

二层结构

三层结构

PHP:脚本编程语言,php解释器

webapp:面向对象的特性

zend:

第一阶段:词法分析,语法分析,编译为opcode;

第二阶段:执行opcode;

PHP缓存器:

APC

eaccelerator

cache

PHP解释器-->MySQL,如何交互:

bash:a.sh

php-mysql

mysql:配置文件格式,集中式配置文件,可以为多个程序提供配置

MySQL服务器维护了两类变量:

服务器变量:

定义MySQL服务器运行特性

SHOW GLOBAL VARIABLES [LIKE 'STRING'];

状态变量:

保存了MySQL服务器运行统计数据

SHOW GLOBAL STATUS [LIKE 'STRING']; 

压力测试工具

ab

http_load

webbench

siege

mail server:

SMTP:简单邮件协议(tcp25号端口)

ESMTP:简单扩展邮件协议

pop3:邮局协议

IMAP4:

uucp:Unix to Unix copyd

Unix主机复制文件的协议

MTA:邮件传输代理,SMTP服务器

sendmail,uucp

qmail

postfix:模块化设计,安全,跟sendmail兼容,效率高

exchange:(Windows,异步消息协作平台)

MDA:邮件投递代理

procmail

maildrop

MRA:邮件检索代理

pop3:邮局协议

imap4

Cyrus-imap

dovecot

thunderbird

evolution

mutt(文本界面)

webmail:

openwebmail

squirrelmail

extmail(extman)

EMOS,centos

SASL:v2

cyrus-sasl

courier-authlib

postfix+SASL+(courier-authlib)+mysql 

dovect+mysql 

extmail+extman+httpd


postfix:rpm 


MUA:mutt


都是以明文方式工作

pop3:tcp/110

imap4:tcp/143

dove支持四种协议:pop3,imap4,pops,imaps

配置文件:/etc/dovecot.conf

有ssl认证能力

邮箱格式:

mbox:一个文件存储所有邮件

maildir:一个文件存储一封邮件,所有邮件存储在一个目录中


FTP:文件传输协议

端口:21/tcp

文件共享服务:应用层服务

NFS:network file sysytem(RPC:remote procedure call:远程过程调用)

smba:CIFS/SMB;

ftp:基于tcp协议,有两个连接

命令连接,也叫控制连接,一直存在:tcp/21

数据连接,按需打开,按需关闭:

主动模式:20/tcp

被动模式:

数据传输模式:

文本:

二进制:

服务器端程序:

wuftpd:华盛顿大学服务器程序

vsftpd:very secure ftp doemon

proftpd:

pureftpd:

serv-u:windows

filezilla:既有Linux又有Windows

客户端程序:

CLI;

ftp:

lftp:

GUI:

gftpd

flashfxp

cuteftp

filezilla

vsftpd:

/etc/vsftpd:配置文件目录

/etc/init.d/vsftpd:服务脚本

基于PAM实现用户认证:

/etc/pam.d/*

/lib/security/*

/lib64/security/*

支持虚拟用户

文件服务权限

守护进程:

独立守护进程

瞬时守护进程

由xinetd代为管理

vsftpd:

max_clients=#最大客户端连接数

max_per_ip=#每个用户最多能发起几次请求

ftp:用户

用户

匿名用户——》系统用户:anonmous

系统用户

虚拟用户———》系统用户

文件服务权限:文件系统权限*文件共享权限

ftp软件:flashfxp

NFS:network file system

RPC:remote procedure call(远程过程调用)

linux :提供RPC服务的程序:portmap:111/tcp,111/udp

RPC:编程技术,也是一种协议,简化分布式应用程序的开发,c-rpc c--》rpc s 

RPC:二进制格式,文本格式(xmlrpc)-->SOPA(轻量级的RPC)

服务器端:nfsutils

nfs:nfsd(nfs服务进程)mountd(挂载),quotad(配额)

nfsd:2049/tcp,2049/udp

quotad:

安全通信方式:

ftps:ftp+ssl

Linux:网络防火墙

netfilter:frame

IP tables:数据报文过滤,NAT、mangle等规则生成的工具;

网络:IP报文首部,tcp报文首部

防火墙:硬件,软件:规则(匹配标准,处理办法)

framework:

默认规则:

开放:堵

关闭:通

规则:匹配标准

IP:源ip,目标ip

TCP:源端口,目标端口

UDP:源端口,目标端口

ICMP:icmp-type

hook function:钩子函数

prerouting

input

output

forward

postrouting

规则链:

prerouting

input

output

forward

postroutin

filter(过滤):

input

output

forward

nat(地址转换):

prerouting

postroutin

mangle(拆开、修改、封装):表

prerouting

input

output

forward

postroutin

raw():

prerouting

output

iptables:

能否使用自定义链?

可以使用自定义链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制:

用户可以删除自定义的空链

默认链无法删除

每个规则都有两个内置的计数器:

被匹配的报文个数

被匹配的报文大小之和

规则:匹配标准,处理动作

iptables [-t TABLE] COMMAND CHAIN [num] 标准匹配 -j 处理办法 

匹配标准:

通用匹配

-s,--src:指定源地址

-d,--dst:指定目标地址

-p,{tcp|udp|icmp}

-i interface :指定数据报文流入的接口

可用于定义标准的链:prerouting,input,forward

-o interface:指定数据报文流出的接口

可用于标准定义的链:output,postrouting,forward

扩展匹配

隐含扩展:不用特别指明由那个模块进行的扩展,因此使用-p{tcp|udp|icmp}

显式扩展:必须指明由那个模块进行的扩展,在iptables中使用-m选项可完成此功能

命令:

管理规则

-A:附加一条规则,添加在链的尾部

-I:chain[num]:插入一条规则,插入为对应chain的第num条

-D:chain[num]:删除链中的第num条规则

-R:chain[num]:替换指定的规则

管理链:

-F:[chain] flush,清空指定的规则链,如果省略chain,则可以删除对应表中的所有链

-P:chain:设定指定链的默认策略;

-N:自定义一个新的空链

-X:删除一个自定义的空链

-Z:置零指定链中的所有规则的计数器

-E:重命名自定义的链

查看类:

-L:显示指定表中的规则

-n:以数字格式显示主机地址和端口

-v:显示链及规则的详细信息

-x:显示计数器的精确值

--line-numbers:显示规则号码

动作(target):

ACCEPT:放行

REJECT:丢弃

DNAT:目标地址转换 

SNAT:源地址转换

REDIRECT:端口重定向

MASQUERADE:地址伪装

LOG:日志 

MARK:打标机

iptables不是服务,但有服务脚本;服务脚本的主要作用在于管理保存的作用

NAT:network address translation

DNAT:目标地址转换

SNAT:源地址转换

samba:

web:

httpd:

1、事先创建进程;

2、按需维持适当的进程;

3、模块化设计,核心比较小,各种功能都能模块添加,支持运行时配置,支持单独模块编译;

4、

Tomcat

Hadoop

MPM:Multi Path Modules(/etc/sysconfig/httpd,apache的三种工作模式,默认是prefork)

mpm_winnt

prefork:一个请求用一个进程响应

worker:一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)

event:一个进程处理多个请求

URL路径跟本地文件系统路径不是一回事儿,URL是相对于DocumentRoot的路径而言的

Options:

Indexs:允许索引目录

FollowSynLinks:允许访问符号链接指向源文件

Includes:允许执行服务器端包含(SSI)

ExecCGI:允许运行CGI脚本

ALL:启用所有选项

Order:用于定义基于主机的访问控制功能的,IP,网络地址或主机定义访问控制机制

Order allow,deny

    allow from 192.168.0.0/24#只允许此网络访问

deny from

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章