场景一:
- 访问abc.realibox.com实际显示pandll.com站点内容,但地址栏仍然显示abc.pandll.com
- nginx检测abc未配置时,重定向到pandll.com,地址栏也显示pandll.com
场景二:
- 访问abc.pandll.com实际显示pandll.com/u/abc页面内容,地址栏仍然显示abc.pandll.com
- web检测abc未配置(即/u/abc不存在)时,跳转至pandll.com,地址栏也显示pandll.com
批量管理Git项目脚本
应用场景: 本地clone有多个git项目,日常维护需要经常修改,又不想每次切换目录,然后pull、push代码…
使用方法:
创建shell脚本
gghelp.sh
添加alias
echo "alias gg='~/gghelp.sh'" >> ~/.bashrc
防止误删除
sudo chattr +ae gghelp.sh
用法说明执行
gg -x
即可查看1
2
3
4
5
6
7
8
9
10
11$ gg -x
Usage: gghelp.sh [-a --add] [-c --commit] [-d --diff]
[-e --epush] [-p --pull] [-s --status]
Options:
-a|--add execute git add --all
-c|--commit execute git commit
-d|--diff execute git diff
-e|--epush execute git push
-p|--pull execute git pull
-s|--add execute git status (default option)
Ubuntu 常用快捷键
快捷键 | 说明 |
---|---|
Alt + F4 | 关闭当前窗口 |
Alt + F2 | 弹出命令行窗口 |
Alt + Tab | 在窗口之间快速切换。(按住Shift 可反向排序。) |
Alt + ` | 在同一个应用程序的不同窗口或Alt+Tab后选中的程序间切换 |
Super + S | 激活工作区切换器。缩小所有工作区。 |
Super + W | 激活“Expo”模式。显示当前工作区的所有窗口。 |
Ctrl + Alt + 方向键 | 在工作区之间切换 |
Ctrl + Alt + Shift + 方向键 | 将当前窗口移至其他工作区 |
Ctrl + Alt + Delete | 注销 |
Ctrl + Super +D | 隐藏所有窗口并显示桌面。再次按下按钮可以恢复窗口。 |
Ctrl + Alt + L | 锁定屏幕 |
Print Screen | 获取屏幕截图 |
Alt + Print Screen | 获取窗口的截图 |
Shift + Print Screen | 获取屏幕上某个区域的截图。光标变为十字。点击并拖动选择区域 |
Ctrl + Super + ↑ | 最大化窗口 |
Ctrl + Super + ↓ | 将最大化的窗口恢复到初始尺寸 |
Ctrl + Super + ← | 在屏幕左半边纵向最大化窗口 |
Ctrl + Super + → | 在屏幕右半边纵向最大化窗口 |
Alt + Space | 弹出窗口菜单, 就像在标题栏上右键单击一样 |
Ctrl + Alt + F1~F6 | 打开虚拟终端tty1~6 |
Ctrl + Alt + F7~12 | 打开第1~6个GUI终端(由于系统一般只运行一个Unity,所有只有F7生效) |
Ctrl + Shift | 切换输入法 |
KVM虚拟机安装Ubuntu 16.04
创建10G系统盘(固态硬盘)
lvcreate -L 10G -n lv0-ubuntu16.04 vg0
创建50G挂载盘(机械硬盘)
lvcreate -L 50G -n lv9-ubuntu16.04 vg9
创建虚拟机
1
2
3
4
5
6
7
8
9
10
11
12
13virt-install \
--virt-type kvm \
--name ubuntu16.04 \
--ram 8192 \
--cdrom=/uni/iso/ubuntu-16.04.3-server-amd64.iso \
--cpu core2duo \
--network bridge=br0,model='e1000' \
--graphics vnc,listen=0.0.0.0 \
--disk path=/dev/mapper/vg0-lv0--ubuntu16.04,bus='ide' \
--disk path=/dev/mapper/vg9-lv9--ubuntu16.04,bus='ide' \
--noautoconsole \
--os-type=linux \
--os-variant=ubuntu16.04通过vpc连接继续安装
安装完成后设置开机启动
virsh autostart ubuntu16.04
常用命令请查看KVM常用操作
磁盘扩容
登陆宿主机,扩容逻辑卷
$ lvextend -L +10G /dev/vg0/lv0v31
重启虚拟机
登陆虚拟机,扩展分区
$ sudo apt-get install gparted
$ sudo gparted
修改配置如果遇到 (gpartedbin:2088): Gtk-WARNING **: cannot open display: localhost:10.0,尝试执行
export DISPLAY=:0.0
,再ssh连上重试。
参考资料:
使用virt-install手动创建qcow2镜像并安装ISO
Ubuntu 16.04 Server 版安装过程图文详解
kvm虚拟化之virt-install
Aliyun Ubuntu 服务器配置记录
永久修改主机名称
1 | $ cat /etc/hostname |
用户管理
创建用户adduser
1 | $ adduser test |
删除用户userdel
-f, –force 强制删除用户,即使用户当时已登录,同时删除用户目录和用户邮件
-r, –remove 同时删除用户目录和用户邮件
-R, –root Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.
-Z, –selinux-user Remove any SELinux user mapping for the user’s login.
1 | $ sudo userdel -r test |
Nginx实现负载均衡
1 | # 在http节点下,添加upstream节点 |
upstream分配策略
轮询(默认)
upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。适用于图片服务器集群和纯静态页面服务器集群
weight(权重)
指定轮询几率,weight和访问比率成正比,用于服务器性能不均的情况。
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
fair(第三方插件)
按服务器的响应时间来分配请求,响应时间短的优先分配
url_hash(第三方插件)
按访问url的hash结果来分配请求,使每个url定向到同一个服务器,服务器为缓存时比较有效
注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
1 | upstream resinserver { |
upstream 状态值
down
表示当前的server暂时不参与负载
weight
默认为1,weight越大,负载的权重就越大
max_fails
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout
max_fails次失败后,暂停的时间
backup
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
参考资料:
配置nginx到后端服务器负载均衡
Nginx配置upstream实现负载均衡
nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
Nginx基本服务与upstream配置详解
Nginx错误页面配置
1 | error_page 404 /404.html; |
Linux nmap命令
Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。
扫描局域网ip
nmap 10.17.1.*
查看局域网mac
cat /proc/net/arp
扫描IP开放端口
nmap -Pn 120.79.148.49
参考资料:
给Linux系统管理员准备的Nmap命令的29个实用范例
Linux 下查看局域网内所有主机IP和MAC(及nmap的用法)
Nginx gzip压缩
1 | http { |
grep正则表达式
grep正则表达式元字符集:
^ 锚定行的开始 如:’^grep’匹配所有以grep开头的行。
\$ 锚定行的结束 如:’grep$’匹配所有以grep结尾的行。
. 匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:’grep’匹配所有一个或多个空格后紧跟grep的行。 .一起用代表任意字符。
[] 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) 标记匹配字符,如’(love)‘,love被标记为1。
\ 锚定单词的开始,如:’\匹配包含以grep开头的单词的行。
\> 锚定单词的结束,如’grep>‘匹配包含以grep结尾的单词的行。
x{m} 重复字符x,m次,如:’0{5}‘匹配包含5个o的行。
x{m,} 重复字符x,至少m次,如:’o{5,}‘匹配至少有5个o的行。
x{m,n}重复字符x,至少m次,不多于n次,如:’o{5,10}‘匹配5–10个o的行。
\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:’G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。
\b 单词锁定符,如: ‘\bgrep\b’只匹配grep。
常用的 grep 选项有:
-c 只输出匹配行的个数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
-V 显示软件版本信息
使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。
匹配实例:
grep -c “48” test.txt 统计所有以“48”字符开头的行有多少
grep -i “May” test.txt 不区分大小写查找“May”所有的行)
grep -n “48” test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
grep -v “48” test.txt 显示输出没有字符“48”所有的行)
grep “471” test.txt 显示输出字符“471”所在的行)
grep “48;” test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep “48[34]” test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
grep “^[\^48]” test.txt 显示输出行首不是字符“48”的行)
grep “[Mm]ay” test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep “K…D” test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
grep “[A-Z][9]D” test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep “[35]..1998” test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep “4\{2,\}” test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep “9\{3,\}” test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep “9\{2,3\}” test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n “^$” test.txt 显示输出空行的行号
ls -l |grep “^d” 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep “^d[d]” 在一个目录中查询不包含目录的所有文件
ls -l |grpe “^d…..x..x” 查询其他用户和用户组成员有可执行权限的目录集合
参考资料:
linux grep 正则表达式