zoukankan      html  css  js  c++  java
  • linux知识

    ///./linux基本的命令
    ====================
    查看防火墙是否开启

    service iptables status

    查看ssh状态
    service sshd status

    开启SSH服务
    service sshd start

    停止SSH服务/
    service sshd stop

    检测开启ssh
    chkconfig sshd on

    启用网卡
    ifconfig eth0 up

    目录切换:
    cd change directory

    ls:命令用法
    0、ls -h(人性化的设置) -l(全部的名称) -a(所有的内容) -i(身份号)

    创建目录:
    1、mkdir -p 这个选项呢 能在一个不存在的目录下面 创建一个目录

    h删除空目录:
    rmdir 例:rmdir /tmp/one

    复制的命令:
    1、cp (copy)
    a、复制文件(如果复制文件不要加选项) cp /tmp/one.txt /root
    b、如果复制目录则要加选项 -r cp -r /tmp/test /root

    2、copy -p (primary) 表示保持原来的属性。如创建的时间 ,更改的时间

    3、复制的时候也能对于这个文件进行重命名:如 cp -r /tmp/name /root/a

    剪切,改命
    mv(move) 说明:对于目录与文件都可以执行

    对于文件进行更名也是用这个命令
    例:mv /tmp/one /root/two 这个意思是将one剪切到root下面且名称改为two

    删除:rm
    删除文件:rm /tmp/one
    删除目录:rm -r /tmp/two 表示删除一个目录 但是这个删除会有确认的操作
    强制删除: rm -rf /tmp/one
    文件处理
    cat 打开一个文件 (如果内容过多的话则不能全部的预览 这个是打开文件用的并不能打开目录)
    cat -n /tmp/one.list(这个表示查看一个文件 且这个文件有行号)
    more 打开多个内容 (空格表示下一页 回车表示下一行 ,但是不能向上预览)
    less 打开多行的内容 (pgup gpdn能够上下翻页 能够搜索 直接加“/” 为搜索的内空, 按“n” 键为寻打下一个)
    head 查看一个内容的前几行 head -n(number) 7 /ect/sysconfig 如果不加选项的话 则默认的是看头10行
    tail 查看一个文件的后几行 -n 选定行数
    -f 动态的显示页面的内容

    链接学习

    ln
    查看文件的内容
    - 表示的是一个文件 (二进制的包)
    d 表示是一个目录
    l 表示的是一个链接

    有两种的链接:
    软链接
    ln -s /
    权限都是Rwx (但是这个权限不是这个文件真正的运行的权限,由原来的文件进行判断)
    所占空间很少 都是几个字节

    硬链接
    特点:
    1、能实时的更新数据
    2、对于原来的文件进行备份
    3、不能跨分区
    4、不能对于目录进行创建硬链接

    在linux系统中对于一个文件进行操作其实就对找到这个I节点号进行操作
    如果节点号是一样的话 则必然会产生同步的效果

    一个文件一定有一个I节点号
    但是一个I节点号不一定对应一个文件 (硬链接就是这样的一个特点)

    权限管理命令:
    1、哪些的人能更改权限呢 a、root b、这个文件的所有者
    2、权限的更改 chmod
    3、chmod -R 表示对于这个目录以及这个目录下面的 所有的文件或者是目录都是一样的权限
    u g o (+-=)
    如果同时给多个更改的话 则要用“,” 来更改
    例: chmod g+w name 这个表示是所属的组
    rwx(读 写 执行)
    421
    750
    rwxr-x---
    632

    目录:
    r:ls
    w:mkdir touch rmdir rm cp mv vim
    x:cd
    文件:
    r:cat more less head tail
    W:vim
    x:scirpt command

    更改一个文件所有者
    重点:如果一个普通的用户登录到系统 ,默认的目录就是其家目录/home/wangzhilei
    用户的切换与用户的重新的登录,则其实默认登录的目录是不同的

    chown
    1、在linux中只有root用户能改变这个文件或者是目录的所有者
    chgrp
    1、目录缺省的权限 -rwxr-xr-x 755 目录的话在新建的时候 只有创建者有写的权限
    2、文件缺省的权限 -rw-r----- 644 而一个文件在创建的时候 ,任何的用户或者是组都没有执行的权限

    1、默认的目录是没有写的权限(除了所有者)

    2、默认的文件是都没有执行的权限(所有者有写的权限)

    umask:(权限的掩码)
    代表目录入文件缺省的权限的值。默认是022,而这个真实的权限的值为755
    我们能通过 -S(大S) 来查看
    3、改变缺省的权限的值是 umask 033 则这个说明目录及文件的缺省的权限的值为744及drwxr--r--


    linux搜索命令:

    按名称来查找

    1.find 目录 条件 查找的内容 如:find /ect -name init (这个是精确的查找)
    2.find /ect -name *init* 实/现模糊查询 在php中用的是%%
    3.find /etc -name init* 表示以init开头的文件
    4.find /etc -name init??? 表示查找一个文件以init开头 后面是三个字母结尾
    5.?通配的是一个字符
    6. -iname 不区分大小写
    数据块: 在linux系统中最小的单位是数据块就是512bit 0.5K
    100m
    102400
    201800
    按容量来查找
    find / -size +(大于) -(小于) =(等于,很少用) 204800/2/1024
    按所有者来查找
    find /home -user wangzhilei
    按所有组来查找
    find /home -group wangzhilei
    按时间属性来查找
    find /ect -amin -5(这个表示5分钟内被访问的文件)
    -amin (access) 被查看的时间
    -cmin(change) 属性被修改的时间
    -mmin(modify) 内容被修改的时间

    -type 类型 f:文件 d:目录 l:软链接

    连接符:-a(and) -o (or) -inum (根据I节点来查找)
    如果想对查找到的内容进行操作的话 可以加一个固定的格式
    例:find /tmp -type d -exec/ok rm -r {} ;

    exec 直接执行后面的操作的命令
    ok 这个有确认的操作

    也可以用which来查找(这个主要来搜索命令)

    whereis 也是搜索命令

    grep:这个是对于文件中的内容进行查找

    grep -v ^# (reverse) ^表示以什么开头 $表示以什么结尾

    grep -i multiuser /ect/inittab

    更加快速的搜索命令:

    locate -i (这样就能不区分大小写)

    注意:
    1、所有的的创建的目录和文件都会放在/var/lib/mlocate/mlocate.db
    2、如果新添加一文件或者是目录的话 则要用 updatedb 来更新下这个数据库
    3、在/tmp下面的临时的目录中的目录和文件不会放在/var/lib/mlocate/mlocate.db

    i(insensitive) 迟钝的

    帮助命令:

    man (manual)手工

    man 命令
    man 配置文件(不需要加绝对的路径)

    .5.gz (man5) 一般是配置文件的帮助
    .1.gz (man1) 一般是命令的帮助

    如果一个单词对应两个文件一个是配置的文件 一个是命令的文件 则优先选择的是命令,如果想选择配置文件的话 则要加5
    例: man 5 passwd (这个是说查看passwd的配置的文件)

    一个单词,如果你发现它即是命令 也是配置文件话话 则在用(man) 查看的时候 则要说明想要助的内容,加5

    方便查看命令帮助

    whatis +命令

    文件查看配置文件帮助

    apropos + 配置文件

    命令 --help 这个功能与man 差不多,只不过显示的信息比man 少点 都是显示常用的内容
    help cd/umask 这样的shell脚本内置的命令。

    shell 命令的解释器


    端口:
    ftp:20
    telnet 23
    mysql 3306
    http 80
    ssh 22
    smtp:25
    pop3:110
    ntp :123
    传输协议:
    ftp
    ssl
    tcp
    UDP

    用户管理的命令:

    1、创建用户: useradd
    2、创建用户的密码: passwd 注意:root用户能将所有的用户重置密码,普通的用户只能给自己改变密码
    3、查看当前的用户的情况who
    两种的情况:
    tty 表示本地登录
    pts 表示终端登录 (也就是远程登录)
    4、w
    a、时间指的是当前的时间
    b、时间后面的值 表示已经运行这个系统多长的时间
    c、4users表示当前有几个用户在登录
    d、load average 表示平均负载
    e、login@ 表示 登录的时间
    f、IDLE 表示空闲的时间 idle(空闲的意思)
    g、JCPU 表示总占用的CPU的值
    h、PCPU 表示当前的操作占用的cpu的值
    i、后面的命令表示当前的用户在执行的命令


    gz
    压缩gzip
    解压缩gunzip

    常用的英文:compress(压缩) expand(扩涨) ignored (忽略)
    1、.gz .zip是linux中 常见的压缩的格式
    2、gzip (grow)
    3、gunzip 表示解压缩
    两个特点:
    1、只能压缩文件 并不能压缩目录(也就是文件夹)
    2、如果压缩一个文件的话 则原文件则不存在

    tar f 这个参数必须是在最后面
    tar -cvf c(create) v(verbose) 冗长的 表示信息多的意思 f(file) z这个表示在打包的同时也执行压缩的操作
    tar -cf 生成后名称 + 要打包的文件名 (这个可以目录)
    tar -zcf (打包的同时也压缩后缀名为.tar.gz) -zxf tar -xzf one.tar.gz
    tar -zxf x表示解压
    zip

    zip -r 目录的名称
    unzip 表示解压缩

    bz2
    gzip
    bzip2 要执行压缩的文件

    两者都不能对于目录进行压缩,只能对于文件进行压缩 ,但是bz2格式的压缩的效果会更好
    -k是 bzip2与bunzip2中保留原来的文件与压缩包的一个选项
    如果想保留原来的文件的话 则要加一个选项 -k (keep 保留的意思)
    bunzip2 one.bz2


    tar中
    tar -jcf one.tar.bz2
    tar -jxf one.tar.bz2

    ===============================

    “|” 管道符:
    功能:
    1.左面的输出作为右面的输入或者是它的操作的对象
    cat /etc/passwd | grep /bin/bash |wc -l

    ===========================

    网络命令:注:这些的命令所有的用户都能执行 /bin 并不在 /sbin

    write (ctrl+D) write + 用户名 (这个用户必须在线才行)
    wall 发送给所有的用户 直接加要信息的内容
    mail (接收邮件) ctrl+d键来保存发送
    last 查看所有用登录过的用户和重户的信息
    lastlog 查看用户最后一次登录的时间 等信息 能查到所有的用户的登录情况
    lastlog -u wangzhilei 查找wangzhiei用户最后一次的登录的情况(登录的信息)
    ping ICMP是(Internet Control Message Protocol)Internet控制报文协议
    ping -c 代表要ping的次数
    ifconfig
    traceroute
    netstat 查询网络的状态
    -tlun 对于当前的端口进行监听
    -an (all number ) 不仅能查到网络的动态 所有的成员
    -rn route number 查看路由节点
    -t TCP tcp
    -u UDP udp
    -l 监听 listen
    -r 路由 route
    -n 显示IP地址和端口号 number
    -p 进程号 progress

    mount挂载 sr0默认的是光驱
    第一步:在mnt的目录下面创建一个目录如cdrom
    mkdir /mnt/cdrom
    第二步:执行挂载的命令
    mount /dev/sr0 /mnt/cdrom
    卸载:
    umount /dev/sr0

    /dev/sr0

    /dev/cdrom 这两个是一样的 ,因为cdrom 是sr0的软链接

    对于U盘的挂载
    1.fdisk -l 查看这个U盘的设备的名称
    2.mkdir /mnt/usb
    3.mount -t vfat(32位) /dev/sab1 /mnt/usr


    关机命令:
    shutdonw -h now
    shutdown -r now
    shutdonw -c (cancel)

    系统的运行的级别

    0 关机
    1 单用户 类似于window系统中安全模式
    2 不完全多用户 不包含NFS
    3 完全多用户 (直接的命令行)
    4 未分配
    5 图形界面
    6 重启

    查看运行的级别 runlevel
    vim操作(这个已经学会)

    rpm的安装:
    1、在安装的时候 要全名,且要注意路径
    2、已经安装好的话 ,搜索的时候 /var/lib/rpm

    rpm -ivh
    -i install 安装
    -v verbose 显示详细的信息
    -h hash 显示进度
    --nodeps 不检测依赖

    升级
    rpm -Uvh (upgrade)
    卸载
    rpm -e (earse)
    查询
    rpm
    查询已经装过的rpm包
    rpm -q httpd
    查看所有的安装过的rpm包
    rpm -qa query all
    查看安装的列表和应该安装的列表(未安装的)
    rpm -ql(p) query list
    查询一个安装过的rpm包详细信息
    rpm -qi(p) query information
    查询一个文件在哪个rpm中
    rpm -qf query file
    用grep查询所有安装过的rpm中所有的包含httpd的文件包
    rpm -qa | grep httpd
    查询一个包的依赖文件
    rpm -qR (p)
    rpm包校验
    rpm -V httpd (verify)
    文件的提取与覆盖
    rpm2cpio /mnt/cdrom/Packages/ | cpio -idv ./bin/ls (目前这个问题还没有彻底解决)


    查询RPM库
    www.rpmfind.net
    yum
    安装
    yum -y install httpd -y(yes) 过程就不要确认的操作
    更新
    ymp -y update httpd
    删除
    yum -y remove httpd
    查看列表所有的可用的包列表
    yum list
    查看组列表
    yum search
    安装组
    查看服务器上所有的和关键字相关的包
    yum groupinstall test(test为组别)
    删除组
    yum groupremove test
    命令补全的方法
    yum -y install coreutils
    配置DNS
    vi /etc/resovl.conf
    接下来研究的问题
    1.ping www.baidu.com 不通 (这个已经解决)
    2.yum包的安装
    ymp在线安装 (这个是默认的安装) /etc/yum.repos.d 镜像地址
    mirrorlist
    url
    容器名称
    name[base]
    开启在线的安装的方式
    enable=1 ;
    校验内容
    gpgchechk=1
    注意:安装的文件都是以repo的名称结尾的 yum光盘安装

    1.挂载光盘
    mount /dev/cdrom /mnt/cdrom

    2.将不用的安装文件更改名称

    mv CentOS-

    3.配置 CentOS-Media.repo

    a.baseurl=file:///mnt/cdrom/

    b.注释相关的内容
    #file:///media/cdrom/ #file:///media/cdrecorder/
    4.c.enabled=1 更改成1 则说明yum第一选择光盘镜像来安装

    一、源码包与RPM包的区别

    通过服务来启动

    服务的文件位置

    1./etc/rc.d/init.d/httpd start/stop /restart

    2.service httpd stop /restart /stop

    3.两者是相同的,原因为:service 这个命令会主动的从rpm安装文件中搜索这些服务

    服务启动要点:一定要是用绝对路径来启动

    2.源码包的安装的过程

    1.安装的位置
    /usr/local/软件名称

    2.只能通过绝对路径来启动服务

    RPM包安装的位置
    /etc/ 配置文件安装的目录
    /usr/bin/ 可执行的命令安装的目录
    /usr/lib/ 程序所使用的函数库保存的位置
    /usr/share/doc 基本的软件的说明的文件
    /usr/share/man 帮助文件保存的位置


    源码包的安装
    1、地址http://mirror.bit.edu.cn
    2、上传源码包winscp这个软件
    3、解压
    4、查看这个源码多大
    du -sh

    ./configure --prefix =/usr/local/apache2
    make
    make install
    /usr/local/apache2/bin/apachetul start


    用rpm包与源码包的情况

    rmp => 对内
    源码=> 对外

    宿迁DNS 61.177.7.1 221.228.255.1

    1. 下载相应的源码包
    2. 进行解压缩
    3、运行./configure --prefix=/usr/local/apache2
    如果编译出错的话 也可以清空编译导致的临时的文件 make clean
    4.make
    5.make install

    脚本安装包--主要用于硬件的驱动

    下载地址
    https://sourceforge.net/projects/webadmin/files/webmin/
    安装的步骤:
    1.解压缩
    2.进行这个目录
    3.执行./setup.sh
    4.一路的回车

    1.远程工具
    putty scurecrt

    用户管理

    1./etc/passwd
    root:x:0:0:root:/root:/bin/bash
    组名:密码:UID:GID:说明信息(别名的关系) :家目录 :shell脚本:登录之后的shell

    查看组ID UID
    id wangzhilei
    uid=500(wangzhilei) gid=500(wangzhilei) groups=500(wangzhilei)

    shell:
    linux的命令解释器
    标准shell /bin/bash
    /sbin/nologin

    超级用户:
    UID=0 如果将一普通的用户改成超级的用户就改这个UID 改为0 即可
    伪用户UID=1-499、 系统自带的,不允许登录
    普通的用户UID=500-65535

    1.初始组
    一个用户在创建的时候就有一个组,且这个组的名称和这个用户名一样
    2.附加组
    可以给这个用户加到另外的组中,则这个附加的组就是这个用户的附加的组

    2./etc/shadow
    bin:*:15513:0:99999:7:::

    1、一行一用户
    2、编译后的密码
    只要这个密码前加!或者是*号都是伪用户的密码,换句话说 这个用户是不能登录的
    3、密码的创建的时间
    这个时间是一个时间戳如16666 就是在1970年后的第16666天

    4. 两次密码的修改的间隔如10就要达到10天后才能更改密码
    5、密码的有效期 这个是天数 并不是时间戳
    6、密码的过期提醒的时间 如有效期是90 而该值为7 则说明在第83天的时候 会定时的提醒
    7、更改密码的缓解的时间 如5 则说明 在90天后 你可以延时5天修改
    如果值为0的话 则说明到期就停止用户
    如果是-1或者是其它的负数的话 则说明这个永远不会失效

    8、帐号的失效的时间 ,不管你设置的有效期是多久 到这个时间就一定失效。(这个不能写年月日 要写时间戳)
    9、保留


    也就是说它的创建的时间 和 帐号失效的时间是一样的都是用的是时间戳


    时间换算:
    时间戳:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数
    换算:
    时间戳->日期
    date -d "1970-01-01 16666 days"

    日期->时间戳:

    echo $(($(date --date="2016/04/03" +%s)/86400+1))

    EDT:Eastern Daylight Time 美国东部的夏季的时间
    密码的三个原则
    1、复杂性
    2、易记性
    3、时效性


    伪用户是不允许登录到系统。

    将一个用户改成伪用户的方式

    1./etc/passwd 最后一个内容 shell 改成/sbin/nologin
    2./etc/shadown 在密码的前加上!或者是*号就可以禁止这个用户登录


    用户配置文件
    /etc/passwd
    /etc/shadow
    SHA512散列加密的算法Secure Hash Algorithm(算法)

    /etc/gshadown
    /etc/group

    用户管理相关的文件

    1.家目录
    /root 权限是550
    /home 权限是700

    2.邮箱存储的位置
    /var/spool/mail/

    3.模板文件
    /etc/skel (skel骨架)

    用户的管理的命令
    ===============================
    1.添加用户
    usradd
    选项:
    -u uid
    -d directory
    -c command 说明
    -g group
    -G 附加组
    -s shell
    查看用户信息的配置的文件的位置

    /etc/passwd
    /etc/shadow

    添加用户的缺省的设置项
    /etc/default/useradd

    inactive = -1 密码的宽限的时间
    expired 密码的失效的时间 /etc/shadow 中的第八个字段
    shell=/bin/bash
    skel =/etc/skel
    create_mail_spool =yes 是否创建邮箱

    /etc/login.defs

    密码的有效期
    pass_max_days 99999

    修改密码的时间 (隔多久能修改密码)
    pass_min_days 0

    密码的最小的长度
    pass_min_len 5

    密码的到期的警告时间
    pass_warn_age 7

    最小的UID
    uid_min

    最大的UID
    uid_max 60000

    encrype_method SHA512
    pass_min_days pass_warn_age 7 inactive 5 expire 宽限的时间


    组文件
    ============================
    /etc/group
    root:x:0:yinchao
    组名:组的密码位,组ID号;附加的用户名

    组的ID号为0 则说明这个组是root组

    /etc/gshadow

    =====================================

    passwd

    1.普通的更改自己的密码不需要加用户名 直接passwd 且这个密码要符合复杂性的原则
    2.选项:
    -S(大写)status 查看这用户的状态密码的状态
    wangzhilei PS 2016-03-27 0 99999 7 -1(帐号不失效) (Password set, SHA512 crypt.)
    -l (lock) 锁定用户 不能登录
    -U (unlock) 解锁用户
    echo '123' |passwd --stdin one

    用户与用户组的管理命令

    1.修改已经存在的用户的信息
    usermod(modify) -d -g -G -c -u -L -U 也能临时的锁定用户 但是会在密码前加一个“!”

    修改用户的密码
    chage

    -l 查看用户的密码的详细的信息 passwd -S
    -d 修改密码的更新的时间
    -m 两次的密码的修改的间隔的时间 pass_min_days
    -M 密码的有效期 pass_max_days
    -W 过期前告警的天数 pass_warn_ages
    -I 密码过期后宽限的天数 /etc/default/useradd inactive
    -E 帐号失效的天数 /etc/default/useradd Expe

    [重点]
    如果最后一次的密码的更新的时间为0 则系统会自动在你登录的时候设置密码
    chage -d 0 wangzhilei


    -S选项汇总
    1.umask -S 查看文件目录的缺省的权限
    2.passwd -S 查看用户的状态


    -R选项汇总

    rm -qR 查看rpm的 rely

    chmod -R 改变目录及目录下面所有文件的权限

    cp -r
    rm -r

    cp -p 复制属性
    mkdir -p 递归创建目录

    删除用户
    userdel -r wangzhilei

    查看用户ID
    id wangzhilei

    用户切换
    su - wangzhilei (-号不能少) 中间的空格不能少
    su - root -c "useradd wangzhilei";

    查看当前的环境变量

    env

    =================
    添加组
    groupadd

    修改组
    groupmod -n(name) 新组名 老组名

    删除组:
    groupdel 组名
    注意:要删除这个组 则要做到这个组中没有初始的用户存在
    gpasswd 添加附加用户到组中
    gpasswd -a (access) 用户 组
    gpasswd -d (delete) 用户 组

    =========================
    时间戳:
    time();
    maketime('时:分:秒 月:日 :年');
    strtotime('2016-05-06');


    密码的问题

    1.不能少于8位


    =============================

    用户登录的问题
    在linux系统中只有种用户不能登录到系统中====>伪用户

    shell不同 => /sbin/nologin
    UID 不用 => 1-499 这个还是能登录的
    密码不用 => 密码的前面用“!” 或者是“*”

    ACL权限
    ACL权限 (access control list)
    ======================

    1.查看系统有多少个分区
    df -h

    2.查看分区是否支持acl权限
    dumpe2fs -h /dev/sda1

    3.临时加载一个分区的acl权限、
    mount -o remount ,acl / (逗号不能少)

    4.永久生效
    vim /etc/fstab

    5.设定ACl权限
    setfacl -m -x -b -R

    -m 设定ACL权限
    getfacl -m u:zhangsan:rx /tmp/test/
    getfacl -m g:group2:rx /tmp/test/

    6.最大的有效的权限
    mask

    setfacl -m m:rx /project

    删除ACL权限
    1.删除用户的ACL
    setfacl -x u:guanyu /project

    2.删除组ACL权限
    setfacl -x g:guanyu1 /project

    3.删除这个目录所有的用户和组的ACL权限
    setfcal -b /project

    7.ACL递归权限

    setfacl -m u:guanyu:rx -R /tmp/project / 注意:-R一定要放在被执行文件的前面才行

    8.对于新的文件

    setfacl -m d:u:guanyu:rx -R /tmp/project/

    查看ACL权限
    getfacl

    ===========================
    进程查看
    ps -ef | grep httpd

    查看系统的性能
    last
    w
    uptime
    top

    1.权限的把控
    u g o a(acess接入)

    2.设置权限
    setfacl -m u:yinchao:rx two 针对的一定是一个目录

    3.查看权限
    getfacl + 目录

    4.最大的权限
    mask 相与的关系


    特殊的权限 对于二进制文件进行把控
    SUID
    条件:
    1.普通的用户对于这个文件有执行的权限
    2.所有者中有"s" 权限
    3.是一个二进制的文件
    加suid方法
    chmod u+s vim 数字号也是“4”
    chmod 4755 vim

    减去的方法
    chmod 755 vim
    chmod u-s vim
    -------------------------------
    GUID
    1.普通的用户对于这个文件有执行的权限
    2.所属组长中有"s" 权限
    3.也是一个二进制的文件
    4.数字代号“2”
    5.对于目录的话,则要实现本身的rx的权限
    (在普通的用户下面创建的文件会将组改成这个父目录的组一样)

    sticky bit 粘着位

    1.操作的对象是 “目录”
    2.普通的用户要对这个目录有“w” "x"权限
    3.针对的只是普通的用户
    4.o权限的地方有一个“t”的标识
    chmod 1777 /tmp

    5.整个的表达式的出来后呢 ,这个文件中不能删除其它的用户创建的文件

    chattr 权限
    =======================
    1.改变文件的属性权限
    a、chattr +i /tmp/one 相当于给这个文件给锁起来 不能改 删除
    immutable(不可改变的)

    b、chattr -a /tmp/one 不能追加数据,不能修改数据 ,也不能删除数据
    如果一个目录的话 则能实现创建与修改文件 ,但是不能删除

    就是不能删除

    2.减少这个用户的权限
    chattr -i /tmp/one

    查看这个属性
    lsattr -a /tmp/test


    sudo权限
    将超级用户的部分的命令分给普通的用户

    命令:visudo
    配置文件:/etc/sudoers

    普通用户查看有的subo的权限
    sudo -l

    配置:
    wangzhilei ALL=/usr/bin/vim

    用户在调用的时候一定加上命令的绝对的路径
    sudo /usr/bin/vim


    ==========================================
    借root权限的办法

    1.知道root密码
    su - root -c "useradd wangzhilei"

    2.对于一个命令进行操作,如vim cat 将所有者改成suid
    chmod 4755 /usr/bin/vim
    chmod u+s /usr/bin/vim

    对于文件与目录进行保护

    1.使用sticky bit 粘着位

    chmod 1755 /tmp/one
    chmod o+t /tmp/one

    2.使用chattr -i -a


    =================
    防火墙
    . iptables

    1、查看防火墙
    iptables -L -n

    2. 清空防火墙
    iptables -F

    3保存防火墙策略

    4.策略的位置
    /etc/sysconfig/iptables

    . selinux
    查看selinux状态
    sestatus

    关闭selinux
    /etc/selinux/config

    重启服务器


    =======================
    1.主分区加扩展分区最多只能有四个。扩展分区不能格式化,只有逻辑分共能格式化
    2.IDE硬盘 linux最多支持59个逻辑分区
    3.scsi接口的硬盘最多支持11个逻辑分区

    格式化
    目的:写入文件系统
    ext2 最大支持16TB分区 和2TB的文件
    ext3 最大支持的分区也是16TB,最大的文件也是2TB 加入了日志的功能,以在系统突然停止的时候提高系统的可靠性
    ext4 最大1EB的分区,最大支持16TB的文件
    (无限数量的子目录)
    2.持久预分配
    3.快速FSCK
    4.日志效验
    5.在线碎片整理
    6.inode增强
    7.默认启用barrier
    8.是centOS6.3默认的文件系统

    磁盘分区

    1.查看磁盘分区的情况
    df -Th
    2.查看目录的使用的情况 或者是看一个文件的大小
    du -sh statistics(统计)

    3.显示磁盘状态
    dumpe2fs /dev/sda1

    4.分区的情况
    一个硬盘最多有四个分区,第五个分区是逻辑分区

    fsck
    磁盘修复命令 这个很少用 因为这个是自动的
    5.shm (share memory) 共享的存贮器

    6.proc文件


    挂载 mount 针对都是分区
    ========================

    1.显示卷标
    mount -l
    2.自动挂载
    mount -a
    3.文件系统
    磁盘:iso9660
    32 vfat
    16 fat
    4.特殊选项 (重要)
    mount -o (other) remount exec/noexec /home
    noexec 就能将这个分区内的所有的执行的文件的权限去掉root也不行
    5.挂载U盘
    a.将鼠标切入虚拟机
    b.查目硬盘块数 fdisk -l
    c.挂载 fat32 =vfat fat16=fat 文件系统的类型
    d.执行 mount -t vfat /dev/sdb1 /mnt/usb
    e.卸载 umount /dev/sdb1 或者是 umount /mnt/usb

    NTFS
    ======================
    1.linux默认不支持ntfs文件系统
    2.要下载一个插件 下载地址:http://www.tuxera.com/community/open-source-ntfs-3g/
    3.直接解压
    4.安装:./configure && make && make install
    5.安装好就可以了
    6.挂载:mount -t ntfs-3g /dev/sdb1 /mnt/usb

    第一步:分区
    fdisk /dev/sdb
    第二步:
    w:保存
    q:退出
    t:改变一个分区的系统ID
    n:新建分区
    p:显示分区
    d:删除分区
    l:显示已经分区的类型 (82swap分区 ,83linux分区)


    第二步:
    保存退出

    第三步:
    重新挂载:partprobe

    格式化:
    mkfs -t ext4 /dev/sdb1

    查看分区挂载
    mount
    df -h

    分区的自动的挂载
    修复:/etc/fstab
    /etc/fstab


    UUID=fce293f6-c13e-41d2-8522-fa31c4483d85 /boot ext4 defaults 1 2

    UUID:硬盘分区的唯一的识别标识

    /boot挂载点
    ext4文件类型
    defaults 默认的权限
    0表示不备份,1隔一天就备份,2 不定时的备份
    012 代表要不要启用fsck来检查分区(数字越小 就越先检查)


    如果/etc/fstab配置错误,系统就会崩溃,但是只要知道root密码就能进入系统。但是这时候/etc/fstab会变成只读的文件

    要用mount -o remount ,rw /给根只读的权限


    shell
    ============================
    1.输出:echo " " 如果加! 则要用 ''
    2.\ 输出本身
    3.a输出警告音
    4.退格键
    5.f换页符
    6. 换行符
    7. 回车键
    8. 制表符 相当于tab键
    9.v垂直制表符
    10.x按十六进制输出相应的字符 例:echo "x64 a" 给示64对应的字母b
    11.按照八进制来输出相应的字符
    12.echo -e "e[1;31m abcd e[0m"
    “e[1;” 这个是开始
    “e[0m” 这个是结束
    值30-37
    e[1; e[0m"
    注意:"e[1;32m" 分号后面不能有空格


    shell脚本的格式
    1.#!/bin/bash (这个是固定的格式 )
    2.#后面的#号才是注释
    3.要赋权限chmod -755 (目录的权限)
    4.运行要用相对路径或者是绝对的路径 或者是 bash hello.sh 这样不用加权限也能读取内容
    5.用vim编辑器来区分颜色
    6.linux中换行符是$ 而在windows中用的是 M$
    7.转格式dos2unix + 文件
    8.装yum -y install dos2unix


    历史命令

    1.history -c 清除
    2.history -w 强制写入
    3.使用上下箭头来查看
    4.使用"!n"重复执行第几条命令 默认保存1000条命令
    5.使用“!!” 重复执行上一条命令
    6.使用“!字串” 重复执行最后一条以该字串开头的命令
    7.配置文件在/etc/profile(环境变量的配置文件)
    8.文件保存在.bash.history文件中

    补全命令:
    1.tab

    命令的别名
    alias

    1.定义别名
    alias vi="vim"
    2.查看别名
    alias
    3.命令执行的优先级
    3.1命令的绝对路径与相对的路径第一位
    3.2第二位就是这个别名
    3.3第三位是bash的内部的命令
    3.4执行按照$PATH环境变量定义的目录查找的顺序找到的第一个命令/
    4.$PATH (环境变量)
    5.配置文件在家目录下的.bashrc
    6.去掉别名:ualias vi (别名的名称)

    ======================
    快捷键
    终止
    ctrl+c
    剪切或者是删除光标前面的所有的命令
    ctrl+u
    清屏
    ctrl+l
    粘贴
    ctrl+y
    搜索命令
    ctrl+r
    退出终端
    ctrl+d


    ================
    输入与输出重定向

    输入设备 文件描述符
    /dev/stdin 0
    标准输出设备
    /dev/sdtout 1
    错误输出
    /dev/sdterr 2


    输出重定向
    > 覆盖
    >> 追加

    错误:
    2> 覆盖
    2>> 追加

    但在实际的应用并不能判断这个命令是否的正确要一直放到一个文件中

    命令 > 文件名 2>&1 这个是覆盖
    命令 >> 文件名 2>&1这个是追加

    标准格式:
    正确与错误都放在一个文件中
    命令 &>>文件
    命令 &> 文件

    linux系统中的垃圾箱
    ls &>/dev/null
    将正确的与错误的输出到两个不同的文件中
    ls >>abc 2>>cdf

    =================
    输入重定向
    wc
    多少行 多少个词 多少个字符
    -l 统计行数
    -C 字节数
    -W 单数
    命令<文件

    wc <one.long 统计这个日志文件中的内容(注意:<符号与后面统计的文件不能有空格)
    wc <<hello
    <aa
    <aa
    <hello

    <<这个是统计hello里面的内容

    =============
    多命令分隔
    ; 前后的命令没有相应的关系
    && 与
    || 或


    复制文件
    date;dd if=/dev/zero of=/root/two bs=1k count=10000;date

    ===================
    管道符
    grep -n -i --color=auto

    netstat -an /tunpl

    通配符
    ?
    *
    []
    [-]
    [^]

    特殊符号
    1.单引号:
    所有的符号到内都只当作普通字符
    2.双引号:
    可以解析变量 转义字符 ‘'’引入命令
    3.``将内容当命令来解释=$()
    4.

    ======================
    1.变量的声明:
    直接的变量名=变量的值

    2.变量的调用
    echo $name

    ""
    ==========================
    更改时间
    date [MMDDhhmm[[CC]YY][.ss]
    ===========================
    1.用户自定义的变量
    a.命名:不能以数字开头
    b.默认的数据类型是字符串 string
    c.数字也是字符串,但是如果想让数字参与计算的话 则要进行相应的处理
    d.等号两边不能有空格
    e.如果变量的值有空格的话 则要用双引号或者是单引号来括起来
    f.在变量的值中可以使用转义字符
    g.环境变量的名称最好是大写的 (小写也是可以的)
    [变量的叠加]
    a = 123;
    echo $a //输出结果是123
    a="$a"456
    echo $a //输出的变量的值为123456

    [变量的查看]
    set
    [变量的调用]
    echo $one
    [变量的释放]
    unset


    2.环境变量
    a.主要保存和系统操作环境相关的数据
    b.进入一个新的bash 直接输入 bash
    c.声明环境变量 export

    path环境变量
    加入环境变量的两种方法
    1.将脚本文件放到环境变量的目录中
    2.不放在环境变量的目录中,但是将当前的目录改为环境变理的目录中

    定义系统提示符
    d: 星期几 格式为: 星期 月 日
    h host
    time HH:MM:SS (24小时制)
    T 12小时
    A 24小时 没有秒
    u 显示用户名
    w 绝对路径
    W 最后一个目录
    # 执行的第几个命令
    $ 提示符

    PS1环境变量
    PS1='[U]'


    ====================
    进程查看

    1.ps -ef | grep httpd
    2.pstree


    3.位置参数的变量
    a.主要向脚本中传递参数或数据,变量的名称不能自定义,变量的作用是固定的
    4.预定义的变量
    a.bash中已经定义好的变量,变量的名称也不能自定义,变量的作用也是固定好的

    ============================================
    位置参数 (名称是一定的 ,且功能也是一定的)
    1.$n 0代表这个命令的本身,其它代表这个传值 如果大于10则要用${10}
    echo $(( $1 +$2))
    2.$* 代表任何的参数,会将这个参数看成一个整体

    3.$@ 代表任意的参数,会将参数分开来看
    4.$# 代表传参的个数
    echo $#
    echo $*
    echo $@
    for i in "$@"
    do
    echo $i
    done
    1.$#计算参数的个数
    2.for in "$a" #如果执行的值是一个变量的话 则一定要加“” 括起来
    do
    中间是执行的内容
    done


    ===================================================
    预定义的变量
    1.$? 判断上一个命令是否执行正确 如果返回结果是0的话 则说明正确
    2.$$ 查看当前的进程号
    3.$! 查看当前后台的进程号 (后台执行的程序在进程的结尾加上&)


    键盘输入
    read -p -n -s -t 变量
    ===================================================
    -p (print)
    -n (num)
    -s (隐蔽输入的内容)
    -t (timeout 超时秒数)
    =======================================================
    read -t 30 -p "please input your name: " name
    echo $name
    ========================================================
    read -t 30 -s -p "enter your password :" passwd
    echo $passwd
    =======================================================
    read -t 30 -n 1 -p "[M/F:] " sex
    echo $sex
    ========================================================
    数值的运算与运算符
    linux中任何的变量的数据的类型都为字符串 string
    ====================================
    1.declare
    -i 声明为整型 initer
    -x 声明为环境变量
    -p 打印变量的类型
    + 减去变量的类型
    - 增加变量的类型
    2.expr aa=$(expr $aa + $bb) 这个并不常用,用“+” 前后的空格是不能少的
    3.$(($aa+$bb)) 两个插号 这样的话里面的变量就能直接参与运算了 或者是用$[$aa+$bb]

    运算符
    常用的+ - * / % 遵循运算
    && 值只为0或者是1 当两边有一个值为0的时候 同 这个值为0
    || 值只为0或者是1 当两个值都为0的时候才为为
    ==============================================
    变量的查询与变量的替换
    1.x=${y-new} 如果y存在的话则用y的值 如果y不存在的话 则要用“-” 后面的赋的值

    =================================
    环境变量的配置文件
    1.配置文件更改后要重新登录才能生效
    2.用source 文件名 或者是 . 文件名 这样的话 则不用 登出登录就能即时的生效
    3.环境变量的种类
    PATH
    HISTSIZE 历史
    PS1
    HOSTNAME 用户名
    4.环境变量的配置文件
    /etc/profile
    /etc/profiled/*.sh
    ~/.bash_profile
    ~/.bashrc alias 别名
    /etc/bashrc

    5.只要环境变量的配置文件在/etc上面的 则对所有的登录的用户都是生效的

    /etc/profile
    user变量
    loginname
    mail
    path
    hostname
    histsize
    umask

    退出环境变量
    .bash_logout

    定义系统的语言
    /etc/sysconfig/i18n"

    记录系统的历史
    .bash_history

    本地登录信息
    /etc/issue
    d 显示当前的系统的日期
    显示主机名
    s 系统的名称
    o 显示域名
    显示内核版本
    当前系统的时间
    u 显示当前用户的序列号
    ===========================================================
    远程登录信息(上面的转义符没有用)
    /etc/issue.net
    如果想显示配置的信息的话
    1./etc/ssh/sshd_config 中找到banner none 改成 banner=/etc/issue.net
    2.重启动sshd service sshd restart
    ===========================================
    /etc/motd(这个是登录之后的欢迎信息)
    ================================================
    shell中的正则表达式
    正则与通配符号的区别

    1.正则在文件中查打匹配的字符 (包含匹配)
    2.通配符是查打匹配的目录或者是文件的名称 (完全的匹配)

    基础正则表达式
    * 前面的字符的个数0或多个 通配符中是任意的字符 与PHP一样
    . 所有的字符 除了换行符
    ^ 以什么开头
    $ 以什么结尾
    [] 在[]中的任意的字符
    [^] 取反
    转义字符
    {n}
    {n,}
    {n,m}
    ==============================================
    字符的截取
    提取行
    0.grep
    ===================================================
    提取列
    1.cut
    cut -f 5 /etc/one first
    a.用是的制表符来分才行
    cut -d ":" 定义分隔的方式 (deliver)
    ======================================================
    2.printf (n代表的是几个)
    printf %ns (string)
    printf %ni (int)
    printf %m.nf (float)
    2.1让几个一行,但是%s要放在单引号或者是双引号中
    printf "%s %s %s " 5 8 9 4 5 6
    2.2printf 只能直接读内容,并不能通过文件读内容
    例:
    错误: printf "%s" one.txt
    正确: printf "%s" $(cat one.txt)
    格式调整
     删除
    a alert
    f 清屏 fire
    换行
    回车
    制表符
    v 垂直输出
    ===================================================
    3.awk
    截取列
    1. df -h |awk '{print $5 " " $6}'
    2.print 会自动加上" "
    3.df -h |grep sdb5 |awk '{print $5}'|cut -d "%" -f 1 综合运用
    4.cat /etc/passwd | awk 'BEGIN{FS=":"}{print $1}'
    BEGIN在操作前执行的动用
    {FS=":"}定义分隔符
    END{print "aaaaaaaaaaaaaaaaa"}
    带有条件来判断
    cat one.txt |grep -v name |awk '$3<90{print $1}'

    ======================================================
    4.sed 动作要用单引号''
    sed 选项 动作 文件
    直接操作一个文件
    sed -n "2p" one.txt
    接收管道符的内容
    df -h |sed -n "3p"

    追加(在第二行的后面加hello)
    sed '2a hello' one.txt
    插入:(插入都是在前面插入的)
    sed "2i hello onen" one.txt
    删除
    sed '2d' one.txt
    整行替换
    sed '3c no person ' one.txt
    替换字符串(中间用“/”来分隔)
    sed '3s/39/78/g' one.txt
    修改原文件
    sed -i '3s/39/78/g' one.txt
    多个条件同时进行 中间用的是分号隔开 (也在单引号内)
    sed 's/si/zhi/g; s/san/hello/g' one.txt


    -n 只将动作执行过的数据放到屏幕中 new
    -d 删除 delete
    -i 插入 insert
    -a 追加 access
    -c 行替换 cover
    -s 字符串替换 string
    -e 允许多个条件同时进行

    进程管理
    ps aux
    表示占用虚拟内存的空间(默认的单位是k)
    VSZ
    表示占用物理内存的空间 (默认的单位也是k)
    RSS
    代表的是本地控制台终端
    tty1-6
    代表的图形终端
    tty-7
    代表虚拟终端
    pst 0-255
    查看一个机器的健康的状况
    l.ps aux
    2.ps -le
    进程的状态
    status
    运行
    R
    休眠
    S
    位于后台
    +
    包含子进程
    s
    该进程的启动的时间
    START
    该进程占用CPU运算的时间(并不是系统的时间)
    TIME
    进程的命令名称
    COMMAND
    查看系统健康状况
    top`
    僵局进程
    zombie


    st:steal time 虚拟机时间百分比
    si:软中断服务请求占用的CPU
    hi:硬中断请求占用的CPU的百分比
    us:用户模式占用的百分比
    sy:系统模式占用的CPU的百分比
    id:空闲的CPU

    N:安PID
    P:CPU
    M:内存
    q:退出


    ====================
    进程数
    tree 查看目录结构(需要安装 yum -y install tree)
    pstree= ps aux

    -p显示pid号
    -u:显示所属的用户

    ============================================
    进程杀死
    kill -1 重启(PID)
    kill -9 强制 (PID)
    kill -15 正常(PID)

    killall -1 httpd 按进程名来
    pkill -9/-1/-15 -t tty1
    ===========================
    查看所有的服务
    chkconfig --list
    =======================================
    工作管理
    1.在命令的后面加上"&"
    2.在程序执行的时候用快捷键 “ctrl+z”
    3.查看后台工作 jobs -l
    ======
    恢复到前台
    fg %工作号
    bg %工作号 在后台运行 相当于 &
    ====================================
    资源查看
    ========================
    1.vmstat 2(时间间隔) 2(次数)类似于top

    查看机器的硬件信息
    dmesg |grep CPU

    查看内存的使用状态
    free
    butters (缓冲信息)
    cached (缓存信息)

    查看CPU的信息

    cat /proc/cpuinfo/diskstat /swap

    miscellaneous 混杂的

    查看内核信息
    =======================================================
    uname -s 查看系统
    uname -a 查看内核所有的信息
    uname -r 查看内核的版本

    =====================================================
    SMP:Symmetric(对称的) Multi-Processing [si'metrik]
    SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。
    Greenwich Mean Time格林尼治时间
    =============================================================

    查看系统的位数

    file /bib/ls 只能通过查看系统中的命令来查看系统的位数 这样弯曲的来查看

    file查看文件的类型
    =============================================================
    查看系统的类型是centos 还是ubuntu

    lsb_release -a (linux standard base)
    ============================================================
    列出进程打开或者是占用文件的信息
    lsof
    lsof -p 进程号占用的文件的信息
    lsof -u 哪个用户占用的文件的信息
    lsof -c 列出以字符串开头的打开的文件 lsof -c init
    initial(初始)
    =============================
    系统中的定时任务
    1crontab
    crontab -e 编辑
    crontab -l 查看
    crontab -r 删除
    * * * * *
    第几分钟 第几个小时 第几天 第几个月 周几(0-7) 0与7都代表的是 周日


    重点:在定义定时任务的时候 %有一定的意义,如果用到时间的话则要加转义字符才行
    ======================================================

    系统日志
    =========================
    1.查看日志服务有没有运行与自运行

    ps aux| grep rsyslogd
    2.查看有没有自运行
    chkconfig -- list |grep rsyslogd
    2.日志存入的位置
    /var/log
    日志分为两种:
    a、能直接打开的
    /var/log/btmp lastb 查看登录失败的情况
    /var/log/utmp who w
    /var/log/lastlog lastlog
    /var/log/wtmp last
    b、用命令才能打开的

    ==================================
    日志格式

    1、日志产生的时间 2、主机名 3、产生日志的服务名或者是程序名 4、事件的具体的信息

    ===========
    日志配置文件
    /etc/rsyslog.conf

    服务名 等级 存入位置

    authpriv.* /var/log/secure
    "." 表示连接符
    ==========
    服务名称:
    0.*所有的服务的名称
    1.auth 安全认证的相关的信息
    2.authpriv 安全认证相关的信息(私有的)
    3.cron 定义时任和at产生的信息
    4.daemon 守护进程相关的日志
    5.ftp ftp守护进程产生日志
    6.kern 内核产生的日志
    7.local0-local7 为本地使用预留的服务
    8.lpr 打印产生的日志、
    9.mail 邮件收发信息
    10.new 新闻服务产生的日志
    11.syslog 有syslogd服务产生的日志信息
    12.user 用户等级的类别的日志
    13.uucp UUCP子系统的日志信息 uucp是早期linux系统进行数据传递的协议,后来常用在新闻服务中
    ===========
    连接符
    代表所有的等级
    “*”
    代表只记录比后面的等级高的日志信息
    .info/bug/emerg/warning/critical
    只接收某一个等级的日志
    ".="
    不接收一个等级的其它的等级都接收
    “.!”

    =======================================
    报警的等级
    0.none
    1.debug
    2.info
    3.notice
    4.warning
    5.err
    6.crit
    7.alert
    8.emerg
    等级越高的话则记录的内容就越少,但是危害性越大

    ===================
    日志的记录的位置
    1.日志文件的绝对路径 如/var/log/secure
    2.系统的设备文件: 如/dev/1p0
    3.转发给远程的主机: @192.168.0.210:514
    4.转发给用户 root
    5.丢弃或者是忽略 ~
    =============
    连起来一起写
    uucp,news.crit (用逗号隔开)
    =========================
    日志的轮替

    轮替工具
    vim /etc/logrotate.conf

    daily 日志的轮替的周期为1天
    weekly
    monthly
    rotate 保留日志的个数 如果是30 则会有30份日志来备份
    compress 日志轮替时旧的进行压缩
    create mode owner group 新建日志的时候,同时指定新日志的权限与所有才组
    ============================================

    查看日志轮替信息

    logrotate -v /etc/logrotate
    强制轮替
    logrotate -f /etc/logrotate

    轮替工具
    vim /etc/logrotate

    daily 日志的轮替的周期为1天
    weekly
    monthly
    rotate 保留日志的个数 如果是30 则会有30份日志来备份
    compress 日志轮替时旧的进行压缩
    create mode owner group 新建日志的时候,同时指定新日志的权限与所有才组
    ============================================

    查看日志轮替信息

    logrotate -v /etc/logrotate
    强制轮替
    logrotate -f /etc/logrotate
    =========================
    运行级别
    0 关机
    1 单用户模式
    2.不完全的集合模式 不包含nfs
    3.完全命令的模式
    4.系统保留
    5.图形界面
    6.重启

    5.图形界面
    6.重启

    系统的启动的过程
    cpio -idv < test
    ===================================
    启动管理
    配置文件
    /boot/grub/grub.conf

    ==============================
    备份与恢复
    增量备份
    dump
    yum -y install dump

    -l 指定备份后的文件名
    -u 备份后,把备份的时间记录在/etc/dumpdates文件中
    -v 显示备份过程中的详细的信息
    -j 将文件备份成bz2格式
    -W 显示允许dump分区的备份等级及备份的时间

    完全备份:
    dump -0uj -f /tmp/boot.bz2 /boot/

    增量备份(只能针对分区,并不能针对于文件或者是目录)
    dump -1uj -f /tmp/boot.bz2 /boot/
    对于文件或者是目录进行备份,则不用写入/etc/dumpdates 也就是说不能有-u选项
    dump -0j -f /tmp/etc.bz2 /etc/
    dump -W 用来查看分区的备份的状态
    ====================
    restore
    将备份的文件与原来的文件进行比较(只要文件名相同系统会自动的比较)
    restore -C -f
    还原
    restore -r -f /tmp/etc.bz2
    查看
    restore -t -f /tmp/etc.bz2
    evel (0-9)
    -f

    ------------------------------------------
    apache配置

    linux内置的浏览器
    elinks http://127.0.0.1

    --------------------------------------------------

    apache
    网站的根目录
    DocumentRoot "/usr/local/apache2/htdocs"

    服务的权限

    /

    indexes
    如果没有index文件的话则会提示没有权限需要加上相应的文件一起来访问

    FollowSymlinks
    能够在htdocs目录下面创建软链接

    MultiViews

    多视图,当你输出a会自动的寻找a.html 或者是a.php
    http://192.168.255.10/mnt/a.php

    定义进程的执行者
    User daemon
    Group daemon

    正确访问的日志
    CustomLog "logs/access_log" common

    错误访问的日志
    ErrorLog "logs/error_log"


    解析.php的脚本
    AddType appliacation/x-httpd-php.d

    控制错误的页面的输出
    ErrorDocument 404 missing.html

    包含外部的配置的文件
    Include conf/extra/httpd-vhosts.conf

    -------------------------------------------------------------
    配置虚拟目录

    当输出ww.jd.com/mnt的时候会默认的找linux系统中的/mnt目录
    Alias /mnt "/mnt"

    权限设置
    <Directory "/mnt">
    Options indexes multiviews //多视图
    Order deny,allow
    Allow from all
    </Directory>

    ----------------------------------------------------------

    虚拟主机
    -------------------------------------------
    第一步:开启http.conf中的引放虚拟主机模式
    Include conf/extra/httpd-vhosts.conf
    第二步:cd /usr/local/apache/conf/extra
    编辑 httpd-vhosts.conf
    第三步:创建虚拟主机
    --------------------------------------
    1)修改虚拟IP
    NameVirtualHost 192.168.255.10:80

    2)创建虚拟主机(标记为VirtualHosts)
    <VirtualHosts 192.168.255.10:80>
    //指定根目录
    DocumentRoot "/web/keji"
    //指定域名
    ServerName www.zhilei.com
    </VirtualHosts>

    3)给这个虚拟目录赋权(Directory)
    <Directory "/web/keji">
    //定义功能
    Options indexes(默认寻index) /MultiViews(多视图) /FollowSymlinks (软链接)
    //权限选项
    Order deny,allow
    //最终定义权限
    Allow from all
    </Directory>
    -----------------------------------------------------------------------------

    lamp环境搭建
    ----------------------------------------
    0.php库文件
    1.apache
    2.php
    3.mysql
    ---------------------------------------
    php依赖包安装

    --------------------------------------------------
    1.autoconf与zlip不用指定安装目录
    第一步:解压
    第二步:cd autoconf
    第三步:./configure && make && make install

    0安装libxml2
    tar zxf libxml2-2.7.8.tar.gz
    ./configure --prefix=/usr/local/libxml2
    make && make install
    -----------------------------------------
    其它的安装的顺序
    第一安装libpng
    tar zxf libpng-1.2.10.tar.bz2
    ./configure --prefix=/usr/local/libpng
    make
    make install
    ---------------------------------------
    第二安装jpegs
    tar xzf jpegsrc.v6b.tar.gz
    配置文件不全要手动建立目录
    mkdir /usr/local/jpeg6/
    mkdir /usr/local/jpeg6/bin/
    mkdir /usr/local/jpeg6/lib/
    mkdir /usr/local/jpeg6/include/
    mkdir -p /usr/local/jpeg6/man/man1/
    ----------------
    ./configure --prefix=/usr/local/jepg6
    make
    make install
    --------------------------------------
    第三安装:freetype
    tar zxf freetype-2.3.1.tar.bz2
    ./configure --prefix=/usr/local/freestye && make && make install
    -------------------------------------
    第四安装:libmcrypt
    tar zxf libmcrypt-2.5.7.tar.gz
    ./configure && make && make install
    ----------------
    还要安装它的子程序
    cd libltdl
    ./configure --enable-ltdl-install
    make && make install
    -----------------------------------
    第五步:安装GD库
    tar zxf gd-2.0.32.tar.gz
    cd
    #.png的修复的方法
    cd gd_png.c
    将#include "png.h"
    #include "/usr/local/libpng/include/png.h"
    --------------
    ./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng


    -------------------------------
    mysql安装
    1)第一步安装ncurses
    yum -y install ncurse*

    2) 添加mysql进行执行
    useradd mysql
    vim /etc/passwd /sbin/nologin
    3)安装
    ./configure --prefix=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --without-debug --enable-thread-safe-client --with-pthread --enable-assembler --enable-profiling --with-mysqld-idflats=-all-static --with-client-idflags=-all-static --with-extra=all --with-plugins=all --with-mysqld-user=mysql --without-embedded-server --with-server-suffix=-community --with-unix-socket-path=/tmp/mysql.sock
    make
    make install

    --------------------------
    4)设置配置文件
    cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf (必须要在/etc目录下面)

    5)设置权限
    setfacl -m d:u:mysql:rwx -R /usr/local/mysql/
    6)安装数据库
    /usr/local/mysql/bin/mysql_install_db --user=mysql
    7)启动数据库
    /usr/local/mysql/bin/mysqld_safe --user=mysql &
    8)设置数据登录用户和登录密码
    /usr/local/mysql/bin/mysqladmin -u root password kkk
    9)登录数据库
    /usr/local/mysql/bin/mysql -u root -p 123456
    ---------------------------
    开机自动重启
    /etc/rc.local
    /usr/local/mysql/bin/mysqld_safe --user=mysql &>/dev/null &
    加入环境变量
    ln -s /usr/local/mysql/bin/mysql /bin

    设置字符集
    SET character_set_client=utf8;
    SET character_set_connection=utf8;
    SET character_set_results=utf8;
    SET character_set_database=utf8;
    SET character_set_server=utf8;

    ----------------------------------------------------------
    php安装与编译
    1)安装libtool libtool-ltdl
    yum -y install libtool* libXpm-devel
    yum install libXpm-devel
    (要开启在线yum安装)
    2)cd php-5.6.20
    ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --enable-soap --enable-mbstring=all --enable-sockets --with-xpm-dir=/usr/lib
    make && make install
    不要加zlib
    3)配置文件
    原来文件中的
    4)cd php-5.6.20 cp /lamp/php-5.6.20/ php.ini-development /usr/local/php/etc/php.ini
    5)打开apache配置文件
    添加 AddType application/x-httpd-php .php
    (注意:这句话后面要加一个空格才能生效)
    DirectoryIndex 后面加入 index.php


    打模块:
    第一步:
    切到相应的解压的目录执行
    /usr/local/php/bin/phpize 会生成./configure文件
    第二步::

      ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
      make
      make install

    如果出现mysql.h目录未找到的话则用
    ln -s /usr/local/mysql/include/* /usr/local/include/

    第三步:修改php.ini配置文件
    extension
    On windows:
    ; extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
    加入extension=php_pdo_mysql.so

    ---------------------------------------------------
    ftp 数据截取
    1)安装vsftp
    yum -y install vsftp*
    2)启动服务
    service vsftpd start
    ftp -i eth0 -nnX port 21
    ---------------------------------
    将程序放在后台运行
    &放在后台运行
    ctrl+z 放在后台,但是不再运行
    -------------------------------------
    查看后台运行程序
    jobs -l (可以省略)
    fg放在前台运行
    bg放在后台运行
    -----------------------------------------


    sshd服务
    ----------------------------------------
    配置文件
    /etc/ssh/ssh下面的
    ssh_config (客户端的)
    sshd_config (服务器端的)
    ---------------
    密钥
    RSA 公钥 republic secure Authentication (只有每一次登录的要问下输出公钥)
    DSA 私钥
    ------------------
    让客户端不经过dns解析来登录
    更改ssh_config客端的文件
    GSSAPIAuthentication yes
    改成
    GSSAPIAuthentication no
    这样就能让客户端的登录不经过DNS验证来登录
    ----------------------------------------
    禁止root用户登录
    ------------------------------------
    在sshd_config
    #PermitRootLogin yes
    改成
    PermitRootLogin no
    ------------------------------------

    sftp root@ip
    输入密码

    显示本地文件
    lls
    显示切换目录
    lcd
    下载
    get
    上传
    put
    对于运维是手动操作的 ,如果这个事情不能及时的解决的话 我们这面生活并不是那么
    ---------------------------------------------
    密钥登录
    ------------------
    1.生成公私钥
    ssh-keygen -t rsa
    2.将公钥传给服务器
    scp id_rsa.pub root@111.202.120.14:/root
    3.将公钥放到root下面
    4.打开
    cat id_rsa.pub >> .ssh/authorized.keys
    若要用zhilei帐户登录的话则要用
    /home/zhilei/.ssh/authorized.keys
    5.更改权限(将所有都)
    6.关于SElinux
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys(名称一定要一致)

    PasswordAuthentication yes
    改成
    PasswordAuthentication no 禁用密码登录

    if


    samba
    -----------------------------------------

    python基础内容
    -----------------------------------------
    1.变量的声明
    2.序列: 元组,列表,字典
    3.
    4.
    -----------------------------

  • 相关阅读:
    成家撑家 不要妄自菲薄
    [文字20091204]佛说贪、嗔、痴、妒、慢、疑
    [文摘20091116]一生必看的88本书
    [文摘201009]演讲录全文:美国世界帝国战略与中国的危机 戴旭
    由 图标 加 文字 实现 按钮功能 的 图标按钮用户控件
    javascript Array扩展
    javascript Number对象
    纯CSS多级菜单2
    纯CSS相册2
    纯CSS多级菜单
  • 原文地址:https://www.cnblogs.com/leigepython/p/8595798.html
Copyright © 2011-2022 走看看