Wayde's Blog

知识源于积累


  • 首页

  • 关于

  • 分类

  • 标签

  • 个人收藏

  • 归档

  • 搜索

Shell 单引号、双引号、不加引号区别

发表于 2018-03-15 | 分类于 Shell
  • 单引号

    可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号’’是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换。

  • 双引号

    把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。双引号””是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。

  • 不加引号

    不会将含有空格的字符串视为一个整体输出, 如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。

使用规则:

一般常量用单引号’’括起,如果含有变量则用双引号””括起。

参考资料:
grep 后加单引号、双引号和不加引号的区别

Docker常用命令

发表于 2018-03-15 | 分类于 Other
  1. 查看实例

    docker ps -a

  2. 导出镜像

    sudo docker export <CONTAINER ID> > forum_docker.tar

Linux中Locale及shell编码问题

发表于 2018-03-15 | 分类于 Linux

查看当前系统语言环境 locale

查看系统内安装的locale locale -a

1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

LC_CTYPE=zh_CN.UTF-8

参考资料:
Linux中Locale及shell编码问题
UnicodeDecodeError when ssh from OS X
修改locale

Linux tail命令

发表于 2018-03-15 | 分类于 Linux

tail-f多次grep过滤输出

tail -f log | grep xxx | grep yyy

发现grep失效,无法做正确输出,原因如下:
管道 | 是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。

解决方法:

tail -f log | grep --line-buffer xxx | grep --line-buffer yyy

tail -f filename.log | grep --line-buffered -i xxx | grep --line-buffered -v yyy

解决tail -f inotify 资源耗尽问题

  • 查看 inotify 的配置

    sysctl fs.inotify

  • 修改 inotify 文件监听上限

    echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p (重载配置文件,使之马上生效)

参考资料:
tail -f 多次grep过滤输出

Ubuntu 添加DNS服务器

发表于 2018-03-15 | 分类于 Ubuntu

sudo vim /etc/resolv.conf

添加: nameserver 10.17.1.11

清除dns缓存(重启网卡): sudo /etc/init.d/networking restart

Linux export命令

发表于 2018-03-15 | 分类于 Linux

参数说明

1
export [-fnp][变量名称]=[变量设置值]

参数说明:

​ -f  代表[变量名称]中为函数名称。

​ -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

​ -p  列出所有的shell赋予程序的环境变量。

设置环境变量

  1. 直接用export命令

    1
    export username="wayde"

    查看是否已经设好,可用命令export查看:

  2. 修改/etc/profile文件

    1
    2
    3
    #vim /etc/profile
    在里面加入:
    export username="wayde"
  3. 修改~/.bashrc文件

    1
    2
    3
    4
    5
    6
    7
    # vim ~/.bashrc
    在里面加入:
    export username="wayde"

    # vim ~/.zshrc
    在里面加入:
    export username="wayde"

    后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:

    echo $username

参考资料:
Linux 命令详解(一)export 命令
shell export 作用

Supervisor 多实例运行

发表于 2018-03-15 | 分类于 Other

配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[program:project_name]
command=%(ENV_PYTHON_PATH)s/bin/gunicorn -c %(ENV_SHARED_PATH)s/config/gunicorn.py application:app
directory=%(ENV_APP_REPOSITORY)s
startsecs=1
user=deploy
stopwaitsecs=3
autostart=false
autorestart=false
killasgroup = true
stopasgroup = true

[supervisorctl]
serverurl=http://127.0.0.1:9002 #新增行
logfile = %(ENV_SHARED_PATH)s/log/supervisorctl.log
pidfile = %(ENV_SHARED_PATH)s/run/supervisorctl.pid

[supervisord]
logfile = %(ENV_SHARED_PATH)s/log/supervisor.log
pidfile = %(ENV_SHARED_PATH)s/run/supervisor.pid

[inet_http_server]
port=:9002

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
1
2
3
4
5
6
7
8
9
10
11
;[inet_http_server]         ; 侦听在TCP上的socket,Web Server和远程的supervisorctl都要用到他
不设置的话,默认为不开启。非必须设置
;port=127.0.0.1:9001 ; 这个是侦听的IP和端口,侦听所有IP用 :9001或*:9001。

