Pārlūkot izejas kodu

update::更新linux,ssr相关

tujidelv 6 gadi atpakaļ
vecāks
revīzija
012ffac384

+ 20 - 43
source/_posts/os-linux-basic.md

@@ -1,5 +1,5 @@
 ---
-title: Linux 札记:基础
+title: Linux 系统入门:基础
 date: 2018-12-23 17:33:08
 categories:
 - 操作系统
@@ -7,7 +7,7 @@ tags:
 - linux
 ---
 
-# Linux 札记:基础
+# Linux 系统入门:基础
 
 ## 目录
 
@@ -242,27 +242,6 @@ tags:
 	http://mirrors.163.com
 ```
 
-### 程序管理
-
-```
-linux应用程序的组成部分:二进制程序、库文件、配置文件、帮助文件
-	二进制程序:可执行文件,一个应用程序可有多个二进制程序
-		/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
-	库文件:可执行文件,不能独立执行,只能被调用时执行,一般有2类,一类是多个程序之间的共享库,一类是自己能够被其他人做二次开发时调用的接口
-		/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
-	配置文件:可被查看其内容的文件
-		/etc,/etc/DIRECTORY,/usr/local/etc
-	帮助文件:可被查看其内容的文件
-		/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc
-程序包管理器:不同的发行版所用的包管理器是不一样的
-	程序的组成文件打包成一个或有限几个文件
-	安装
-	卸载
-	查询
-rpm:rhel,fedora,centos,S.u.S.e
-dpt:debian,ubuntu
-```
-
 ### linux的哲学思想
 
 - 一切皆文件。把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等。
@@ -371,11 +350,7 @@ dpt:debian,ubuntu
     	内核(只有它能直接操作硬件),内核把整个硬件封装了起来,把所有硬件提供的功能转换成了系统调用
     	系统调用
     	库函数,由程序员开发的一堆程序片断,不能独立运行,只有被调用时运行。由glibc提供
-    	应用程序,编译方式如下:
-    		动态编译:程序研发时调用了库函数,程序单独编译完后,明确指明库的调用入口,程序要运行必要要把库装在进内存
-    			能够大大节约内存资源
-    		静态编译:程序在编译时直接把要调用的库复制到程序内部来,程序体积比动态编译体积大
-    			程序挪到任何系统上都能运行,缺点是对内存和体积都不利
+    	应用程序,需编译成对应FS系统的二进制可执行格式
     进程的类型:
     	与终端相关:通过终端启动
     	与终端无关:操作系统引导启动过程当中自动启动
@@ -866,13 +841,14 @@ Linux安全上下文:
     	4.定期更换
     加密:
     	注意:密钥长度越长,加密时所需要的计算量越大,所以也就越慢,所以非对称加密比对称加密据说慢3个数量级(10^3)
-    	对称加密:加密和解密使用同一个密钥
-    		plain text(明文) -->加密算法+密钥 -->cipher text(密文)	
-    		cipher text(密文) -->解密算法+密钥 -->plain text(明文)
-    	非对称加密:加密和解密使用一对儿密钥(使用公钥加密的只能使用与之配对的私钥解密)
-    		密钥对儿:
-    			公钥:public key
-    			私钥:private key
+    	公钥加密:
+            对称加密:加密和解密使用同一个密钥
+                plain text(明文) -->加密算法+密钥 -->cipher text(密文)	
+                cipher text(密文) -->解密算法+密钥 -->plain text(明文)
+            非对称加密:加密和解密使用一对儿密钥(使用公钥加密的只能使用与之配对的私钥解密,反之亦然)
+                密钥对儿:
+                    公钥:public key
+                    私钥:private key
     	单向加密:只能加密,不能解密;用于提取数据特征码。例如人来了可以提取指纹,却不能通过指纹把人还原出来
     		特性:
     			定长输出:跟原来的数据量的多少没关系
@@ -914,7 +890,8 @@ Linux安全上下文:
     ```
     SUID:
         (1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限;
-        (2)启动为进程之后,其进程的属主为原程序文件的属主。
+        (2)一旦某可执行文件被设定了SUID,启动为进程之后,其进程的属主为原程序文件的属主,而不是发起者。
+            打破了安全上下文的规则。例如passwd命令的"提权"机制。
 
         权限设定:
             chmod u+s FILE...
@@ -928,7 +905,7 @@ Linux安全上下文:
             chmod g-s DIR...
     STICKY:
         (1)对于一个多人可写的目录,即便对别人的文件没有写权限也可以删除它,
-        (2)如果设置了sticky,则每个用户仅能删除自己的文件。
+        (2)如果设置了STICKY,则每个用户仅能删除自己的文件。
     
         权限设定:
             chmod o+t DIR...
@@ -943,12 +920,12 @@ Linux安全上下文:
         SUID:owner,占据属主的执行权限位
             s:属主拥有x权限
             S:属主没有x权限
-        SUID:group,占据属组的执行权限位
-            s:属拥有x权限
-            S:属没有x权限
-        SUID:other,占据其他的执行权限位
-            s:其他拥有x权限
-            S:其他没有x权限
+        SGID:group,占据属组的执行权限位
+            s:属拥有x权限
+            S:属没有x权限
+        STICKY:other,占据其他的执行权限位
+            t:其他拥有x权限
+            T:其他没有x权限
     ```
     ![抱歉,图片休息了](os-linux-basic/os-linux-basic-004.png)
     ![抱歉,图片休息了](os-linux-basic/os-linux-basic-005.png)

+ 212 - 5
source/_posts/os-linux-command.md

@@ -1,5 +1,5 @@
 ---
-title: Linux 札记:常用命令
+title: Linux 系统入门:常用命令
 date: 2018-12-31 15:10:20
 categories:
 - 操作系统
@@ -7,7 +7,7 @@ tags:
 - linux
 ---
 
-# Linux 札记:常用命令
+# Linux 系统入门:常用命令
 
 ## 目录
 
@@ -30,7 +30,7 @@ tags:
         显示命令的完整路径
         ```
     - 命令格式
-        ```jshelllanguage
+        ```
         ~]# which [options] [--] programname [...]
         ```
     - 命令参数
@@ -43,7 +43,7 @@ tags:
         增强版的which命令,会显示路径、源码文件、手册页
         ```
     - 命令格式
