211009-git ammend知识点

在实际使用git的过程中,难免会存在手误的场景,比如 git commit之后,发现提交的描述信息不太合适,想调整一下;或者发现本地有多个零碎未提交的commit,想合并成一个提交…

当我们出现这些需求场景的时候,可以考虑使用git commit --amend来实现

210702-curl 耗时统计脚本小记

记录一下curl访问url请求的耗时情况

1
curl 'https://blog.hhui.top/hexblog/about/' -w '%{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%'

参数说明:

  • time_namelookup:DNS 解析域名耗时
  • time_connect:client和server端建立TCP 连接的时间
  • time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间
  • time_total:client发出请求;到web的server发送会所有的相应数据的时间

建立TCP连接到server返回client第一个字节的时间:time_starttransfer – time_connect = s

server把响应数据发送给client的时间:time_total – time_starttransfer = s

210224-ssh防掉线设置

通过ssh连接远程服务器,一段时间不操作之后自动断线,一个可选的设置方法,在服务端添加心跳设置

1
2
3
4
5
sudo vim /etc/ssh/sshd_config

# 配置
ClientAliveInterval 30
ClientAliveCountMax 6

200223-docker 批量删除命令小记

删除所有容器

1
docker rm `docker ps -a -q`

删除所有镜像

1
docker rmi `docker images -q`

删除没有tag镜像

1
docker rmi `docker images|grep none|awk '{print $3 }'|xargs`

210208-git diff ^M不同操作系统下换行区别

不同操作系统下的换行不一致,当一个项目的开发者分别再linux/mac/win下做了代码提交改动之后,使用git diff命令时,可能会发现,即便啥也没改,当时有很多变动,显示^M的差别

主要原因就是换行的问题

解决这个问题的一个办法就是统一换行

1
git config --global core.autocrlf true

210203-tmux 批量操作

借助tmux,可以非常方便的实现同时操作多个面板

1
2
3
4
5
6
7
8
9
10
11
12
# 启用
tmux

# 开面板,上下、左右
ctrl + b: %
ctrl + b: "

# 开启批量操作
ctrl + b -> :set synchronize-panes on

# 关闭面板
ctrl + b: x

210125-tmux 快捷键

tmux 终端复用器,最简单质朴的需求就是多窗格,会话复用,本文简单记录一下常用的快捷键

210105-Permissions for .ssh/id_rsa are too open

ssh私钥权限问题,导致登录服务器时,提示异常

1
2
3
4
5
6
7
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0750 for '/Users/user/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/user/.ssh/id_rsa": bad permissions

解决这个问题的一个手段是将它的权限设置为700

1
chmod -R 700 .ssh/

201128-Maven 中央仓库提交Jar包全程指南

本文记录一下将jar上传到maven中央仓库的全过程,文中项目依托在github上,使用的是mac环境 (关于maven、jdk的环境配置不属于本文内容)

201112-Shell 文件迭代遍历

文件迭代遍历,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function read_file() {
for file in `ls -a $1`
do
if [ -d $1"/"$file ];then
if [[ $file != '.' && $file != '..' ]];then
read_file $1"/"$file
fi
else
echo $1"/"$file
up_file_name=$1"/"$file
echo $up_file_name
fi
done
}

200810-acme.sh 快速实现https证书颁发与自动续期

借助acem.sh来迅速实现let’s encrypt的泛域名ssl证书颁发与续期,基本上五分钟就可以解决战斗

本文主要内容来自acme.sh的官方wiki,一切以官方说明为准: acme wiki

200728-Centos hostname修改

centos 6 修改方式

1
2
3
4
# 修改hostname,立即生效
hostname new-hostname
# 查看hostanme
hostname

centos 7 修改方式

1
2
3
4
# 修改hostname,立即生效
hostnamectl set-hostname new-hostname
# 查看hostname
hostname

200709-CURL文件上传

使用curl进行文件上传,语法如下

1
curl -f '文件名=@文件地址' url

200703-grep 匹配到二进制文件

直接使用grep 发现一个奇怪的问题,居然提示

1
2
$ grep 'error' cic.log
匹配到二进制文件 cic.log

grep如果碰到\000 NUL字符,就会认为文件是二进制文件。必须加上-a或–text选项强制让grep认为是文本文件才可以看到正常的结果

因此解决方案是:

1
2
3
$ grep 'error' cic.log --text
# 或者如下
$ grep 'error' cic.log --a

