(持续更新) linux 命令总结

目录

###查看系统信息

###awk

### git

##杂项篇

###k8s

###kerberos

###字段截取操作

###shell免密码执行某个命令

###Docker操作

###Crontab定时任务

###vi/vim操作(命令模式)

###路由篇

###频率篇

###磁盘相关

###增加swap分区   

###CURL命令参数  

###格式化U盘篇

###小红帽系列篇

###运维

###Ubuntu篇   

###Windows篇   

###重要的网站篇


###查看系统信息

cat /etc/issue 或者 lsb_release -a       ;;查看linux os版本 
uname -a或-r                             ;;查看内核版本
file /bin/ls                             ;;查看系统位数
free -h或-m                              ;;查看磁盘使用情况(G)
cat /proc/cpu                            ;;查看CPU信息
cat /proc/cputemp                        ;;查看cpu的温度
lscpu                                    ;;查看cpu相关的简短信息

###awk


使用方法:awk -F '[pattern]' '{print $1 $(NF)}' fileName
其中,pattern是分割符,多个分割符连续写,还可以指定字符串为分割符
$(NF)代表分割后最后一个字符,同理$(NF-1)为倒数第二个,单引号代表按行取part-r-00000每一行内容如下,现在要取出cost的值做个累加
{jobId:"application_1536569256098_146007",jobName:"ultraman_sparksql_11537_wap_search",queueName:"root.spark_sql_ultraman",user:"ultraman",hostIP:"10.141.160.97",status:"COMPLETED",timeConsuming:"7524378",startTime:"1536816562001",endTime:"1536824086379",memory:"3",vCores:"81",failedMaps:"0",failedReduces:"0",killedMaps:"0",killedReduces:"0",cost:"9.120949",level:"2",resourceWasted:"0.26708108",type:"spark"}

实现如下:

awk -F , '{print $(NF-3)}' part-r-00000 > cost1
awk -F '[:\"]' '{print $(NF-1)}' cost1 >cost2
awk '{sum += $1};END {print sum}' cost2

