LJ的Blog

学海无涯苦做舟

0%

用到的命令,防忘

前言

不全的记录,只是有一些命令还不是很熟,记录下来备查

k8s 快捷键

  • 将本地端口映射到 k8s 对应 pod:kubectl -n namespace port-forward authsv-7cfc56d85d-v24pb 9999:9090,-n 命名空间,9999 本地端口,9090 远程端口

  • 实时打印 pod 日志:

    1
    kubectl -n namespace logs authsv-6f5f544d75-qgw6g authsv --tail 10 -f
  • 获取定时任务列表:kubectl -n namespace get cronjob

  • 删除节点:kubectl -n namespace delete xxx

  • 进入容器执行 shell 命令:kubectl -n namespace exec pod -it sh

  • k8s 定时任务,没有秒

1
2
3
4
5
6
7
8
9
# ┌───────────── 分钟 (0 - 59)
# │ ┌───────────── 小时 (0 - 23)
# │ │ ┌───────────── 月的某天 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 周的某天 (0 - 6) (周日到周一;在某些系统上,7 也是星期日)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * *

Vim 快捷键

  • vim 替换:%s/被替换字符/替换字符/g(不加 g 只替换每行第一个)
  • 从当前行向上移动 n 行:n k
  • 从当前行向下移动 n 行:n j
  • 代替光标下的字母:r + 字母
  • 代替多个字母:R + 输入 + ESC
  • 选中删除并进入插入模式:c+e,到单词结尾,cw,cb 到单词开头,ciw 删掉单词并进入插入模式
  • ctrl + D 提示命令
  • :e 打开别的文件
  • 查找:/,或者将光标移动到想要查找的单词上:*
  • 跳转到匹配的括号:%
  • 当前窗水平分割成两个窗口::sp
  • 当前窗垂直分割成两个窗口::vsp
  • 重命名当前 Vim 中打开的文件:
    • :w newname,将文件写入新文件中做备份
    • :e#,在当前 vim 中打开新文件
    • :!rm oldname,利用全局 rm 命令删除老文件
  • vim 打开文件并跳到指定行数:
    • vim +lineNumber filename
    • 配合 ag、grep 搜索结果很好使!
  • 跳到上一个函数代码块(下一个):[[(]])
  • 将下一行内容合并到上一行并添加空格:shift + j
  • 撤销 u,恢复撤销内容:ctrl + r
  • 数字加一(减一):ctrl + a (+),ctrl + x (-)

Space-Vim 快捷键

  • space t n:显示/隐藏行号
  • s g:垂直分屏
  • s o:关闭其他窗口
  • s Q:关闭当前窗口
  • F2 打开语法树
  • F3 打开文件树
  • space 1:跳转到窗口1
  • space s a d:使用 ag 进行搜索(基于打开文件时的位置)
  • space s a p:使用 ag 进行搜索(整个项目目录)
  • space ‘:打开 shell 窗口

Go 相关

  • 查看生成的汇编代码:go tool compile -S file.go
  • 检测是否有并发问题:go run -race file.go
  • 编译期检查锁问题:go vet xx.go

pprof 工具:相关使用教程

  • 分析应用程序的内存临时分配情况:

    1
    go tool pprof -alloc_objects http://localhost:9876/debug/pprof/heap
  • 生成文字报告:pprof -top [main_binary] profile.pb.gz

  • 生成 svg,在浏览器中打开:pprof -web [main_binary] profile.pb.gz

  • go race 工具,竞争检测器:go build -race,go test -race

Docker

  • 构建 docker image:docker build -t alpinevim/latest -f AlpineWithVim ./
    • -t 指定 repository 和 tag -f 指定 build 的 DockerFile
  • 查看 docker image 列表:docker images
  • 删除 image:docker rmi imageId
  • 查看容器是否运行:docker ps -a
  • 本机所有正在运行的容器:docker container ls
  • 终止容器运行:docker container kill [containerID]
  • 将本地目录挂在到 container 并执行命令:docker run -it -v localPath:/root alpinevimgo:latest sh -c ‘cd root && gcc -o test test.c’
  • 外部访问容器:docker run -d -p 9090(host port):9090(container port) imageName
  • 查看容器端口映射配置:docker port containerId