200619-http代理服务器tinyproxy搭建手册

简单记录一下http代理服务器tinyproxy的搭建与简单配置过程

1
2
# 安装
sudo yum install tinyproxy -y

200616-zsh 安装与配置

本文简单记录centos环境下,zsh的安装过程,以及我个人常用的主题配置

200604 Nginx重写代理链接

本文参考自: 重写代理链接-url-rewrite

使用nginx做发现代理,遇到一个场景,匹配 /console/ 开头的域名,转发到目标端口号,但是希望转发过去的url,去掉 /console/ 这个头

针对这个,可以借助 rewrite + proxy_pass来实现

1
2
3
4
location /console {
rewrite ^/console/(.*) /$1 break;
proxy_pass http://127.0.0.1:8080/;
}

200515-nginx 提示文件访问权限问题failed(13:Permission denied)

nginx配置完毕之后,添加一个html页面,访问直接500错误,通过查看错误日志,显示 failed (13: Permission denied)

解决方法,修改配置文件中的userroot

1
2
3
4
vim /etc/nginx/nginx.conf

user root;
worker_processes auto;

修改完之后,重启即可

1
nginx -s reload

200426-mac 刷新dns

mac 快速刷新dns缓存命令

1
sudo killall -HUP mDNSResponder

200421-Curl 代理访问方式小结

记录一下curl通过代理访问目标网站的几种姿势

原文请参考: How to use curl command with proxy username/password on Linux/ Unix

语法:

1
2
3
4
curl -x '协议://[用户名:密码@]ip[:端口号]' url

curl -x http://[user:password@]proxyhost[:port]/ url
curl -x socks5://[user:password@]proxyhost[:port]/ url

200420-Let’s Encrypt 通配符配置,为你的根域名添加https证书

现在站点不挂个https,就连微信分享都开不了,然而商用https证书又特别贵,作为草根想搞个https证书,有下面两种方案:

  • 可以到阿里云的控制台上申请免费证书(必须备案,一年有效期,一个域名一个证书)
  • 另外一个方案就是利用let’s encrypt来申请证书(支持通配符,即多个域名一个证书)

下面手把手教你利用let’s encrypt进行证书申请

200413-Centos hosts修改及生效

centos域名绑定与生效

1
2
3
4
5
# 修改域名
vim /etc/hosts

# 生效
/etc/init.d/network restart

191206-Docker 常用命令速查手册

记录一下docker的日常使用命令,本文主要针对linux + mac操作系统而言,window是否适用不太确定,谨慎使用

191206-Centos安装docker与使用说明

本文主要介绍Centos下如何安装docker,并给出一些基本的使用case

191122-nginx 开启gzip压缩配置

ngxin 开启gzip压缩,减少数据包大小,默认场景下nginx没有开启gzip压缩,需要主动指定

关键配置修改如下(进入配置文件 nginx.conf)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
http {
# ...

# 开启gzip压缩
gzip on;
# 表示当请求的资源超过1k时,才开启压缩
gzip_min_length 1k;
# 设置压缩所需要的缓冲区大小
gzip_buffers 4 16k;
# 针对的http版本
gzip_http_version 1.0;
# 压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
gzip_comp_level 2;
# 支持压缩的资源类型,对于前后盾分离的项目而言,注意下json的压缩支持
gzip_types text/plain application/x-javascript text/css application/xml application/json text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary off;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";

}

修改完毕之后重启nginx即可

1
nginx -s reload

190925-Redis集群搭建手册

之前在使用redis的case中,更多的只是单机的使用;随着业务的增长,为了更好的性能提供,集群是一个必然的发展趋势;下面记录一下搭建集群的步骤

单机安装手册,可以查看: 单机redis安装手册

190809-Centos用户无法切换问题记录

使用influxdb时,需要执行一个命令时,要求切换到influxdb的用户下,发现通过 su influxdb 居然切不过去,特此记录一下

190703-docker非root用户可使用配置

docker要求使用root权限进行启动,但是启动之后,普通的账号会发现没有访问docker的权限,然而每次都使用root进行访问过于麻烦,那么有办法让普通账号也能正常访问么?

190621-Gitalk配置与排坑全程实战

基于gittalk搭建个人站点的评论的完整记录,特别是遇到的一些鬼畜的问题,如Error not found, 404问题,Validation Failed(422)校验失败问题等,为大家避免采坑提供一些参考

