目录
###查看系统信息
###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 -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
常用变量说明:
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 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
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的行
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 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镜像都删掉(慎用)
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 传入时间参数
: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粘贴文本时,会自动缩进,如何格式化呢?
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 杀死进程及相关的进程
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:命令行下工作的文件传输工具,后常接网站。默认使用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 ;;删除光标后的所有
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 本地安装软件包,同时安装依赖包
sudo su - 切到root用户
apt-get build-dep qemu
apt-cache search 软件名搜索服务器是否有此软件包
dpkg -l 软件名 查看安装的某个包的全称
dpkg -L 软件名 查看某个软件包安装的目录
sudo grub-mkconfig>/boot/grub/grub.cfg 双系统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