zoukankan      html  css  js  c++  java
  • linux的python目录权限

    Django/Tornado
    网络编程,熟悉Socket、TCP/IP。
    nginx


    linux shell脚本
    nginx
    tornado
    apache 
    python
    pgsql mysql sqlite sqlserver mogodb
    redis memcache 分布式数据集成部署
    openstack 
    django 
    html5 css 3 -------------- ko
    javasvript typescript jquery --------------ko
    bootstrap kando  
    orm  
    蜘蛛 网络套接字 HTTP协议
    restful服务接口 
    git代码管理  
    高并发访问 多线程处理 IO资源管理 
    分页查询 内存资源对象释放gc 析构函数本质  
    https 证书  
    加密算法 数据结构算法
    IP服务器集群 Cluster
    域名对应多个IP ,做虚拟主机,镜像网站 Mirror sites--------> nsloop www.sina.com there are many ips bind this domain





    在Python源文件中最好不要出现中文字符串


    python 中的中文字符串必须要出现的话 那么开头必须声明文件的编码运行时编码
    # coding:utf-8
    #encodeing:uft-8 (或者:使用=符号均可)
    比较麻烦的 是 
    #_*_encoding=utf-8_*_
    都可以实现中文字符

    ----------nginx------------
    service nginx start 启动
    killall nginx 关闭
    配置iptables(每次重启Server后 都特么的丢失,练习环境干脆关闭防火墙)
    iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
    ---------可以尝试在配置文件 保存 修改文件/etc/sysconfig/iptables,然后将iptables服务重启。service iptables restart


    启动nginx
    service nginx start
    -------------------------

    --------------管理工具-----------
    webmin
    http://192.168.83.131:10000/
    xmanager


    在Linux 中的命令执行的法则 更像是直接执行已经加载完毕的软件程序
    实用命令激活指向命令 -用来制定Option 选项 选项后添加操作目标 作为参数,多个选择项的时候 一个个的-option args -op2 agrs................

    Linux 重启命令
    reboot
    关机命令
    shutdown


    知识点1 
    linux 下的内容都是以File的形式进行组织的
    严格区分大小写
    可以使用除了 /字符的任意字符
    最好不要使用空格符号 ,因为这样在执行终端命令的时候 就麻烦了
    命名规则,最好不要使用制表符 等符号,不要以.开头 (凡是.开头的文件 都是隐藏文件)


    知识点2
    命令 -选项 参数(命令操作的对象)
    命令的选项可以使用空格分开 也可以使用-连起来写
    两个特殊的文件 . ..这两个文件代表的是 当前目录和父目录,作为节点的链接

    命令分为两大类 
    1仅仅root 用户可以自行的 /sbin and /usr/sbin
    2 所有用户可以执行的 /bin and /usr/bin

    知识点3  
    ls 命令 
    -l 长类型 文件显示,,以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
    -a 全部文件 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
    -A:显示除影藏文件“.”和“..”以外的所有文件列表;
    -d :仅显示当前目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;

    drwxrwxrwx(首字母为文件类型-后9个字母代表了执行权限)
    d---文件目录 dir
    - ---表示一个二进制文件
    l ---软链接文件 link 

    owner group others
    | | |
    rwx rwx rwx 

    -----------------------------权限对应的数值----------0 1 2 4 3 5 6 7-------------
    ---none--2^-1=0 
    r--read 2^2=4
    w--write 2^1=2
    x--execute 2^0=1

    文件 目录
    R 可读 可列出
    W 可写入 可以add delete 目录中的文件
    X 可以执行 可进入目录(执行目录,相当于运行此目录文件)



    Linux的文件存储以block为单位:一般为512字节




    知识点 4
    cd 切换目录 
    cd / 或者 .. 进入根目录 或者上一层目录

    pwd ---------print working dir
    显示当前工作目录



    知识点 5
    touch 创建文件
    touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件

    知识点 6 
    mkdir 创建目录
    在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
    mkdir -m 700 /usr/meng/test

    知识点 7 chmod 
    更改文件的权限
    例如 更改文件的权限为 u=rwx ,g=rw,o=---
    chmod 730 file
    chmod u+x,g+w f01  //为文件f01设置自己可以执行,组员可以写入的权限
    chmod u=rwx,g=rw,o=r f01
    chmod 764 f01
    chmod a+x f01  //对文件f01的u,g,o都设置可执行属性


    知识点 8 cp
    用来拷贝复制
    cp from to
    cp -R 递归目录下的子文件



    知识点 9 
    Ctrl+C 用来执行取消命令的执行

    知识点 10 mv
    文件移动---实现剪切 +改名

    知识点 11 rm (rmdir 只能删除空目录 实用性很少)

    rm 删除文件
    rm -r 递归性的删除目录

    知识点 12
    cat 用来显示文件内容,全部内容或者第几行的内容
    配合 more 用来进行分页内容显示
    more fileName ;-------f 或者空格 翻页 ,回车下一行 ,Q键退出

    head -30 fileName ---显示前几行(默认10行)
    tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如


    知识点 13 
    ln --link 生产软链接
    -s 生产软链接
    否则是硬链接

    ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。
    源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;

    软连接:权限 lrwxrwxrwx ,->指向源文件,访问最终取决于额源文件的访问类型,仅仅是一个快捷方式
    硬链接:二进制可执行文件,文件节点镜像。。。。。
    本质区别:都是指向,但是硬链接根源文件的性质一样,指向内存中的文件内容对象的基地址,创建N个硬链接,就会在文件Object上 注册引用数,即使删除来源文件,也仅仅是去除来一个队此文件对象的引用而已!!!
    但是 ,软链接可以跨设备,硬链接不可以!!!!!!!!!也就是分区。。。。

    注意:Linux 的内核只能识别数字,所以,文件必须有对应的Id标识,包括指令,或者进程都需要有对应的id标识。
    此机制涉及到Linux底层的文件管理方式,文件用倒树状方式,每个文件都必须有一个Id 编码,这个id 是一个整数,每个文件以inode 节点的方式,排列在磁盘的柱形面上,
    一旦id 消失,那么此文件再也无法找回。一个节点 可以被多个文件引用,而软链接指向文件,相当于二级引用的一个代理指向。



    知识点14
    chown 更改归属用户 ---系统有个默认的用户 nobody
    chgrp 更改归属组------系统有个默认的组 adm

    知识点 15
    umask--------系统默认的文件权限设置 (一般不要轻易改动这个权限)
    umask ----返回的是权限的掩码 
    umask -S ---返回 u g o 的默认权限

    0022---首个字符代表的是特殊权限位
    777
    -022
    -----
    755 =u=rwx g=rx o=rx

    返回来,要设置此默认权限,那么得出权限数字列后,得到掩码 然后设置!!!!




    知识点 16
    命令文件的查询
    which 使用此命令来定位命令的位置或者实现搜索目录下的文件:注意:linux 下的所有对象都是文件File 那么命令也是二进制的执行文件,一般,命令文件存放在/bin 管理员; /usr/bin 一般用户
    whereis 俩命令都可以找到命令的绝对路径
    不同的是 which 可以显示出命令的别名
    whereis 可以显示命令帮助的文档所在的位置

    -------------------------------------
    find 制定的目录 范围,还会遍历穷尽子目录
    任何文件的搜索
    find find ./ -name *rpm
    通配符 * 任意多任何字符
    ? 单个任意字符
    对于此搜索命令,一般放在系统闲时运行查询,然后将结果放置保存,让系统资源运行在需要的时候

    -----------按照数据大小搜索------------
    一般数据存储按照数据块 block =512byte存储=0.5k

    find ./ -size +你的大小
    + 超过
    - 小于
    = 不用写 ,直接写上数值
    ----------------------------------------


    ----------按照用户所有者查询------------
    find ./ -user chenwenguang
    -----------------------------------------

    -----------按照inode 进行文件查询-----------
    查询节点为此的文件,然后执行删除,用来执行对文件名比较另类的文件进行操作
    find ./ -inum 261383 -exec rm -f {} ;

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





    知识点17  
    locate/slocate命令文件查找和比较 locate命令和slocate命令都用来查找文件或目录。
    locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,
    这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
    为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。


    知识点 18 

    文件内容搜索 grep
    grep contentrule from

    知识点 19  
    man 命令帮助
    help help命令用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。

    whatis whatis命令是用于查询一个命令执行什么功能,并将查询结果打印到终端上

    知识点 20
    压缩 解压 
    gzip 格式为.gz,只能压缩文件 File ,不能压缩目录,压缩后,不保留源文件
    --------------windows 的rar 压缩 ,没法解压,那就必须安装rar for linux版本
    压缩正向
    gzip * files.....
    解压 
    gunzip 或者 gzip -d

    tar 格式
    tar 命令,格式 tar.gz 可以将目录压缩
    -c ---创建文件
    -v---显示执行信息
    -f----新的文件名
    -z----打包 同时进行压缩

    tar -zcvf 【目标.tar.gz】 【包含的文件。目录】
    小提示:file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

    -Z 解包


    zip 压缩 
    默认格式为 .zip格式
    ------------可实现跨平台文件共享-----
    也可以压缩目录,压缩成文件后,还保留源文件
    unzip 命令文件压缩与解压 unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。

    bizip2
    压缩解压文件--压缩比的性能很高,文件格式 *.bz2

    -----------------------------------------------------------------------------------------------------------
    知识点 21 
    网络通信
    write ---向单个已经登录系统的用户发送消息
    wall ---针对所有用户
    ifconfig --进行当前机器的网卡IP地址查询,临时变更
    ping--向特定的服务器地址发送默认64字节的消息,默认会一直ping 下去,按CTRL+C 结束

    --------------------------------------Shell 应用技巧---------------------------------------------------------------------
    Shell 初学者请注意,在平常应用中,建议不要用 root 帐号运行 Shell 。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是 root,那就不同了,只要敲几个字母,就可能导致灾难性后果。
    知识点 22
    列举出系统中包含的Shell应用,Shell是根内核交互的程序
    [root@localhost ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh

    ------------------------------------Shell编程--------------------------------------------------------------
    脚本结构
    1 #! 指定执行脚本的Shell --------一般默认为bash
    2 # 注释
    3 执行的命令


    注意:执行脚本的时候 使用 sh -x 可以查看脚本的命令执行过程

    创建一个shell脚本
    1 开头写上作用
    2 shell脚本的作者 时间
    3 写命令
    4调试执行 测试结果
    5 保存,并修改属性为可执行

    单引号 双引号的区别是:
    单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、、`。
    [root@localhost sh]# testvalue=100
      [root@localhost sh]# echo 'The testvalue is $testvalue'
      The testvalue is $testvalue
      [root@localhost sh]# echo "The testvalue is $testvalue"
      The testvalue is 100


    [root@localhost ~]# v_currentDate=`date`
    [root@localhost ~]# echo $v_currentDate
    Sun Nov 1 12:54:48 CST 2015


    执行一个命令 并返回结果 我们使用$( cmd -options agrs),代替使用 反写引号` `
    获取一个变量 我们最好使用${变量名的方式 获取变量}


    使用命令 set ----------列出所有变量

    位置变量和特殊变量
    Shell解释执行用户时,将命令行的第一个部分作为命令,其他部分作为参数。由出现在命令行上的位置确定的参数称为位置参数
    例如:
    ls -l file1 file2 file3
    $0 ->这个程序的文件名 ls -l 
    $n ->这个程序的第n个参数值, n=1-9

    特殊变量 $?---------执行上一个命令的执行结果,0成功 非0 失败

    read命令
    从键盘读入数据,赋给变量
    read USERNAME  

    expr命令
    对整数型变量进行算术运算 【中间有空格】
    例如:
    expr 3 + 5
    expr $var1 – 5
    expr $var1 / $var2
    expr $var3 * 10

    复杂的expr命令
    expr ‘expr 5 + 7’/$var4

    ------------------------------------Shell编程中的在Windows 下的脚本异常---开始-----------------------------------------------------------
    ---可以再Notepad++中的设置项中--将新建默认的文档格式为Unix,然后在右下方你就可以看到文档的格式不是DOS 是Unix了。。。
    ---蛋疼的3大平台的换行符
    ---DOS :CR LF
    ---UNIX:LF
    ---MAC:CR

    ---------综上,那么最好在Linux中先创建好文件,然后载入到本地----------------------
    ---------也可以给NotePad++设定转化的快捷键 

    /bin/sh^M: bad interpreter: No such file or directory 异常
    在linux下运行shell脚本,报上面的错误。

    google了一下发现时编码问题,运行一下 dos2unix 文件即可

    原因是windows下的文件格式在linux下不兼容


    转载写的挺好的一个篇文章

    在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。 

    分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 
    解决:1)在windows下转换: 
    利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。 
    2)也可在Linux中转换: 
    首先要确保文件有可执行权限 
    #sh>chmod a+x filename 

    然后修改文件格式 
    #sh>vi filename 

    利用如下命令查看文件格式 
    :set ff 或 :set fileformat 

    可以看到如下信息 
    fileformat=dos 或 fileformat=unix 

    利用如下命令修改文件格式 
    :set ff=unix 或 :set fileformat=unix 

    :wq (存盘退出) 

    最后再执行文件 
    #sh>./filename

    ------------------------------------Shell编程中的在Windows 下的脚本异常--结束------------------------------------------------------------
    shift +回车 进行多行换行

    [root@localhost ~]# web_nginx=`pgrep nginx`
    [root@localhost ~]# if [ "$web_nginx" = "" ] 
    > then echo 'a'
    > else echo 'b'
    > fi
    b


    -----一般用的是bash-------------------
    1 Tab 键进行命令补全
    2 history ---执行的命令记录
    3 crtl+l---清屏
    4 crtl+u---清除光标所在行的内容

    5 # alias ----------将系统定义好的命令别名显示,或者定义自己的命令别名
    alias cp='cp -i'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@localhost ~]# 
    别名定义范例:
    alias copy=cp
    删除别名定义
    unalias copy

    --------------输入 输出 重定向-------------

    输入 重定向
    < 0 (标准输入)
    输出从定向
    > 追加模式>> 1 (标准输出)
    2 (标准错误输出)


    -------------管道模式--------------------

    管道模式
    对命令 之间进行 | 操作 ,让前面的命令 作为后面的命令的输入
    比如查找的时候 ls -l /dev |more 即可实现分页处理内容,| grep keyword 实现搜索


    命令连接符
    ; 表示命令的分割,命令的执行结束
    && 命令表示命令进行逻辑与操作,只有前面的命令执行Success后 后面才能继续
    || 逻辑或操作 


    `` 使用命令替换符号
    将命令的输出执行结果,作为执行命令的输入参数
    ls -l `which cd`
    这个用法 执行顺序 根 管道相反


    知识点 22
    用户管理
    用户信息文件 /etc/password -------chenwenguangrr:x:500:500:chen:/home/chenwenguangrr:/bin/bash 格式 uname;密码位x;UID;GID缺省的组;注释性描述;宿主目录;Shell解释器
    uid=0 的用户root 就是超级用户,,,uid 是自增的
    500-60000 --普通用户,最大用户数 可以自增的更改的
    1-499 -------伪用户,伪用户 (1 系统服务,2软件服务),使用对应 的身份做相应权限的操作,不能登录系统,没有宿主目录

    用户组 role-group
    用户组定义用户的身份角色
    1 每个用户至少包含在一个默认的用户组
    2 一个用户可以归属多个组
    3 所在改组的用户 享有改组的权限

    宿主目录:用户登录后,所在的目录地址,默认为此用户在/home/username.....:例如/home/wangwang




    用户密码文件 /etc/shadow
    主流密码加密算法
    RSA 对称密钥 ,私钥+公钥的方式
    MD5 255位的输出字符
    DES 只能识别8位。前8位一旦正确就可以识别

    用户名:密码:最后更改的时间
    wangyang:$6$aSvP5py/$Jn.n3tbuujyc5wskuQ1dKQFpkGO0MDSF/tGzFszYnA/WorXLGQ/t1jccO2Ain2Yksc85eNFGhG/.0gQVmtATM0:16735:0:99999:7
    密码位一旦擦除,那么登录就不需要密码了!!!!!!!!!!!!!!!!!!


    用户的一般操作
    useradd--添加
    userdel--删除
    passwd--设置 更新密码

    用户组的一般操作
    groupadd
    groupdel 
    groupmod --修改用户组
    linux里,并没有像windows的net user,net localgroup这些方便的命令来管理用户.

    (1)在终端里.其实只需要查看 /etc/passwd文件就行了.

    (2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.


    或者用cat /etc/passwd |cut -f 1 -d :

    2、用户管理命令

    useradd 注:添加用户

    adduser 注:添加用户

    passwd 注:为用户设置密码

    usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

    pwcov 注:同步用户从/etc/passwd 到/etc/shadow

    pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

    pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

    finger 注:查看用户信息工具

    id 注:查看用户的UID、GID及所归属的用户组

    chfn 注:更改用户信息工具

    su 注:用户切换工具

    sudo 注:sudo 是通过另一个用户来执行命令(execute a
    command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo
    能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo
    来编辑/etc/sudoers来实现;

    visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

    sudoedit 注:和sudo 功能差不多;

    3、管理用户组(group)的工具或命令;

    groupadd 注:添加用户组;

    groupdel 注:删除用户组;

    groupmod 注:修改用户组信息

    groups 注:显示用户所属的用户组

    grpck

    grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

    grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

    groups 查看当前登录用户的组内成员
    groups gliethttp 查看gliethttp用户所在的组,以及组内成员
    whoami 查看当前登录用户名

    /etc/group文件包含所有组
    /etc/shadow和/etc/passwd系统存在的所有用户名

    1、/etc/group 解说;

    /etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户家目录的文件,如果root用户把某个文件 的读写执行权限开放,root用户组的所有用户都可以修改此文件,如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的;

    用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去,

    2、/etc/group 内容具体分析

    /etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:

    group_name:passwd:GID:user_list

    在/etc/group 中的每条记录分四个字段:

    第一字段:用户组名称;

    第二字段:用户组密码;

    第三字段:GID

    第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;

    命令快捷:
    用户:
    id 查询当前用户的信息和组信息
    vipw 锁定并编辑用户信息文件 /etc/password
    su 临时切换用户
    设置用户密码:echo '密码' | password --stdin 用户名



    -----------------------系统升级更新-----------------
    yum update----------将更新所有的软件依赖包



    -----------------------------------------进程管理----------------------------------------------------------
    知识点 23
    程序vs进程
    运行一个程序,可能要开始几个进程进行支持,1+
    一个进程可以有多个线程

    ps 命令查看系统运行的进程信息
    kill 杀死进程
    xkill 关闭图形进程
    killall关闭所有匹配的进行
    pgrep 查询服务进程的编码
    pkill 关闭进程id的进程
    kill -9 进程号--------强行关闭
    kill -1 进程号--------强行重启

    快捷键:CTRL+Z ---------进程挂起
    CTRL+C -----进程结束

    nohup 用来创建任务执行进程
    例如”nohup 命令 &------------使用&字符来声明一个后台进程

    jobs ----------查看当前挂起的进程
    进程的恢复
    fg--恢复前台进程
    bg---恢复后台进程


    top ----展示当前正在运行的程序的动态的信息


    计划任务

    at --------在某一时刻执行
    batch ------在系统负载不严重的时候 执行一次
    crontab -----进行周期性的任务

    比如nginx
    为了操作方便,可以自己写一个nginx命令脚本,放到/etc/init.d下,并赋予其执行权限即可,详见附件,执行方法如下:

    启动:service nginx start

    停止:service nginx stop

    重启:service nginx rerestart

    查看状态:service nginx status


    nice----新建一个进程并设置优先级
    renice ---进行进程的优先级的调整






    -----------------------------------------文件系统----------------------------------------------------------
    /usr/bin '/bin 下面 存放所有用户可以执行的命令
    /usr/sbin 、/sbin 下面存放仅仅root用户可以执行的命令
    /home linux用户的宿主目录
    /proc 虚拟文件系统,存放当前系统镜像 mirror,没有物理文件,而是存放在系统运行的内存中
    /dev 存放设备文件,所有的文件都以文件的形式 存放在这个目录
    /lib 存放系统运行所需要的共享库 library
    /lost+found 存放系统检测出的错误的结果
    /tmp 存放临时文件,有个特殊的权限,给Other 一个t 权限,代表此只有自己所有这个文件的 才可以删除,任何人都有读写权限
    /etc 存放配置文件-------------查看其目录大小:du -sh /home
    /var 包含经常变动的文件,邮件 日志文件 计划任务等
    /usr 存放了系统的几乎所有的命令 库 手册页等,非常庞大,相当于 Windows的 系统目录 如:c:/windows
    ------但是/usr/local 下面 存放了 我们安装的第三方软件,相当于windows 系统的 c:/program files

    /mnt 临时文件系统的默认挂载点,如软盘 CD/DVD ,U盘,移动硬盘
    /boot 存放启动项内容,自举程序文件,如内核

    命令集合
    df 查看系统的分区情况

    du ---查看文件或者目录大小du -sh /home

    file ---检测文件类型

    fsck ,e2fsck ---检测文件的完整性,e2fsck命令用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误。(必须进入单用户模式)
    -------切忌:不要直接删除文件,应该为当前用户创建一个垃圾回收站的目录,将不使用的文件,mv 到此目录,而不是强制删除

    把当前目录下面的file(不包括目录),移动到/opt/shell
    ls /root/pythonTest/*.py | xargs -I '{}' mv {} /backup/

    find . -type f -exec mv {} /opt/shell ;
    find . -type f | xargs -I '{}' mv {} /back





    cdrom 或者其他软盘在Linux系统使用的时候 需要创建临时目录进行创建挂载点
    一般临时目录 挂载点 我们都放在/mnt 下面
    挂载命令
    mount /dev/cdrom /mnt/cdrom
    [root@localhost /]# mount /dev/cdrom /mnt/cdrom/
    mount: block device /dev/sr0 is write-protected, mounting read-only
    -------------必须将光盘填进去或者在虚拟机下 必须连接光盘CD/DVD ROM
    ----------block device :块设备
    ----------charset device :字节设备;如打印机 终端

    卸载

    eject ----弹出

    ------------------------------------文件备份--------------------------------------------------------------
    周期性的就行完全备份和定时性的追加备份
    做任务进行命令方式的执行,将数据备份到其他服务器,也可以使用raid的方式进行硬盘备份
    并建立备份日志,记录备份的原因 以及结果
    ---------备份时间 备份文件地址 备份使用的命令 备份人员----------------
    使用基于简单的文件 拷贝 cp+文件和目录的打包 压缩到文件,然后把压缩文件 上传的远程服务器--scp 命令
    scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。


    ------------------------------------网络设置的配置文件--------------------------------------------------------------

    /etc/services-------网络服务信息文件
    /etc/hosts-----------主机名数据缓存文件
    /etc/rc.d/init.d/network---------网络启动脚本

    命令 nmap IP 用来扫描主机的端口
    netstat ---------当前网络状态信息

    vi /etc/ssh/sshd_config
    取消22前面的#号注释
    增加一行Port 端口号
    [root@localhost ~]# /etc/init.d/sshd restart
    测试通过后 再去掉22,开启了防火墙的话,把目标端口开放出去---如果您有设置防火墙,请修改增加防火墙规则,或者直接关闭防火墙也行
    现在编辑防火墙配置:vi /etc/sysconfig/iptables
    启用50000端口。  执行/etc/init.d/iptables restart

    之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,
    万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。


    ------------------------------------Vim的使用--------------------------------------------------------------


    Linux的软件包管理
    RPM 
    YUM 两种管理方式
    YUM 成功解决了 软件二进制包之间的关联,使用基于软件仓储的方式,从指定的位置进行软件的版本 安装管理
    yum install 安装
    yum remove 卸载
    yum update 更新升级
    yum check --update 检查更新
    yum list 
    安装软件(以foo-x.x.x.rpm为例):yum install foo-x.x.x.rpm
    yum常用命令
    yum常用命令
    删除软件:yum remove foo-x.x.x.rpm或者yum erase foo-x.x.x.rpm
    升级软件:yum upgrade foo或者yum update foo
    查询信息:yum info foo
    搜索软件(以包含foo字段为例):yum search foo
    显示软件包依赖关系:yum deplist foo

      -e 静默执行 
      -t 忽略错误
      -R[分钟] 设置等待时间
      -y 自动应答yes
      --skip-broken 忽略依赖问题
      --nogpgcheck 忽略GPG验证

      check-update 检查可更新的包
      clearn 清除全部
      clean packages 清除临时包文件(/var/cache/yum 下文件)
      clearn headers 清除rpm头文件
      clean oldheaders 清除旧的rpm头文件
      deplist 列出包的依赖
      list 可安装和可更新的RPM包
      list installed 已安装的包
      list extras 已安装且不在资源库的包
      info 可安装和可更新的RPM包 信息
      info installed 已安装包的信息(-qa 参数相似)
      install[RPM包] 安装包
      localinstall 安装本地的 RPM包
      update[RPM包] 更新包
      upgrade 升级系统
      search[关键词] 搜索包
      provides[关键词] 搜索特定包文件名
      reinstall[RPM包] 重新安装包
      repolist 显示资源库的配置
      resolvedep 指定依赖
      remove[RPM包] 卸载包

    RPM 相关
    卸载 
    rmp -e softwareName
    安装
    rmp -ivh(显示详细) h( 用# 进度提示) --test 安装测试(并不进行物理实际安装仅仅进行测试安装)
    rpm -ivh --replacepkgs sudo-1.8.6p7-11.el7.x86_64.rpm 


    作为一个软件包管理工具,RPM管理着系统已安装的所有RPM程序组件的资料。我们也可以使用RPM来卸载相关的应用程序。
    rpm -e xv
    RPM的常用参数还包括:
    -vh:显示安装进度;
    -U:升级软件包;
    -ql :软件在系统中安装的文件列表 所在目录
    -qpl:列出RPM软件包内的文件信息;
    -qpi:列出RPM软件包的描述信息;
    -qf:查找指定文件属于哪个RPM软件包;
    -Va:校验所有的RPM软件包,查找丢失的文件;
    -qa: 查找相应关联文件,如 rpm -qa mysql
    -qi :查询软件信息
    -qip:查询软件包 未安装的包的信息
    -qf :查询软件的安装来源

    1、卸载openjdk
    查看目前系統的jdk: rpm -qa | grep jdk(我这里找到的是:java-1.6.0-openjdk-1.6.0.0-1.43.1.10.6.el6_2.i686),如果找不到可以用rpm -qa | grep gcj
    移出系统自带的jdk: yum -y remove java-1.6.0-openjdk-1.6.0.0-1.43.1.10.6.el6_2.i686,如图所示:
    yum -y remove java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64
    yum -y remove java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64

    (如果安装包有依赖关系 使用--nodeps 来强制卸载)

    jdk 的环境变量
    解压缩刚才下载的: jdk-7u75-linux-x64.tar.gz包,命令如下:
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    tar xvf jdk-7u75-linux-x64.tar.gz 

    六:解压完成后,进入到:
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    [root@localhost~]# cd /etc  
    [root@localhost etc]# vi profile  
    在profile文件的末尾加入如下命令:
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
    export JAVA_HOME=/usr/local/java/jdk1.7.0_75  
    export JRE_HOME=/usr/local/java/jdk1.7.0_75/jre  
    export PATH=$PATH:/usr/local/java/jdk1.7.0_75/bin  
    export CLASSPATH=./:/usr/local/java/jdk1.7.0_75/lib:/usr/local/java/jdk1.7.0_75/jre/lib 

    输入:wq保存并退出

    让/etc/profile文件修改后立即生效 ,可以使用如下命令:

    # . /etc/profile

    注意: . 和 /etc/profile 有空格.
    ############################
    export JAVA_HOME=/usr/java/jdk1.7

    export JAVA_BIN=/usr/java/jdk1.7/bin

    export PATH=$PATH:$JAVA_HOME/bin

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    ############################

    Linux 引导
    bios
    内核
    服务主进程

    Linux 命令

    ******************使用Tab 键进行命令补全***********


    Linux 可以使用命令别名
    alias copy=cp -----------------------命令别名
    alias delAllDir="drm -" 进行带参数的别名
    unalias copy 移除别名

    命令执行权限 Root用户的 sbin or user/sibin
    普通用户的 bin/ or user/bin

    命令 选项 参数 

    cd 用来切换文件目录
    su - 用来切换登录用户
    pwd 显示当前目录位置
    logname 登录者名称
    ls 列出当前目录的文件
    mkdir 创建目录
    rmdir 移除目录
    whoami 当前登录者
    write 向系统用户发送消息(使用方法 write username 然后回车 就可以发送消息了;回复其他用户的话 需要 指定用户 再次write 指定用户;)

    logout 退出登录
    exit 退出终端
    man yourcmd 命令提示
    cmd --help 命令提示
    ifconfig 网卡设置
    date 系统日期
    hwclock 系统固件时间
    -s, --hctosys set the system time from the hardware clock
    -w, --systohc set the hardware clock from the current system time
    clear =ctrl+l 进行清屏
    清除行命令内容=ctrl+u


    Linux对所有的设备都是以文件的形式进行管理
    整个文件从/作为根 呈现树形管理结构
    除了/ 字符 ,都可以作为文件的命名字符(不建议 @#$ 空格 - & Tab制表符等容易混淆的字符)

    区分大小写

    用. 开头 的代表是隐藏文件


    作为参数的 时候 . 当前目录 ..上一级目录


    useradd --添加用户
    passwd --设置用户密码

    su 切换用户

    #开头的信息均是注释信息


    vi 文本编辑器 (建议还是使用NotePad++编辑好后 放回去得了。。。。。)
    进入编辑器后,我们先按"I”,即切换到“插入”状态。就可以通过上下左右移动光标,或空格、退格及回车等进行编辑内容了,和WINDOWS是一样的了
    我们要按键盘左上角的"ESC",留意到了没有?左下角的插入状态不见我们输入“冒号”,即":"(不需双引号),在下方会出现冒号,等待输入命令,如图,我输入的是WQ。功能如下。

    W:write,写入

    Q:quit,退出

    再回车,就保存退出了

    其实,保存退出还有二个方法:

    A:在最后输入命令时,直接输入"x",也是一样的,即X=WQ。

    B:最快捷的方法:按了ESC后,直接按shift+zz,或者切换到大写模式按ZZ,就可以保存退出了,即是按2下大写的Z。

    当编辑完文件,准备退出Vi返回到shell时搜索,可以使用以下几种方法之一。
      在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。
      在末行模式下,输入命令  :w
      Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。  [例6]
      :w newfile
      此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:
      File exists (use ! to override)
      此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令
      :w! newfile
      否则可选择另外的文件名来保存当前文件。
      在末行模式下,输入命令  :q
      系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:
      No write since last change (use ! to overrides)
      提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令  :q!
      Vi放弃所作修改而直接退到shell下。
      在末行模式下,输入命令  :wq
      Vi将先保存文件,然后退出Vi返回到shell。
      在末行模式下,输入命令  :x
      该命令的功能同命令模式下的ZZ命令功能相同。


    1 命令模式(默认) 2 插入模式 (i a o)(esc 回去命令) 3 编辑模式 (使用 : +命令如 set number)


    vi 文件名(打开或者创建文件)
    a 光标后
    A行后
    i 光标前
    I 行前
    o光标下
    O 光标上


    h ← j ↓ k ↑ l →( 双曲线模式)
    $ 行尾部
    0 行首部

    H 屏幕上端
    M 中央
    L 下方


    设置行号 :set number ->set nu
    取消行号 :set nonumber->set nonu

    gg 到第一行
    G 最后一行

    number G 跳到第几行 如8G
    或者使用 :8

    删除命令
    x 删除光标所在的字符
    nx删除光标后的n个字符
    dd 删除光标所在行
    ndd删除光标后的n行
    D删除光标所在处到行末尾

    dG删除光标所在行到末尾

    :n1, n2d 删除指定区间的行


    复制命令
    yy 或者 Y 来复制当前行
    nyy 或者nY 复制多少行
    dd 剪切当前行
    ndd 剪切当前向下多少行
    p 或者P 粘贴 当前行下 或者光标所在行上


    替换命令
    r 替换光标所在字符 (到指定的字符光标,敲击r键 ,然后输入你想替换的字符)
    R 从光标所在处开始替换 按ESC结束(敲击R后,开始进行替换编辑)
    u 撤销上一次命令


    /string 从前往后搜索指定的字符串 :set ic 忽略大小写,然后 小写n 从前往后 ,N 从后往前

    文件搜索命令

    whatis 
    命令帮助信息


    man 1 命令 命令帮助
    man 5 配置 配置的帮助信息

    info 类似man 命令 只不过显示不同


    grep 从文件内容中匹配内容
    grep 关键词 文件名


    locate 文件查询
    从定期更新的系统数据库中进行文件索引查询
    配合updatedb 强制进行文件内容的更新,所以比较适合查询一些系统中的文件,否则需要updatedb后才能查询精确结果
    效率更好

    which --进行命令的搜索定位,文件目录
    whereis --文件的绝对目录+帮助文件

    find --可以找到任何的 文件
    para1 范围
    para2 条件匹配格式 安装名称等 iname name
    para3 value

    通配符 * 任意多字符 包括0个字符串
    ?表示单个任意字符

    iname --忽略大小写的搜素
    name-- 不忽略大小
    size --安装大小搜 ,+大于,- 小于(数据库块的转化 1block=512byte=0.5kb)

    user --安装创建用户查询
    ctime atime mtime 天 24小时
    cmin amin mmin 分钟 - 之内 +超过
    (c=change 文件属性被修改;
    a=access 访问;
    m=modify 文件内容被修改)

    type 文件类型
    l 软连接文件
    d 目录
    f 二进制文件

    inum --对应文件的inode 

    多个条件 进行条件拼接  
    -a and
    find /dev -size +1000 -a -name init*
    -o or

    -exec 命令 {} ; ----------用来实现find结果集的逐命令操作
    {}代表find 查询的结果 转义符号 ;代表结束
    -ok 用来在逐步执行的时候 进行确认操作

    权限处理命令
    chmod
    ? +-=操作
    u

    o
    r=4 2x2 0100
    w=2 2x1 0010
    x=1 2x0 0001
    -=0 0000
    进行数值的权限 修改操作 ,系统进行逻辑与 &操作 进行权限的更新


    umask 查看/更改 默认权限(不推荐更改)
    0022
    0--特殊权限位
    022---用户权限,权限掩码
    777
    -022= 755 
    默认创建的文件 没有可以执行的权限x 

    ----------------更改操作 umask 掩码值=777-your permission 


    文件操作命令

    cat ---concatenate 内容查阅
    more --分页浏览文件内容 使用回车 进行行读 空格键进行页读取
    head --默认10行 -行数 文件名 查看前几行的内容
    tail --最后几行
    ln --link (-s ) from to 生成链接 (软链接-> lrwxrwxrwx; 硬链接 文件的硬指向映射跟源文件的属性一致 )
    软链接 生成link 文件 指向源文件 sourcefille 地址,可以跨分区到不同的位置
    硬链接 hard link 存储的就是文件的本身地址内容拷贝,同步更新,与源文件有相同的inode,每个文件都有节点值,不能拷贝到不同的分区


    touch 创建文件(默认创建的二进制文件不具备执行 x 权限)
    mkdir 创建目录
    rmdir 删除空目录
    rm -remove 删除文件或目录
    mv -move 剪切或者重命名 from to
    cp -copy 复制文件 from to


    sudo 命令 启用超级管理员的权限 进行操作

    使用 inconfig 或查看或者更高联网设置
    su 命令 进行登录的临时身份的切换
    clear 清除控制台的命令


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

    linux下文件夹的创建、复制、剪切、重命名、清空和删除命令 .


    在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz

    一、目录创建

    在/home/wwwroot目录下新建一个sinozzz123的文件夹

    mkdir /home/wwwroot/sinozzz123

    二、目录复制

    1.把/home/wwwroot/sinozzz里面的文件和文件夹等复制到home/wwwroot/sinozzz123目录下

    cp -rf /home/wwwroot/sinozzz/* /home/wwwroot/sinozzz123

    2.把/home/wwwroot/sinozzz123/abc/下的文件夹和文件复制到home/wwwroot/sinozzz123目录下

    cp -rf /home/wwwroot/sinozzz123/abc/* /home/wwwroot/sinozzz123

    3.把/home/wwwroot/sinozzz目录复制到/home/wwwroot/sinozzz123目录下,即把sinozzz复制变成sinozzz123的子目录,变成/home/wwwroot/sinozzz123/sinozzz的路径

    cp -rf /home/wwwroot/sinozzz /home/wwwroot/sinozzz123

    三、目录剪切

    1.使用mv命令剪切文件。

    如需要将/home/wwwroot/sinozzz123/music/目录下的1.mp3文件剪切到/home/wwwroot/sinozzz123/abc目录下,执行下面的命令即可:

    # mv /home/wwwroot/sinozzz123/music/1.mp3 /home/wwwroot/sinozzz123/abc

    2.使用mv命令剪切文件夹。

    把/home/wwwroot/sinozzz123/soft文件夹剪切到/home/wwwroot/sinozzz123/abc目录下

    # mv /home/wwwroot/sinozzz123/soft /home/wwwroot/sinozzz123/abc

    3.使用mv命令剪切文件夹和文件

    把/home/wwwroot/sinozzz123/photo/下的文件夹和文件剪切到/home/wwwroot/sinozzz123/abc目录下

    # mv /home/wwwroot/sinozzz123/photo/* /home/wwwroot/sinozzz123/abc

    四、目录重命名

    在linux下,移动文件跟重命名都是同一个命令,mv(就是move的意思)

    命令: mv 源文件名 目标文件名

    1.把/home/wwwroot/sinozzz123/index.htm重命名为/home/wwwroot/sinozzz123/index.html

    # mv /home/wwwroot/sinozzz123/index.htm /home/wwwroot/sinozzz123/index.html

    2.把/home/wwwroot/sinozzz123目录重命名为/home/wwwroot/sinozzz456

    # mv /home/wwwroot/sinozzz123 /home/wwwroot/sinozzz456

    五、目录删除

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。

    直接rm就可以了,不过要加两个参数-rf

    即:rm -rf 目录名字

    -r 就是向下递归,不管有多少级目录,一并删除

    -f 就是直接强行删除,不作任何提示的意思

    1.删除文件使用实例:

    rm -f /home/wwwroot/sinozzz456/index.html

    将会强制删除/home/wwwroot/sinozzz456/index.html这个文件

    2.清空文件夹实例:

    rm -rf /home/wwwroot/sinozzz456/abc/*

    将会强制删除/home/wwwroot/sinozzz456/abc目录下所有文件、文件夹,保留/home/wwwroot/sinozzz456/abc目录

    3.删除文件夹实例:

    rm -rf /home/wwwroot/sinozzz456

    将会强制删除/home/wwwroot/sinozzz456目录以及其下所有文件、文件夹

    需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的

    当然,rm还有更多的其他参数和用法,man rm就可以查看了

    如果是在/home/wwwroot/目录下进行操作,则可以省去每个命令的/home/wwwroot/部分


    vi、touch是创建文件的命令,cp、mv也算是吧,因为cp是拷贝文件,mv是移动文件另外还有好多命令能够创建文件,
    之要该命令能够重定向输出到一个不存在的文件,就会创建文件。
    例如搜索tail -f -n 200 /usr/local/tomcat/logs/catalina.out > /tmp/tomcatlog.log //将tomcat日志文件的最后200行内容写入到/tmp/tomcatlog.log文件中,如果/tmp/tomcatlog.log文件不存在,则会创建该文件,如果存在,则覆盖原文件的内容。下面的类同:echo nihao > /tmp/echo.txtcat testcat > /tmp/cat.txtless testless > /tmp/less.txt


    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ls 命令 
    -a all
    -l 长格式long
    -d 当前目录

    drwxrwxr-x. 3 Tom Tom 17 4? 5 13:53 .cache
    第一列
    drwxr-xr-x 
    第一个字母 文件类型
    d 代表是dir 
    - 代表的是二进制文件
    l 代表软链接文件 link
    b 可供储存的接口设备(可随机存取装置);
    c 串行端口设备,例如键盘、鼠标(一次性读取装置)
    rwx r-x r-x 
    第一组-u 代表权限(u文件所有者user/ owner 所属组 g -group 其他others)
    r-read w-write x-excute(File)
    r-读取文件夹中的内容 w-写入删除文件夹中的内容 x-是否可以进去目录(Dir)
    文件File 会跟从其所在的目录的权限,被目录权限覆盖


    第二组-g 是用户组权限

    第三组-o 是Others 其他用户的执行访问权限

    第二列
    硬链接数

    第三列 
    所有者

    第四列
    所属组


    第五列 
    文件大小(不是很准确)单位 :数据块 block =512bytes=0.5K

    第六列
    文件创建/修改时间

    最后列 
    文件名
    ------------------------------------------------------------------------------------------------------------------------------


    在64位的Windows下 不能为32位的Linux共享网络??????????

    Linux 教程相关
    http://www.santongit.com/forum-91-1.html
    http://www.santongit.com/thread-6962-1-1.html
    http://dl.dbank.com/c091c0i6hq
    http://www.gogo.so/topics/2970627/


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

    Centos 6.4 python 2.6 升级到 2.7 
    查看python的版本

    01.#python -V  
    02.Python 2.6.6 


    1.下载Python-2.7.3

    01.#wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 


    2.解压 
    01.#tar -jxvf Python-2.7.3.tar.bz2 


    3.更改工作目录 

    01.#cd Python-2.7.3 


    4.安装 

    01.#./configure  
    02.#make all  
    03.#make install  
    04.#make clean  
    05.#make distclean 


    5.查看版本信息 

    01.#/usr/local/bin/python2.7 -V 


    6.建立软连接,使系统默认的 python指向 python2.7


    01.#mv /usr/bin/python /usr/bin/python2.6.6  
    02.#ln -s /usr/local/bin/python2.7 /usr/bin/python

  • 相关阅读:
    [Windows Server 2012] SQL Server 备份和还原方法
    [Windows Server 2012] 更改服务器密码
    [Windows Server 2012] 初识Windows Server 2012
    [Windows Server 2012] 更换PHP版本方法
    [Windows Server 2008] IP安全策略限制端口方法
    [Windows Server 2008] Windows防火墙设置
    [Windows Server 2003] 初识Windows Server 2003
    [Windows Server 2003] 手工创建安全网站
    Codeforces Round #324 (Div. 2) Dima and Lisa 哥德巴赫猜想
    Codeforces Round #324 (Div. 2) Marina and Vasya 乱搞推理
  • 原文地址:https://www.cnblogs.com/chengjian-physique/p/12717007.html
Copyright © 2011-2022 走看看