-        ```jshelllanguage
+        ```
         ~]# whereis [options] [-BMS directory... -f] name...
         ```
     - 命令参数
@@ -59,7 +59,7 @@ tags:
             whatis能够在数据库里以我们指定的关键字去查找相应的说明
         ```
     - 命令格式
-        ```jshelllanguage
+        ```
         ~]# whatis [-dlv?V] [-r|-w] [-s list] [-m system[,...]] [-M path] [-L locale] [-C file] name ...
         ```
 - `echo`
@@ -93,6 +93,101 @@ tags:
         [root@host ~]# echo "$SHELL"
         /bin/bash
         ```
+- `watch`
+    - 命令功能
+        ```
+        阶段性地执行指定的COMMAND
+        ```
+    - 命令格式
+        ```
+        ~]# watch [-n #] <COMMAND>
+        ```
+    - 命令参数
+        ```
+        -n #: 指定刷新间隔时间,单位是秒
+        ```
+    - 命令实例
+        ```
+        [root@host ~]watch -n1 'ifconfig -eth0'
+        ```
+
+### ***待处理***
+
+```
+virt-what   用于查看服务器是kvm还是xen架构的虚拟化
+netstat -tunlp | grep 端口号    用于查看指定端口号的进程情况	
+	-t  tcp协议相关
+	-u  udp协议相关
+	-n  以数字显示IP和端口
+	-l  处于监听状态
+	-p  显示相关进程及PID
+ps:显示进程状态
+    常用组合:aux
+        u: 以用户为中心组织进程状态信息显示
+        a: 与终端相关的进程;
+        x: 与终端无关的进程;
+    常用组合:-ef
+        -e: 显示所有进程
+        -f: 显示完整格式程序信息
+top:
+    有许多内置命令:
+        排序:
+            P:以占据的CPU百分比;
+            M:占据内存百分比;
+            T:累积占据CPU时长;
+        首部信息显示:
+            uptime信息:l命令
+            tasks及cpu信息:t命令
+                cpu分别显示:1 (数字)
+            memory信息:m命令
+        退出命令:q
+        修改刷新时间间隔:s
+        终止指定进程:k
+    选项:
+        -d #: 指定刷新时间间隔,默认为3秒;
+        -b: 以批次方式;
+        -n #: 显示多少批次;
+kill:向进程发送控制信号,以实现对进程管理
+    显示当前系统可用信号:
+        # kill -l
+        # man 7 signal
+    常用信号:
+        1) SIGHUP: 无须关闭进程而让其重读配置文件;
+        2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;
+        9) SIGKILL: 杀死正在运行的进程;
+        15) SIGTERM:终止正在运行的进程;
+        18) SIGCONT:
+        19) SIGSTOP:
+    指定信号的方法:
+        (1) 信号的数字标识;1, 2, 9
+        (2) 信号完整名称;SIGHUP
+        (3) 信号的简写名称;HUP
+    向进程发信号:
+        kill [-SIGNAL] PID...
+lsof -i:端口号
+    用于查看某一端口的占用情况
+crontab:定时任务
+    crontab [-u user] [-l | -r | -e] [-i] 
+        -l: 列出所有任务;
+        -e: 编辑任务;
+        -r: 移除所有任务;
+        -i:同-r一同使用,以交互式模式让用户有选择地移除指定任务;
+        -u user: 仅root可运行,代为为指定用户管理cron任务;
+chkconfig:开机自启
+    --list:查看哪些服务开机自动运行
+    --add SRV_SCRIPT:添加脚本到开机自动启动项目中
+    --del SRV_SCRIPT:删除
+    SRV_SCRIPT on|off:配置某服务是否开机自动运行
+wget:网络客户端工具
+    wget [option]... [URL]...
+        -q: 静默模式
+        -c: 续传
+        -P 保存位置
+        --limit-rates=: 指定传输速率
+rz
+sz
+scp
+```
 
 ### ***日期相关***
 