190212-linux线程数、进程查询

ssh登录远程服务,忽然提示su: failed to execute /bin/bash: 资源暂时不可用,然后通过root账号登录服务器没有问题,但是使用su切换用户时,依然失败,提示上面的错误,搜索一下可能原因是线程数沾满,杀掉一些占用大量线程的进程即可;然后记录下linux下线程数的相关操作

190127-Git项目代码行数统计

统计项目某个某个时间段的行数

1
git log --author="$(git config --get user.name)"  --before='2018-12-31 23:59:59' --after='2018-01-01 00:00:00' --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'

190124-查看进程tcp连接情况

如何查看一个进程的tcp连接情况?

1
lsof -p 进程号 -nP | grep TCP

190121-服务器常用shell命令小结

记录一下服务器开发平时常用的shell命令,帮助高效发现和解决问题

190115-Shell目录下文件统计

文件夹下文件的统计,通常用的是wc来做,下面简单小结一下各种case

181222-Centos SSH免密登录配置不生效问题fix

centos添加ssh免密配置,结果发现登录时,依然要求设置密码,记录一下解决过程与最终的方案

181220-Shell-目录遍历获取指定的文件

遍历目录,获取需要的文件

直接贴对应的实现脚本

1
2
3
4
5
6
cd /home
for dir in $(ls)
do
# 如果是目录,则打印目录名
[[ -d ${dir} ]] && echo ${dir}
done

181219-centos配置开机后启动脚本

配置开机后执行脚本

配置相对简单,添加一个执行命令即可

1
2
3
4
vim /etc/rc.d/rc.local

# 在文件最后添加
sh /home/yihui/xxx.sh

执行脚本,添加上可执行的权限即可

181207-Centos使用docker构建ecs环境

本文主要介绍利用docker来构建一个java后端可用的开发运维环境

180925-shell获取系统当前时间并格式化

shell命令获取当前系统时间并格式化的方式记录

1
2
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "${time}"

180917-Shell命令之xargs使用小结

Shell命令之xargs使用小结

常见用于管道的处理中,拿到前面的数据进行后续的处理;

xargs 以空白字符或换行作为分割,默认使用echo输出结果,且会忽略空白行,官方说明如下

xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input. Blank lines on the standard input are ignored.

180906-Centos网络带宽监控小结

Centos网络带宽监控小结

查看机器的网络流入流出带宽,一个简单的方式就是利用 iftop ,下面简单的记录下使用姿势

180717-借助Maven打包可项目执行的Jar小记

当我们希望项目打包为一个可执行的jar文件,丢到服务器上运行时,可以怎么做?借助maven。可以比较简单的实现这个

I. 使用小结

在pmo依赖文件中,添加下面的依赖

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
26
27
28
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.git.hui.task.AppLaunch</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

注意上面的mainClass标签中,指定的是main方法执行入口,上面这种打包方式,会将所有依赖的第三方包,也一同打包到最终生成的jar文件中

即,这个jar文件,包含了所有的依赖和业务代码,可以直接运行,执行方式

1
java -jar xxx.jar

源码验证case:

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

QrCode

180716-Centos时区设置

使用timedatectl命令同步时间并设置时区

I. timedatactl命令

1. 使用帮助

1
timedatectl -h

2. 命令示例

2.1 显示系统的当前时间和日期

1
2
3
timedatectl
# timedatectl status
# 两条命令效果等同

2.2 设置日期与时间

1
2
3
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
timedatectl set-time "YYYY-MM-DD"
timedatectl set-time "HH:MM:SS"

2.3 查看所有可用的时区

1
2
3
timedatectl list-timezones
# 亚洲
timedatectl list-timezones | grep -E "Asia/S.*"

2.4.设置时区

1
timedatectl set-timezone Asia/Shanghai

2.5.设置硬件时间

1
2
3
4
# 硬件时间默认为UTC
timedatectl set-local-rtc 1
# hwclock --systohc --localtime
# 两条命令效果等同

2.6.启用时间同步

1
2
timedatectl set-ntp yes
# yes或no; 1或0也可以

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

QrCode

180707-ssh远程免密登录配置

logo

通过ssh免密方式登录远程服务器, 配置比较简单,就是讲自己的rsa公钥放在远端服务器的授权文件中

1
vim ~/.ssh/authorized_keys
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×