Git

  • 查看某次 commit 提交内容:git show commit id
  • 查看某次 commit 提交内容中某个文件的变更:git show commit id filename
  • rebase:git rebase start end
  • 查看某个文件的提交记录: git log filename
  • 查看某个文件的变更内容:git difftool cmid1 cmid2 filename
  • 查看两个分支文件内容差异:git diff branch1 branch2 filepath
  • 查看别的分支文件:git show branch:file
  • 将某个文件回滚到某次提交:git checkout commit id filepath
1
2
3
4
5
git reset -mixed:此为默认方式,不带任何参数的git reset,这种方式,它回退到某个版本,只保留源码,回退commit和index信息

git reset -soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

git reset -hard 彻底回退到某个版本,本地的源码也会变成为上一个版本的内容
  • 查看某次 commit 文件所有内容:git show commit id:file_path
    • 想在 vim 中打开,可以 > filename 输出到文件中再打开,如果采用其他方式打开,因为识别不出来是什么语言没有代码高亮

Mongo

  • 排序:sort() 1 升序,-1 降序
  • 创建索引:createIndex 1:升序 ,-1:降序
  • 删除索引:dropIndex(“name”)
  • 查询指定字段:find({查询条件},{field: 1}),1 表示查询此字段,0 表示不查询该字段

etcd

和 vim 类似,一些 flag 和命令可以组合起来用

  • 获取值和额外信息:etcdctl get key -wjson
    • 只打印值:etcdctl get key –print-value-only
  • 查看集群成员:etcdctl –write-out=table –endpoints=localhost:2379 member list
  • 查询 key、value 以十六进制形式展示:etcdctl get key –hex
  • 读取以 key 为前缀的所有键的命令:etcdctl get –prefix key –limit=10 –print-value-only
  • 读取(删除)大于等于键 b 的值的命令:etcdctl get(del) –from-key b
  • 删除 key,并返回 kv 和被删除的数量:etcdctl del –prev-kv key
  • 观察 key 的变化:etcdctl watch key
  • 观察多个 key:etcdctl watch -i
    • watch key1
    • watch key2
  • 从第 n 个版本开始观察变化:etcdctl watch key –rev=n

awk

  • 指定使用某个字符作为分隔,比如冒号’:’:awk -F :
  • 拼接字符串使用引号:awk -F : ‘{print “"“$1”"“ “ : "groupsv-svc:9090/rpc.Group/“ $2”"“}’ test1.txt

一些好用的命令行工具

  • pip3 install mycli:比 mysql 命令好用一些,有语法提示,更加友好的表名提示,语法高亮
  • ag:ag -G 只搜索匹配文件名的内容
  • 可以生成 html 预览的 pandoc:pandoc README.md -f markdown -t html -s -o test1.html
    • -f ====> –from=format
    • -t ====> –to=format

无处归档的小命令

  • 重度命令行依赖者如何方便的在 mac 终端中打开浏览器 & 指定网页或者本地文件:
    • open -a “Google Chrome” index.html(https://www.google.com)
    • 设置别名 chrome=open -a “Google Chrome”,chrome index.html
  • zshell 下设置搜索插件:omz plugin enable web-search
    • 然后就可使用 google asdfxx,来搜索你想要搜索的内容了。好景不长,经测试,google 后跟英文可以成功打开 chrome google 搜索,但是中文不行。用别人的电脑试了一下可以,查看 websearch 实现发现也是使用 open 命令打开相应的搜索使用 url + 拼接想要搜索的东西,直接用 open 命令也无法打开浏览器跳转到指定页,英文就可以。略醉……
  • ffmpeg -i xxx.jpeg -q 10 xxx_compress.jpeg:帮对象处理图片,上传证件照片之类的限制图片大小,可以使用 ffmpeg 压缩 -q 之后跟随的是压缩等级
    • 安装:brew install ffmpeg(ffmpeg 依赖的库非常多,所以网不好安装失败的可能很大。。。多试几次就好了)