@@ -293,6 +388,34 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
 
 ### ***文件管理***
 
+- `dd`
+    - 命令功能
+        ```
+        convert and copy a file(转换并复制文件),cp是通过文件系统复制的,而dd是通过块接口复制的,虽然都是复制但dd要底层的多,效率更高
+        ```
+    - 命令格式
+        ```
+        ~]# dd if=/PATH/FROM/SRC of=/PATH/TO/DEST [OPTIONS...]
+        ```
+    - 命令参数
+        ```
+        bs=#:block size, 复制单元大小,单位是字节;
+        count=#:复制多少个bs;
+        ```
+    - 命令实例
+        ```
+        磁盘拷贝:
+            ~]# dd if=/dev/sda of=/dev/sdb
+        备份MBR:
+            ~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
+        破坏MBR中的bootloader:使用bs=512可以快速清除磁盘上的分区表
+            ~]# dd if=/dev/zero of=/dev/sda bs=256 count=1
+            
+            两个特殊设备:
+                /dev/null: 数据黑洞;
+                /dev/zero:吐零机;
+        ```
+
 - `cp`
     - 命令功能
         ```
@@ -1415,6 +1538,90 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
         gnu awk,文本报告生成器
         ```
 
+### ***压缩、解压缩及归档工具***
+
+```
+压缩:根据一定算法
+归档:能实现将多个文件打包成单个文件,即为归档文件
+------------------------
+压缩、解压缩工具:
+    compress/uncompress, .Z
+        早期时候使用的工具,很多程序包的源码以.Z的格式出现,现在很少见到.
+    gzip/gunzip, .gz
+        早期时候非常常用的工具,现在的发行版上依然会使用,采用'LZ77'的压缩算法,压缩比不是特别高,但在早期时候非常快速高效
+        只能压缩文件,不能压缩目录,并且为了节约空间默认会删除原文件,只保留压缩后的文件
+    bzip2/bunzip2, .bz2
+        采用比gzip更为高效的压缩算法(基于LZ77/LZ78),来实现更高压缩比
+        只能压缩文件,不能压缩目录,并且为了节约空间默认会删除原文件,只保留压缩后的文件
+    xz/unxz, xz
+        目前比较推崇使用的工具,xz的压缩比比bzip2更大,CentOS5不支持,需要额外安装
+        只能压缩文件,不能压缩目录,并且为了节约空间默认会删除原文件,只保留压缩后的文件
+归档工具:
+    zip/unzip, zip
+        非常通用的比较古老的工具,各种操作系统基本都支持,不但是一个归档工具还是一个压缩/解压缩工具
+        能对目录进行,将目录下的所有文件(需指明/dir/*)打包成单个文件,再进行压缩
+    tar
+```
+- `gzip/gunzip`
+    ```
+    gzip [OPTION]... FILE ...
+        -d: 解压缩,相当于gunzip
+        -c: 将压缩后的结果输出至标准输出,这样会保留原文件
+            gzip -c /path/to/somefile > /path/to/somecfile.gz
+        -#:指定压缩比,默认为6,范围为1-9,压缩比越大,压缩后生成的文件越小,所消耗的时间越长
+        
+        zcat somefile.gz: 不解压查看gzip压缩后的文件的内容
+    ```
+- `bzip2/bunzip2`
+    ```
+    bzip2 [OPTION]... FILE ...
+        -k: keep, 保留原文件
+        -d:解压缩,相当于bunzip2
+        -#:指定压缩比,默认为6,范围为1-9,压缩比越大,压缩后生成的文件越小,所消耗的时间越长
+        
+        bzcat somefile.gz: 不解压查看bzip2压缩后的文件的内容
+    ```
+- `xz/unxz`
+    ```
+    xz [OPTION]... FILE ...
+        -k: keep, 保留原文件
+        -d:解压缩,相当于unxz
+        -#:指定压缩比,默认为6,范围为1-9,压缩比越大,压缩后生成的文件越小,所消耗的时间越长
+        
+        xzcat somefile.gz: 不解压查看xz压缩后的文件的内容
+    ```
+- `zip/unzip`
+    ```
+    zip ZIPFILE.zip src_file...
+        zip pam.d.zip pam.d/*
+    unzip ZIPFILE.zip
+        -d:解压到指定位置
+    ```
+- `tar`
+    ```
+    tar [OPTION]... 
+        (1) 创建归档
+            tar -c -f /PATH/TO/SOMEFILE.tar FILE...
+            tar -cf /PATH/TO/SOMEFILE.tar FILE...
+        (2) 查看归档文件中的文件列表
+            tar -t -f /PATH/TO/SOMEFILE.tar
+        (3) 展开归档
+            tar -x -f /PATH/TO/SOMEFILE.tar
+            tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR
+            
+        tar可直接通过选项调用压缩工具针对归档文件执行压缩或解压:解压并展开归档时可以不用带以下参数就能自动判断压缩格式
+            -z: gzip
+            -j: bzip2
+            -J: xz
+        -C DIR:解压到指定目录,目录必须事先存在
+    ```
+    
+    
+    
+    
+    
+    
+
 ## 参考链接
 
 ## 结束语