[supervisorctl] ;这个主要是针对supervisorctl的一些配置
serverurl=unix:///tmp/supervisor.sock ; 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket
路径,注意这个是和前面的[unix_http_server]对应的
默认值就是unix:///tmp/supervisor.sock。。非必须设置
;serverurl=http://127.0.0.1:9001 ; 这个是supervisorctl远程连接supervisord的时候,用到的TCP socket路径
注意这个和前面的[inet_http_server]对应
默认就是http://127.0.0.1:9001。。。非必须项

参考资料:
python supervisor使用

LVM-逻辑卷管理

发表于 2018-03-15 | 分类于 Linux
  • 查看当前系统已存在物理卷

    pvdisplay

  • 查看当前系统已存在卷组

    vgdisplay

  • 查看当前系统存在的逻辑卷

    lvdisplay

  • 查看系统块设备

    lsblk -l

  • 删除逻辑卷

    lvremove /dev/vg9/lv9c2016

  • 创建逻辑卷

    lvcreate -L 30G -n lv0-windows10 vg0

  • 逻辑卷扩容

    lvextend -L +20G /dev/vg0/lv0-windows10

  • 指定逻辑卷安装windows10

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    virt-install \
    --virt-type kvm \
    --name windows10 \
    --ram 8192 \
    --cdrom=/uni/windows10/cn_windows_10_enterprise_version_1607_x64_dvd_9057083.iso \
    --boot cdrom \
    --cpu core2duo \
    --network bridge=br0,model='e1000' \
    --graphics vnc,listen=0.0.0.0 \
    --disk path=/dev/mapper/vg0-lv0--windows10,bus='ide' \
    --noautoconsole \
    --os-type=windows

    ​

  • windows10 扩容磁盘

    lvcreate -L 50G -n lv9-windows10 vg9

    virsh edit windows10

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/mapper/vg0-lv0--windows10'/>
        <target dev='hda' bus='ide'/>
        <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
        <driver name='qemu' type='raw'/>
        <source file='/uni/windows10/cn_windows_10_enterprise_version_1607_updated_jul_2016_x64_dvd_9057083.iso'/>
        <target dev='hdb' bus='ide'/>
        <readonly/>
        <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>

    <!-- 以下为新加 -->
    <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/mapper/vg9-lv9--windows10'/>
        <target dev='hdc' bus='ide'/>
        <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>

参考资料:
fdisk-磁盘分区与分区扩容
LVM基本介绍与常用命令

Nginx location配置优化

发表于 2018-03-15 | 分类于 Nginx

应用场景: 访问domain.com/xxx,返回project/templates/xxx.html内容

原配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
root /home/wayde/project/templates;
location /aaa {
try_files $uri /aaa.html;
}
location /bbb {
try_files $uri /bbb.html;
}
...
location / {
try_files /app.html;
}
  1. 方案1
1
2
3
4
5
6
7
root /home/wayde/project/templates;
location ~* ^/(\w+)/?.*$ {
try_files $uri /$1.html /app.html;
}
location / {
try_files $uri /app.html;
}
  1. 方案2
1
2
3
4
5
6
7
8
9
10
root /home/wayde/project/templates;
location ~* ^/(\w+)/?.*$ {
try_files $uri /$1.html /app.html;
}
location @other {
try_files $uri /app.html;
}
location / {
try_files $uri /app.html;
}
  1. 方案3
1
2
3
4
5
6
7
root /home/wayde/project/templates;
location ~* ^/(\w+)/?.*$ {
try_files $uri /$1.html /; #ubuntu nginx1.4.6不支持最后面的"/", nginx1.10.3以上版本支持支持
}
location / {
try_files $uri /app.html;
}

Linux 多命令顺序执行连接符

发表于 2018-03-15 | 分类于 Linux
  • 分号 ;

    分号,没有任何逻辑关系的连接符。当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都会一条一条执行下去

  • 逻辑或 ||

    逻辑或,当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。

  • 逻辑与 &&

    逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行,与 || 正好相反。

  • 管道符 |

    管道符,当用此连接符连接多个命令时,前面命令执行的正确输出,会交给后面的命令继续处理。若前面的命令执行失败,则会报错,若后面的命令无法处理前面命令的输出,也会报错。

1…456…14
Wayde

Wayde

140 日志
14 分类
112 标签
GitHub StackOverflow Instagram
© 2012–2022 Wayde
粤ICP备2020135844号