常用 shell bash git docker,进阶

常用bash:

# 文件夹大小统计
du -sh *
# 磁盘利用率
df -TH
# 文件升序,可加 " | less " 或" > t.txt "
ls -lSr
# 按规则查找文件并删除
find . -type f -name "*.png1" | xargs rm

# 桌面为服务器应用创建日志目录,方便清理、记录
sudo ln -s  /Users/mrchow/Desktop/log/pay_gateway /var/log/pay_gateway

# 监听日志文件动态刷新,显示200行
tail -f200 /private/var/log/xxx_app/xxx.log

# 查看文本,-N展示行号,-m显示百分比;
# 空格键翻页、J上一行K下一行;/字符 —— 向下查找;?字符 —— 向上查找;n重复前一个搜索;N向上搜索;q退出;G到文件结尾
less -Nm sshd.config

# 查看log.txt文本,从第1000行开始,每页10行;
# 空格键翻页
more +1000 -10 log.txt

# 查看文本前5行
head -n 5 sshd.config

# 根据端口号查进程pid
lsof -i:$port
netstat -nap|grep $port
# 根据进程号查端口
netstat -nap|grep $pid
# 根据服务路径/关键词查看进程
ps -ef|grep java 查看进程pid
# 根据进程pid查看进程
ll /proc/pid/cwd 查看服务安装路径
# mac根据端口号查进程启动详情
lsof -i :$port | grep -i LISTEN | awk '{print $2}' | xargs -I {} ps -o command -p {} | tail -n +2

# 查看系统信息:
lsb_release -a

# 按CPU占用量排序,Shift + M 按内存排序, s 刷新时间
top
自己整理git:
# 查看本地分支,带星号的代表当前所在分支
git branch

#切换本地分支到master
git checkout master

#拉远端新分支
git checkout --track origin/feature/20160127_888_532656

# 将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
git checkout -b 本地分支名 origin/远程分支名

# 如失败,提示:fatal: Cannot update paths and switch to branch 'dev2' at the same time.
# 或提示:fatal: 'origin/dev_auto_purchase' is not a commit and a branch 'dev_auto_purchase' cannot be created from it 
# 如下后重试
git fetch 

# 废弃分支代码合并过来
git merge release/20160105_new_502299
# 新建本地分支
$ git checkout -b  “分支名称”
# 查看是否创建成功以及目前在哪个分支
$ git branch
# 本地推送到远程
$ git  push -u origin "分支名称"

#本地分支关联远程分支
git branch --set-upstream-to=origin/daily/0.3.9 daily/0.3.9

git add --all .

git commit -am '备注'

#合并到远程分支
git push origin feature/20160127_888_532656

git pull

#恢复某个已修改的文件(撤销未提交的修改):
git checkout xxx.xxx

#还原最近一次提交的修改:
git revert HEAD

#还原指定版本的修改:
git revert commit-id

#推分支
git push origin feature/20160214_api_542543

git fetch --all && git fetch -ts

#版本差异 git diff 版本号码1 版本号码2  src 
git diff 35a0637 aff8b70

#备份当前的工作区的内容,并让工作区和上次提交的内容一致
git stash

#从Git栈中读取最近一次保存的内容,恢复工作区的相关内容
git stash pop

#显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
git stash list

#已add但未commit
git rm --cached xxx.xx
git reset HEAD <file>

#已commit但未push
git reset --soft HEAD^

#本地与远程提交日志差别(未push的日志)
git log xxbranchnamexx ^origin/xxbranchnamexx

#其他分支35a0637版本的修改合并过来
git cherry-pick 35a0637

#查看版本记录(完整版本号)
git log

#基于当前主干/分支的某完整版本号(abc),创建新分支(bug-fix),并切换到新分支
git checkout -b bug-fix abc

#本地分支推到远程分支
git push origin bug-fix:bug-fix  # 本地新分支名:远程新分支名(不存在则创建)

# 删除远程分支
git push origin --delete xxxx

# 删除本地分支
git branch -D <BranchName>
其他git:
# 查看自己的用户名和邮箱地址:
  $ git config user.name
  $ git config user.email
# 修改自己的用户名和邮箱地址:
# config 配置有system级别、global(用户级别)、和local(当前仓库)三个级别
# 局部的不加 --global 只对当前仓库起效,配置信息在当前仓库根目录/.git/config文件下
  $ git config --global user.name "xxx"
  $ git config --global user.email "xxx"
# git的配置列表:
git config --list
# 修改默认分支名
git config --global init.defaultBranch <default-branch-name>

# 忽略不同电脑下换行符差异
git config --global core.autocrlf input
# 忽略不同电脑下文件权限差异(非全局)
git config core.fileMode false

#已放在.gitignore里的文件,还是有人提交了
git update-index --assume-unchanged $filename
#撤销上述
git update-index --no-assume-unchanged $filename
git 合并两个仓库代码(主仓库合并到分支仓库):

可以参考下 基础版本 + 多定制版本 的git 解决方案