+ 171 - 13
source/_posts/os-linux-shell.md

@@ -1,5 +1,5 @@
 ---
-title: Linux 札记:Shell 脚本
+title: Linux 系统入门:Shell 脚本
 date: 2019-01-02 20:51:18
 categories:
 - 操作系统
@@ -7,7 +7,7 @@ tags:
 - linux
 ---
 
-# Linux 札记:Shell 脚本
+# Linux 系统入门:Shell 脚本
 
 ## 目录
 
@@ -42,6 +42,34 @@ shell脚本编程笔记...
     	注:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字
     注:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码
     ```
+- `bash脚本编程之用户交互`
+    ```
+    # read [option]... [name ...]    从标准输入读入一行,并可将其切割成字段对位放入变量中 
+        -p 'PROMPT':添加提示信息
+            也可这样写:$ echo -n "Enter a user name:";read name
+            对bash而言,在同一行中使用分号隔开,2个命令会顺序执行
+        -t TIMEOUT:设置命令等待的超时时间,单位为秒,在交互中用户如果超时没输入可以在脚本中给默认值
+    # bash -n /path/to/some_script
+    	检测脚本中的语法错误,不能检查逻辑错误
+    # bash -x /path/to/some_script
+        调试(单步)执行,它能显示其中执行的每一个代码的详细过程
+    ```
+    ```
+    #!/bin/bash
+    # Version: 0.0.1
+    # Author: MageEdu
+    # Description: read testing
+
+    read -p "Enter a disk special file: " diskfile
+    [ -z "$diskfile" ] && echo "Fool" && exit 1
+
+    if fdisk -l | grep "^Disk $diskfile" &> /dev/null; then
+        fdisk -l $diskfile
+    else
+        echo "Wrong disk special file."
+        exit 2
+    fi
+    ```
 
 ### 变量
 
@@ -53,6 +81,7 @@ shell脚本编程笔记...
     ```
     字符型:
     数值型:整型,浮点型
+        declare -i name:声明一个整型变量
     ```
 - `变量命名法则`
     ```
@@ -226,18 +255,80 @@ shell脚本编程笔记...
 - `顺序执行`
 - `选择执行`
     ```
-    if 判断条件
-    then 
-        条件为真的分支代码
-    fi
-    ---------------------
-    if 判断条件; then
-        条件为真的分支代码
-    else
-        条件为假的分支代码
-    fi
+    判断条件:
+        a. 根据bash命令的执行状态结果(true或false),具体取决于用到的命令 
+        b. 测试命令
+    if语句可嵌套使用
+    ```
+    ```
+    单分支:
+        if 判断条件; then
+            条件为真的分支代码
+        fi
+    双分支:
+        if 判断条件; then
+            条件为真的分支代码
+        else
+            条件为假的分支代码
+        fi
+    多分支:自上而下进行条件判断,第一次遇到为“真”的条件时,执行其分支,而后结束;
+        if CONDITION1; then
+            if-true
+        elif CONDITION2; then
+            if-ture 
+        elif CONDITION3; then
+            if-ture 
+        ...
+        esle
+            all-false
+        fi
     ```
 - `循环执行`
