这是我在学习及工作过程中遇到的一些小的点,记录下来方便以后遇到类型问题后翻阅,相当于一个速查表吧。现发表出来,若您还有其他 tips 愿意和我分享,请通过关于我联系我。此篇文章会不定期更新。
crontab 运行记录在 /var/log/cron
文件里
监控系统状况
sar 1
表示每隔1s打印一次sar -r 1
yum -y install sysstat
CPU 信息:cat /proc/cpuinfo
内存信息:cat /proc/meminfo
CPU 占用率:cat /proc/stat
四个进程,每个进程 8 线程跑,OS 会按照 32 个线程调度,而不是 4 个进程调度?
ffmpeg 使用 map 参数时,需要对每个视频分别指定编码参数,包括编码器,否则会使用默认编码器(libx264)。
文件的三个时间:stat file
可查看
docker 使用 -v
参数挂载数据卷时,容器内部没有权限:
run
时加上 --privileged=true
特权;setenforce 0
虚拟机是 CentOS7,在和外网通信时需要关闭防火墙 systemctl stop firewalld
bash 运行多个命令:bash -c 'cmd1 && cmd2
,这在 docker 中很有用。
显示一个路径的所有权限:namei -om /path/to/check
nslookup
命令可以查看某个域名所解析的记录值
top -bn 5
可以输出到文件
进行多任务并发测试时,不能统计每个进程时间再相加,会重复统计。
.
表示将另一个脚本中内容包含进来并执行
bash 执行 set -i vi
可以以 vim 方式操作命令行。
git status 命令对中文文件名乱码:git config --global core.quotepath false
vim
下使用:%!xxd
将文本转换为十六进制,:%!xxd -r
可转换回来。
tc
可用来模拟丢包;
vim命令行操作,类似vim +PluginInstall +qall
netstat -s命令和
ss命令可以查看网络相关情况
golang 中的break label
和continue label
语法可以很方便地在嵌套循环中控制外层循环。
man -w 可以列出所有 man 手册的位置;
listen 函数中 backlog 参数指定全连接队列的长度。
压测时客户端可能出现大量连接处于 TIME_WAIT 状态,导致连接被用完;
QPS= 并发数 / 平均响应时间;
shell 中 esc + back 键可以快速删除当前命令行一部分;
数组中元素内部带有互斥锁时,不能通过for _,val:=range(array){}
访问,因为会拷贝锁;
求文件交、并、差集:
grep -F -f a.txt b.txt
可以求两个文件的交集;sort a.txt b.txt | uniq -d
也可以求两个文件的交集;sort a.txt b.txt | uniq
求并集;sort a.txt b.txt b.txt | uniq -u
求差集 a.txt - b.txtsed 's/.*([0-9]*).*/\1/g' file
可以提取字符串,\1
表示用第一个括号里面的内容替换掉整个字符串。
服务回滚管理最佳实践,配置文件是否应该提交到内部私有代码仓库中?如提交/不提交,线上和测试环境不一致问题如何管理?
golang 语法糖之三个点:
func foo(keys ...int){}
;slice=append(slice,other_slice...)
;array:=[...]int{1,2,3,4,5}
;go get github.com/abc/xyz/...
w
命令可以用来看谁都登录了机器并且在做什么;
免密登录服务器步骤:
ssh-keygen
vim ~/.ssh/config
ssh-copy-id user@host
yes | yum install xxx自动输入 yes;
一个坑:golang MySQL 包调用 rows.Scan() 前必须调用 rows.Next(),否则会失败。
golang 中如果不想让 struct 中某个字段序列化到 json 中,可以指定它的 field 为
json:"-"。
接手一个项目代码时,可以先了解下其功能及大体流程,然后跟踪关键部分代码,而不必要对细枝末节过于追究,如解析配置等。
pwdx
命令可以根据 pid 查到可执行文件具体路径。
可以调研下在 macOS 和 iOS 上都可以跑的 docker,这样就可以去掉虚拟机,直接在 docker 上运行虚拟机。镜像及相关数据通过 iCloud 备份,真正实现「云办公」。
vmware 开启共享文件夹后看不到/权限问题:vmhgfs-fuse .host:/ /mnt/hgfs -o uid=1000 -o gid=1000 -o umask=0033
或者 vmhgfs-fuse -o allow_other .host:/ /mnt/hgfs
python -m SimpleHTTPServer 8899 可以直接从服务器下载文件
sed 处理的时候,会先去掉换行符,处理完成后再加上。因此无法直接替换掉换行符,需要使用模式空间来处理;
代码注释:NOTE, OPTIMIZE, TODO, HACK, XXX, FIXME, and BUG;
不要轻易 "相信" 别人。使用别人服务或接口前,要经过充分验证。
cat file | while read line; do XXX; done
有可能只会读一行,原因是 XXX 命令从标准输入将缓冲区内容全部读走了。解决方法是 XXX </dev/null
git merge 时出现冲突,文本文件好解决,二进制问题可使用 git checkout xxx —theirs
或 git checkout xxx —ours
使用自己或对方的版本。
gdb -tui xxx
可图形界面调试;
golang 的 Label
在嵌套函数(闭包)是不可用的. 不管是在闭包里
调用闭包外
的Label, 还是在闭包外
调用闭包里
的Label
```go A:=[]int{0,1,2} var index int for index=0;index<len(A);index++{}; println(index)
A:=[]int{0,1,2} var index int for index=range A{}; println(index)
//打印结果一样吗,为什么? ```
yum whatprovides ifconfig
查找;