(持续更新) linux 命令总结

目录

###查看系统信息

###awk

### git

##杂项篇

###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 [email protected]     配置本地用户的伊妹儿
git config --global http.sslVerify false            解决git克隆需要证书问题
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
git push origin xxx -f                              联合reset使用撤销远程上一次提交,本地必须是xxx分支
git config --global color.ui true                   启用颜色
git config --global core.whitespace cr-at-eol       忽视换行符差异,^M     
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                            撤销单个文件
git config core.autocrlf false                      解决LF will be replaced by CRLF
 
编写 .gitignore 文件,和 .git同级,用于忽略配置

 

##杂项篇

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                            弹出挂载
: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库
ps -aux | grep "xxx"                        列出进程并grep
ps -ef | grep xxx                           列出所有xxx的进程
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


###kerberos

kinit [email protected]       生成临时的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 "提交信息"  container名 名称:版本    将修改后的container保存成镜像
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镜像都删掉(慎用)

###Crontab定时任务


(持续更新) linux 命令总结_第1张图片
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                    传入时间参数


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


:1,$s/ee/hehe/g                          vim将文档中出现的所有ee-->hehe,参数g相当于递归之意
:%s/test//gn                                   统计test字符串出现的次数,小写s,而且gn前是两个 //
:set nu     显示行号
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
    -E xx.pem:指定证书

### 终端快捷命令

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          本地安装软件包,同时安装依赖包


###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关闭防火墙

###重要的网站篇


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

 

 

 

你可能感兴趣的:(linux命令总结,crontab,kerberos客户端命令,docker命令)