常用变量说明:

  • $0 完整的输入记录
  • $n 由分割符分割的第n个字段
  • $NF 分割符分割的最后一个字段
  • RS 指定分割符
  • FS 指定列分割符,设置为空时,每个字符相当于一列
  • ORS 输出指定分割符

    eg:
    echo $(hadoop classpath 2>/dev/null | awk 'BEGIN{RS=":"}{printf("%s\n",$0)}' 将hadoop的环境变量中冒号换成\n
    cat 1.txt | awk 'BEGIN{ORS=":"}{print $NF}' 将 1.txt 中回车换成冒号
    awk '{for(i=6;i<=NF;i++)printf $i""FS;print ""}'  fileName  打印文件的第6行及后所有行,分割符保持原样

### git

git clone xxx.git                                   克隆项目
git config --global user.name "rose"                配置本地 git 用户
git config --global user.email rose@example.com     配置本地用户的伊妹儿
git config --global http.sslVerify false            解决git克隆需要证书问题
git config --global color.ui true                   启用颜色
git config --global core.whitespace cr-at-eol       忽视换行符差异,^M 

git branch / git branch -a  / git branch -d         列出本地分支/列出远程分支/删除本地分支
git branch test                                     创建本地分支 test
git checkout xxx                                    切换到某个分支,回滚文件/目录
git push orgin test:test                            push本地分支test在远程分支test
git push origin test                                提交代码
git status                                          显示工作区状态
git add .                                           添加修改或新建文件
git commit                                          提交本到本地仓库
git init                                            初始化
git diff --ignore-space-change                      显示本次修改代码,忽略空格和换行
git pull origin remote:local                        拉取远程xxx覆盖本地xxx分支

git reset --hard HEAD^                              回滚本地上一次commit,HEAD^可替换成commit号
git update-ref -d HEAD                              回滚项目第一次commit,未push数据
git push origin xxx -f                              联合reset使用撤销远程上一次提交,本地必须是xxx分支    
git remote prune origin                             解决远程删除分支后,本地git branch -a 依然看到   

git rebase HEAD~2 --signoff                         会把本地还没commit的内容清空(慎用) 
git push --force-with-lease origin master           让已经提交到remote的commit带签名

#git  依赖子项目
git submodule init                                  初始化子项目
git submodule update                                拉取子项目

git reset HEAD .                                    撤销所有的add操作
git reset HEAD filename/dir                         撤销单个文件/目录
git config core.autocrlf false                      解决LF will be replaced by CRLF

git tag -l                                          显示已打的tag
git tag hello.0f5986e -m "hello"  0f5986e           -m指定提示,最后跟commitId(7位就够)
git tag -d hello.0f5986e                            删除tag
git push origin hello.0f5986e                       push 到远程,不分分支
git commit --amend                                  修改最近一次commit的信息
 
编写 .gitignore 文件,和 .git同级,用于忽略配置

#将dev分支merge到master分支
#在dev分支commit新变更,push后,切到master分支
git merge dev    



##杂项篇

objdump -d firefox >/tmp/1                  将二进制执行文件反汇编成汇编代码
cat json文件 | jq '.'                       友好显示json文件的内容,需先安装jq软件包
lsof  -i:6006                               检测某个端口是否开启
diff -ruNa director1 director2 >comp.patch  比较两个文件夹下的所有文件的内容的不同
diff -urN 1.txt 2.txt > diff.patch          比较两个文件内容
mvn -X clean install                        安装某个依赖到本地仓库
strace xxx                                  显示某个命令执行时的系统调用和所接收的信号
ldd xxx                                     判断某个可执行的 binary 档案含有什么动态函式库
tar cvf ./1.tar ./*                         将当前目录下的所有文件打包到当前目录的1.tar
md5sum ./文件                               查看当前目录下的某个文件的md5值
gcc hello.c -o hello                        将hello.c文件编译生成hello可执行文件
chown root:root qemu-2.7.0 -R               将文件夹下所有文件的用户和组改为root
chmod 755 1.txt 或 chmod +x 1.txt           添加执行权限
vi /etc/sudoers                             定位root,之后加入一行,和root用户类似的行,来支持sudo
man ascii                                   显示ascii码
mount /dev/sdb1 /media/                     将某个盘挂载到/media目录下
umount /dev/sdb1                            弹出挂载
umount -l path                              解决fuse挂载残留,cannot access mountp: Transport endpoint is not connected错误
:r !LANG=env  data                          在光标的下一行添加英文格式的日期
gstack  pid                                 查看某个进程调用栈
grep "xxx" . -r                             递归获取当前目录下含有xxx的字段的文件,若含有tab,使用CTRL+v按TAB加入即可
netstat -lnp | grep 2888                    查看2888端口号是否被使用,kill -9 显示结果最后一例的进程ID数字
ldconfig -p | grep libgo                    查看动态链接库,隔离libgo库
ls -lR | grep "^-" | wc -l                  统计当前文件夹下包括子文件有多少个文件,去掉R不包含子文件夹
ls -lR | grep "^d" | wc -l                  统计当前目录下有多少文件夹,包含子文件夹
rpm2cpio xxxx.rpm | cpio -div               查看rpm包内容
ssh-keygen // ssh-copy-id followIP          产生公钥和私钥,用于ssh免密登陆 // 将本机的公钥拷贝到指定hostIP机默认位置
dos2unix fileName                           解决执行脚本出现 "$'\r': command not found"错误,windos和linux对换行的编码不同导致
/bin/cp -rf xxx xxx                         覆盖copy

ln -s /path/to/tgt  test                    建立软连接,test-> /path/to/tgt
ln -snf /path/to/tgt2 test                  更改软连接,test->/path/to/tgt2

ls  | sort | xargs -i md5sum {}  &>/tmp/2   获取当前目录下所有文件MD5值,xargs带i表示按行给
gzip -d xx.gz                               解压 .gz 文件
svn co URL  --username xxx --password xxx   相当于git clone
hostnamectl set-hostname <newhostname>      更改hostname名,相当于修改/etc/hosts文件
journalctl -xefu xxxx                       查看systemd管理的服务日志


ps -aux                                     使用标准语法查看系统上的每个进程
ps -ef                                      使用BSD语法查看系统上的每个进程
ps -ajxf                                    列出进程树
ps -elf | grep defunct                      列出僵尸进程

kill -15 pid                                安全杀掉进程
kill -9 pid                                 强制杀死进程
kill -9 -pid                                杀组进程

vimdiff 1 2                                 vim打开2个文件,并显示diff
alias ls="ls --color"                       环境变量中加入此,让文件和文件夹有颜色,也适用docker内容器

sort filename | uniq -c| sort -nr           文件中每一行为一个单词。统计单词出现的次数
timedatectl                                 查看系统时区信息
sort -n test.txt | uniq                     去掉重复的行
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr   查看进程打开的句柄数,并排序
mount -o size=20g  -o  remount  /xx/shm     调整容器共享目录大小
#将当前目录下的所有含有"github.com/v2"替换成"gitlab.xx.com/hdfs-v2"
grep "github.com/v2" -rl . | xargs sed -i "s/github.com\/v2/gitlab.xx.com\/hdfs-v2/g"
iotop                                       查看 io top情况
iostat -kx 1                                io统计,-k 以kb为单位,x 表示显示详情, 1代表每秒
cat xxx | grep xx -C10                      grep 关键字前后10行
rsync -a --delete --progress blank target   删除大文件夹,创建一个空目录

###k8s

kubectl get nodes                    # 显示所有k8s的node
kubectl label node rsync.gpu003.turing.k8s.js.ted ORION_BIND_ADDR=orion-sogou  #为rsync.gpu003.turing.k8s.js.ted节点打个标签
kubectl get node --show-labels       # 显示所有节点的标签
kubectl label node rsync.gpu003.turing.k8s.js.ted ORION_BIND_ADDR-  # 删除rsync.gpu003.turing.k8s.js.ted的ORION_BIND_ADDR标签,只需key加 - 号
kubectl replace -f xxx.yml           # 更新
kubectl apply/create -f xxx.yml      # 创建
kubectl get daemonset/service/pods   # 显示所有的...
kubectl delete -f deploy-server.yaml # 删除某个资源  比如storageclass
kubectl delete pods <pod>            # 删除pod,强制删除 --grace-period=0 --force
kubectl get pvc --namespace csi-dev-demo   # 指定namespace空间下的pvc
kubectl logs csi-demo-driver-7896db98ff-tl95c --namespace csi-dev-demo -c csi-demo-driver   # 查看失败日志
kubectl describe pod csi-hdfsmount-controller-f8559596d-bgd7g --namespace csi-hdfsmount     # 查看失败日志
kubectl delete pv xxxx              # 可能删除不掉,pv状态变成 terminal,此时执行下一条命令
kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'   # 删除状态是terminal的pv
kubectl exec -it -n thanos csi-hdfsmount-controller-86d87bcfd5-jz6rz --container csi-driver-hdfsmount -- /bin/sh # 进入pod的某个容器,-n为namespace缩写

# node节点 notReady 排查
journalctl -f -u kubelet


###kerberos

kinit XXX@realm.com       生成临时的keytab缓存,产生 /tmp/krb5_cc0文件
klist -l                  显示当前的keytab
kdestroy                  清除缓存
klist -e -k -t xx.keytab  查看keytab及pricipal

###字段截取操作

awk -F '[,\" \t]' '{print $NF}'  fileName >1.txt   以,逗号,引号,空格,tab分割,打出最后一个字段重定向
sed -e '/items/d' a.txt >b.txt                     删除含有items字符串的行
cat b.txt  | grep -v items                         隔出掉含有items的行

###shell免密码执行某个命令

expect -c "set timeout -1;
        spawn scp guest@$127.0.0.1:$path/xxx $output/
        expect {
                *(yes/no)* {send yes\r; exp_continue;}
                *password* {send \"12345678\r\"; exp_continue;}
                eof {exit 0;}
        }";

expect实现免密的命令,需安装响应的包。spawn是expect内部命令,用来实现传递交互指令。send和手工敲相关的命令等效

###Docker操作

docker images                                  显示本地的镜像
docker push/pull xxxxxx:5000/xx/xx:version     上传镜像到远程仓库/从远程仓库拉取镜像
docker ps                                      显示运行的container,-a显示运行过的container
docker run -i -t -d  xxx  /bin/bash -c 'sh /tmp/1.sh'   运行镜像,-i交互,-t终端方式,-d后台运行。-c后使用sh执行某个脚本
docker exec -i -t xxx /bin/bash                在运行着的容器里执行命令bash
docker kill contanerID                         杀掉某个运行的容器
docker start/restart/stop contanerID           启动/重启/停掉某个容器
docker rm [-f] contanerID                      删除容器,多个用空格分割,-f 可删除一个正在运行的容器
docker rmi imageID                             删除镜像
docker cp containerID:/path/to/file /path/target                将容器里的某个文件拷贝到宿主机上
docker run -v /path/target:/path/source containerID /bin/bash   将宿主机的目录挂在在容器source目录
docker inspect containerID                     查询容器的信息
docker version/--help                          显示版本和查询帮助
systemctl stop docker                          暂停docker服务
docker commit -a "提交者" -m "提交信息"  containerId 名称:版本    将修改后的container保存成镜像
docker commit --pause=false containerId xxx    不停服务commit容器
docker tag image resposity:version             给当前的image打个tag别名
docker run -it --pid host --net=host  --privileged -v /tmp:/tmp  imID  /bin/bash  将本机进程映射到docker,类似进程挂载
systemctl daemon-reload                        重启守护进程,docker配置更改后都需要执行加载
systemctl restart  docker                      重启docker服务
docker images|grep none|awk '{print $3}'|xargs docker rmi       删除tag和仓库为none的镜像(更新频繁产生的none镜像)
journalctl -f -u docker.service                打印docker daemon日志
docker system df                               查看docker磁盘使用情况
docker system prune                            删除关闭的容器、无用的数据卷和网络,以及无tag的镜像(慎用)
docker system prune -a                         可以将没有容器使用Docker镜像都删掉(慎用)
docker run --entrypoint /bin/bash xxx          执行指定的命令,可解决 “/bin/bash: cannot execute binary file” 错误
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"  查看容器的cpu和mem --no-stream采集一次,去掉每一秒刷新一次
docker ps --filter"status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm   删除weeks的docker容器
docker save -o test.tar docker.io/horovod/horovod:0.20.0-tf2.3.0-cuda10.1  镜像保存成 tar文件
docker load < test.tar  导入save的镜像tar文件

###Crontab定时任务



 

25 * * * * sh -x /tmp/pa.sh >/xxx/log/`date -d yesterday +'\%Y-\%m-\%d-\%H'`.log 2>&1     按年月日打日记
50 23 * * * sh -x /tmp/mary.sh $(date +"\%Y\%m\%d") >/xxx/clu_sm.log 2>&1                    传入时间参数
43 21 * * *                         21:43 执行
15 05 * * *                         05:15 执行
0 17 * * *                          17:00 执行
0 17 * * 1                          每周一的 17:00 执行
0,10 17 * * 0,2,3                   每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * *                       毎月1日从 17:00到7:10 毎隔1分钟 执行
0 0 1,15 * 1                        毎月1日和 15日和 一日的 0:00 执行
42 4 1 * *                          毎月1日的 4:42分 执行
0 21 * * 1-6                        周一到周六 21:00 执行
0,10,20,30,40,50 * * * *            每隔10分 执行
*/10 * * * *                        每隔10分 执行
* 1 * * *                           从1:0到1:59 每隔1分钟 执行
0 1 * * *                           1:00 执行
0 */1 * * *                         毎时0分 每隔1小时 执行
0 * * * *                           毎时0分 每隔1小时 执行
2 8-20/3 * * *                      8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * *                       1日 和 15日的 5:30 执行


###vi/vim操作(命令模式)


:1,$s/ee/hehe/g                          vim将文档中出现的所有ee-->hehe,参数g相当于递归之意
:%s/test//gn                                   统计test字符串出现的次数,小写s,而且gn前是两个 //
:set nu     显示行号
:set paste 设置成粘贴模式,不会改变 # 注销后面的内容
dd           删除光标所在行
gg           光标回到文首
shift + g  跳到文件末尾行
9+G        跳到文件第9行
:200,.d    删除200行到当前行的所有行,.代表当前,d代表删除
可视化操作: shift +v ,ctrl+v进入 可视化操作,前者一次向下移动一次能选中一行,后者只能选中当前光标能到的最大列
按方向键选中内容,shift+i表示插入,输入后按esc
按方向键选中内容,按d删除选中的列,删除行shift+d
p        复制使用dd删除的行
u        撤销上一步操作
/xx     正向查找xx字符
?xx    反向查找xx字符
vi粘贴文本时,会自动缩进,如何格式化呢?

  •  按两下小写g,即gg,定位光标到第一行行首
  •  按住Shift+v,进入可视化编辑的模式
  •  Shift+g,选中整个代码
  • 按下等号=,格式化所有代码

###路由篇

route                              显示网关等信息
ifconfig                           显示ip/掩码
ip ro sh                           显示路由信息
ip ro del default                  ip router简写,删除路由
# 添加default到10.20.255.254(网关)的路由,经过enp2s0网卡,使用静态协议,连接数为1024
ip ro add default via 10.20.255.254 dev enp2s0 proto static metric 1024  
ifconfig eth0 down/up              打开/关闭 网卡
/etc/init.d/network restart        重启网络服务
/etc/resolv.conf                   域名服务器配置文件,如 114.114.114.114。解决内网链接不了外网

###频率篇

cpufreq-set -g performance         设置cpu在频率最高的模式
cpufreq-set -c 0 -g userspace -d 180000 -u 240000       设置cpu0的最小频率和最高频率
cpufreq-info                       显示cpu模式以及支持的频率
cpufreq-set -f 1500000             设置cpu频率,该模式只能在userspace模式
                                   Intel 笔记本有睿频的貌似修改不了频率,
                                   如果没有userspace模式,可以使用下列方式启用
vim  /etc/default/grub             将quiet splash ----> quiet splash intel_pstate=disable
sudo update-grub                   更新grub
sudo reboot                        重启生效

###磁盘相关

du -h --max-depth=1    列出当前一级目录大小
df -h                  查看磁盘使用情况,包括可用和已用等,常用检测磁盘是否有空间
lsof | grep xxx        查看含有xxx字段的进程,可得到进程pid
kill -9 pid            杀死进程及相关的进程

###增加swap分区   

sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=512M count=1      从/分出1个512M大小的空间
sudo mkswap /mnt/512Mb.swap     对该镜像文件格式化
sudo swapon /mnt/512Mb.swap     挂载该镜像文件
sudo  vim /etc/fstab            让其开机有效(可选)
#添加 /mnt/512Mb.swap  swap swap defaults 0 0至此,使用free -m 即可查看到swap空间已经增加成功
swapoff /mnt/512Mb.swap         删除刚分的空间


###CURL命令参数  

curl:命令行下工作的文件传输工具,后常接网站。默认使用get请求
    -o/O:重命名/使用源文件名
    -L:允许网站自动中转站点
    -C:断点续传
    --limit-rate 1000B:最大网络使用限制
    -u usrn:passwd:提供登陆授权
    -T "{f1,f2}":指定本地文件
    -x proxxy:port:指定代理
    -i/I:响应带头和源码/只带头
    -X POST:指定请求方式,POST可以是其他如PUT/DELETE
    -k insecure方式
    -v verbos 打印细节
    -E xx.pem:指定证书

curl -H "Content-Type:application/json" -X POST -d '{"user": "admin", "passwd":"12345678"}' http://127.0.0.1:8000/login

### 终端快捷命令

CTRL + w		;;删除光标前的一个参数,以空格为分隔
CTRL + r		;;查找历史最近一次执行命令,命令需输入,前缀匹配
CTRL + y		;;撤销终端上一次快捷键操作
CTRL + ←/→		;;光标向左或向右跳一个单词 
CTRL + u		;;删除光标前的所有
CTRL + k		;;删除光标后的所有


###格式化U盘篇

sudo fdisk -l                   找出u盘的盘符,假设是/dev/sdb1
sudo umount  /dev/sdb1          umount u盘,解决"contains a mounted filesystem"错误
sudo mkfs -t vfat /dev/sdb1     非启动u盘,格式化为fat32格式,其他还支持ext2\ext3等
sudo mkfs.vfat -I /dev/sdb      启动盘格式化,-I 解决"Device partition expected,
                                not making filesystem on entire device "

###小红帽系列篇

rpm -ivh 软件包名                  安装软件包
rpm -qa  软件名                    查询已经安装的软件
rpm -ql  软件全称                  查询与软件相关的目录
rpm -q   软件包名                  查询指定软件包是否已经安装
rpm -Uvh 软件包名                  升级一个软件包
rpm -e   软件包名                  删除指定软件包
yum-builddep xxx.spec             安装某个软件的依赖环境
systemctl stop firewalld.service  fedora关闭防火墙
rpm -qf /lib64/libgo.so.7         查看libgo.so.7安装什么包添加的
yumdownloader 软件                下载相应的软件包
yum localinstall xxx.rpm          本地安装软件包,同时安装依赖包

###运维

pssh命令,用于在中控机对其余有信任的机器执行命令
新建一个 hosts文件,存放需要执行命令的机器ip,内容类似

test@192.168.56.102
test@192.168.56.103
test@192.168.56.104

使用方式 pssh [OPTIONS] command [...],例如ls 每台机器的tmp目录存放早pssh目录下

pssh -h hosts.txt -i -o /tmp/pssh/ 'ls /tmp'


###Ubuntu篇   

sudo su -                                 切到root用户
apt-get build-dep qemu
apt-cache search                          软件名搜索服务器是否有此软件包
dpkg -l 软件名                             查看安装的某个包的全称
dpkg -L 软件名                             查看某个软件包安装的目录
sudo grub-mkconfig>/boot/grub/grub.cfg    双系统windows启动项丢失


###Windows篇   

net stop sharedaccess       windos关闭防火墙
ipconfig                    显示ip
dir                         类似linux ls
win + r                     快速打开 运行 界面

###重要的网站篇

http://www.docjar.com/jar_detail/libfb303.jar.html      下载jar包的网站
http://mvnrepository.com/                               maven中央仓库
http://rpm.pbone.net/                                   rpm包搜索
https://docs.docker.com/engine/admin/                   docker 配置deamon
http://www.geforce.cn/drivers                           nvidia 历史驱动

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值