这是我在学习及工作过程中遇到的一些小的点,记录下来方便以后遇到类型问题后翻阅,相当于一个速查表吧。现发表出来,若您还有其他 tips 愿意和我分享,请通过关于我联系我。此篇文章会不定期更新。
crontab 运行记录在 /var/log/cron 文件里
监控系统状况
sar 1 表示每隔1s打印一次sar -r 1yum -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-keygenvim ~/.ssh/configssh-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 查找;