# 背景:从基础版仓库fork到定制版仓库中,基础版仓库有更新后要先将基础版仓库代码合并到定制版仓库中,然后解决冲突后再提pr。
# 主/基础版仓库:baseGit:master
# 分支/定制版仓库:MineGit:master
# 在定制版仓库目录下操作:
# 1:将主仓库的地址添加到分支的远程仓库中 //git remote add 仓库名称 地址
  $ git remote add baseGit git@github.example.com:baseGit/code.git
# 看见定制版仓库有两个远程仓库:baseGit  origin
  $ git remote
# 2:抓取仓库数据到定制版仓库中 //git fetch 仓库名称
  $ git fetch baseGit
# 3:创建一个新的分支baseMaster //这一步是将远程主仓库的代码在本地定制版仓库新建一个分支,稍后会将这个分支的代码和本地代码merge,这样也就是将基础版仓库代码和定制版仓库的代码merge了
  $ git checkout -b baseMaster baseGit/master
# 4:切换到本地分支://现在本地有两个分支:1个是之前的master ,这个分支的代码就是自己仓库的代码。1个新增的分支baseMaster 这个是主仓库的代码
  $ git checkout master
# 5:合并两个分支(也就是将两个仓库的代码merge) //git merge 分支名称
  $ git merge baseMaster
自己整理Docker:
# ps -aux|grep http
# netstat -tnlp | grep :80
#启动docker
systemctl start docker
#关闭docker
systemctl stop docker
#重启docker
systemctl restart docker
#docker设置随服务启动而自启动
systemctl enable docker
# 查看docker 运行状态,如果是在运行中 输入命令后 会看到绿色的active
systemctl status docker
# 查看docker 版本号信息 将当前用户加入到cocker组可以省sudo
docker version
# 一些统计信息
docker info
# 服务器中存在的镜像
sudo docker images
docker search <镜像名>
# 不加:tag则拉取最新版本
docker pull <镜像名>
docker pull <镜像名>:tag
docker run <镜像名>[:tag]
# 删除单个/多个镜像,镜像ID或镜像用空格隔开即可 
docker rmi -f <镜像名/镜像ID> [<镜像名/镜像ID>]
# 保存镜像
docker save <镜像名/镜像ID> -o <镜像将要保存的位置与名字>
# 加载文件恢复为镜像
docker load -i <镜像保存的位置与名字>
# 根据镜像添加新的镜像+标签
docker tag [源镜像名]<:TAG> [想要生成新的镜像名]<:新的TAG>
# 运行的容器
sudo docker ps
sudo docker ps  -a
# 运行一个容器 -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字 --restart=always 容器随docker服务启动而自动启动  /bin/bash  交互路径
# 数据挂载,可多条: -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
docker run -it -d --name <要取的别名>  [-p <宿主机端口号>:<容器端口号>] [--restart=always] <镜像名>:<Tag> /bin/bash
# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
sudo docker stop <容器名/容器ID>
sudo docker start <容器名/容器ID>
sudo docker restart <容器名/容器ID>
sudo docker rm <容器名/容器ID>
# 进入容器
sudo docker exec -it <容器名/容器ID> /bin/bash
# 容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
linux要查看末尾多少行 默认all 容器ID
# 查看容器的挂载目录
docker inspect <容器名/容器ID> | grep Mounts -A 40
# 检查nginx配置是否正确
sudo docker exec -it myNginx nginx -t

# 部署在了同一个宿主机的不同容器网络中, (不同网段、不同网桥的网络环境中,即不同的networkspace中。部署在同一个网桥上,就相当于在一个networkspace中,类似于k8s中的一个pod内),在这种情况下就必须将两个容器网络打通
sudo docker network ls
sudo docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 net_nginx
# 这个不需要 sudo docker network create --driver bridge --subnet 10.0.0.0/8 --gateway 10.10.0.1 net_wordpress
# run创建容器时指定网络应加参数: --net net_nginx
# 之前没加,则运行时指定网络:
sudo docker network connect  net_nginx myNginx
# 查看容器网络内的信息(IP为 192.168.0.2/16)
sudo docker inspect net_nginx | grep Containers -A 50
# 网络连通就是将一个容器和一个网络进行联通
sudo docker network connect  net_nginx wordpress
# 查看是否将wordpress容器加入到了 net_nginx 网络内 (IP为: 192.168.0.3/16)
sudo docker inspect net_nginx | grep Containers -A 50
# 重新配置nginx配置,运行OK

sudo docker logs wordpress  -f
sudo docker container cp 664c85a2932c:/etc/apache
sudo docker cp envvars 664c85a2932c:/etc/apache2/envvars
sudo docker logs 664c85a2932c
sudo docker logs openrest
sudo docker run --name myNginx -d -p 80:80 -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/config/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/log:/var/log/nginx nginx

sudo docker run -it -d --name wp --link wordpressdb:wpdb -p 8087:80 --restart=always -v /data/www_wp:/var/www/html wordpress /bin/bash
sudo docker ps  -a
sudo docker logs -f --tail=50 wp

另一个博客

高级bash: chattr
如何在vim 中打出 ^M, ctrl + v +m 可以输出 ^M。cat 带有^M的一行字符串时,屏幕上会把 ^M 之后的内容在同一行换行后输出,这样就会覆盖掉^M之前的内容,导致这行前部分内容被覆盖。使用

cat -A 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值