+    ```
+    循环:
+        循环次数已知:遍历
+            for
+        循环次数未知:
+            while
+            until
+    循环可以嵌套
+    ```
+    ```
+    for循环:
+        for 变量名 in 列表; do
+            循环体(要执行的代码;可能要执行n遍)
+        done
+        ---------------------
+        执行机制:
+            依次将列表中的元素赋值给“变量名”; 每次赋值后都要执行一次循环体; 直到列表中的元素耗尽,循环结束; 
+        列表生成方式:
+            (1) 直接给出列表;
+            (2) 整数列表;
+                (a) {start..end}
+                (b) $(seq [start [step]] end) 
+            (3) 返回列表的命令;例如ls /var等等
+                $(COMMAND)
+            (4) 文件名通配机制;
+                例如for file in /var/*;do
+            (b) 变量引用;
+                $@, $*
+    while循环:
+        while 测试条件; do
+            循环体
+        done
+        ---------------------
+        执行机制:
+            测试条件为真,进入循环;测试条件为假,退出循环;
+            测试条件一般通过变量来描述,需要在循环体不变量地改变变量的值,以确保某一时刻测试条件为假,进而结束循环;
+    until循环:
+        until 测试条件; do
+            循环体
+        done
+        ---------------------
+        执行机制:
+            测试条件为假,进入循环;测试条件为真,退出循环;
+            测试条件一般通过变量来描述,需要在循环体不变量地改变变量的值,以确保某一时刻测试条件为真,进而结束循环;
+    ```
 
 ### 练习
 
@@ -283,7 +374,7 @@ shell脚本编程笔记...
     echo "The blankspace is $(grep '^[[:space:]]*$' $1 | wc -l) lines."
     ```
 ---
-- 写一个脚本
+- 写一个脚本,添加用户
     ```bash
     #!/bin/bash
     #
@@ -301,6 +392,73 @@ shell脚本编程笔记...
             [ $? -eq 0 ] && echo "$1" | passwd --stdin $1 &> /dev/null && exit 0 || exit 2
     fi
     ```
+- 用户键入文件路径,脚本来判断文件类型
+    ```bash
+    #!/bin/bash
+    #
+
+    read -p "Enter a file path: " filename
+
+    if [ -z "$filename" ]; then
+        echo "Usage: Enter a file path."
+        exit 2
+    fi
+
+    if [ ! -e $filename ]; then
+        echo "No such file."
+        exit 3
+    fi
+
+    if [ -f $filename ]; then
+        echo "A common file."
+    elif [ -d $filename ]; then
+        echo "A directory."
+    elif [ -L $filename ]; then
+        echo "A symbolic file."
+    else
+        echo "Other type."
+    fi
+    ```
+---
+- 添加10个用户, user1-user10;密码同用户名
+    ```bash
+    #!/bin/bash
+    #
+
+    if [ ! $UID -eq 0 ]; then
+        echo "Only root."
+        exit 1
+    fi
+
+    for i in {1..10}; do
+        if id user$i &> /dev/null; then
+            echo "user$i exists."
+        else
+            useradd user$i
+            if [ $? -eq 0 ]; then
+                echo "user$i" | passwd --stdin user$i &> /dev/null
+                echo "Add user$i finished."
+            fi
+        fi
+    done
+    ```
+- 判断某路径下所有文件的类型
+    ```bash
+    #!/bin/bash
+    #
+
+    for file in $(ls /var); do
+        if [ -f /var/$file ]; then
+        echo "Common file."
+        elif [ -L /var/$file ]; then
+        echo "Symbolic file."
+        elif [ -d /var/$file ]; then
+        echo "Directory."
+        else
+        echo "Other type."
+        fi
+    done
+    ```
 
 ## 参考链接
 

+ 1 - 1
source/_posts/si-ssr-basic.md

@@ -182,7 +182,7 @@ tags:
 ### BandwagonHost VPS
 
 1. 选择对应且需要的VPS方案
-    - [官网](https://bwh8.net/)
+    - [官网](https://bwh88.net/)
     - [搬瓦工VPS中文网](http://banwagong.cn/)
     - 即便我们购买低配置方案之后,以后也可以升级到其他方案的。
 2. 核对方案配置以及选择时间期限和机房