docker基础知识积累
1.进入一个已经start的container
#如果没有安装bash,需要apk add bash
docker exec -it <container_id> /bin/bash
2.根据Dockerfile构建镜像
docker build -t <image_name:tag_id> .
3.运行构建好的镜像为容器
#d为demon
docker run -itd <image_id>
4.删除容器
docker rm -f <container_id>
5.docker访问宿主
docker如果在windows下,那么在docker容器内ifconfig,假设:172.17.0.3,则宿主为:172.17.0.1
docker如果在mac下, `docker.for.mac.host.internal` 则为宿主域名
PHP开发中一些小技巧
我们用php-cli写一些业务常用逻辑,然后需要打印一些有用信息到终端时,通常的
echo
var_dump
往往在显示数据较多多时滚动显示,这样不方便肉眼盯数据,此时可以用如下逻辑实现wget
下载文件滚动条的实现:
<?php
for($n = 1; $n < 100; $n++) {echo chr(3); // 输出文本结束控制字符,这样可以清除之前输出的文本内容 echo chr(8); // 将前一个控制字符删掉,避免在控制台留下控制字符的标记 echo "inserting row $n\r"; sleep(1); // 延时一秒是为了看清楚文字变化
}
- model中有很多常量,建议开发者以
group
的方式设置:
例如 :STATUS_ON
,STATUS_OFF
, windows下面添加服务
首先需要定义一个可执行的bat文件,大致如下@echo off start "C:\Windows\System32\cmd.exe" cd C:\xxxx\bbbb ## 这里是执行的具体内容 exit
添加服务
sc create frp binPath= C:\Users\Administrator\Desktop\frp.bat start= auto
然后到
ctrl+shift+esc
找到服务,启动- 当你对一个数组元素
unset
之后,你一定要小心,这个时候php由于中间缺了一个不连续的key,在json_encode
的时候就会有key参与到json中,需要用array_values 重新构建索引
5.放弃ps -ef | grep nginx
这种丑陋的做法吧,请使用pgrep
6.通过终端写入多行数据到一个文件
cat <<EOF > hello.php
<?php
echo "xueshop.cn";
EOF
一些有用的linux命令
这里整理一些有意思的linux命令,方便忘记命令查看
- 查找某个目录最大的文件
- 删除某个目录下的6个月之前修改的文件
- 统计文件夹内部文件总大小
- 查看端口占用情况,以及被谁占用
- 同步目录到另一台服务器指定目录
- 替换指定几行的字符串
- 替换当前目录下匹配文件的字符串为另一个字符
- 查看LINUX发行版的名称及其版本号的命令
- 根据nginx日志统计最大qps
- ssh登陆使用指定密钥登陆
- 查看linux占用的端口号
- 指定文件列宽(给你一长串不换号文本转换后方便查看)
- 查看文件夹的容量大小
- 从id.pub文件计算指纹fingerprint
1.查找某个目录最大的文件
思路:先find+f(文件),然后对每个文件stat(-c=format),然后sort(n自然r逆序)
find -type f -exec stat -c "%s %n" {} \; | sort -nr | head -1
2.删除某个目录下的6个月之前修改的文件
find ./ -name "*.log" -mtime +180 -exec rm -rf {} \;
3.统计文件夹内部文件总大小(s=summary h=human)
du -sh
4.查看端口占用情况,以及被谁占用
/usr/sbin/lsof -i:80
5.同步目录到另一台服务器指定目录
rsync -r /opt root@10.10.10.11:/opt
6.替换指定几行的字符串
:2,10s/aaa/bbb/g #从第2行到第10行替换aaa到bbb
7.替换当前目录下匹配文件的字符串为另一个字符(经常用来修改配置文件)
sed -i "s/10.11.12.115/10.16.10.12/g" /opt/projects/deploy/config/base.php
8.查看LINUX发行版的名称及其版本号的命令
cat /etc/issue
9.根据nginx日志统计最大qps
awk -F"," '{print $1}' nginx.log | sort | uniq -c | sort -n -r | head -n 1
10.ssh登陆使用指定密钥登陆
ssh -i <identity_file> root@123.134.23.43
11.查看linux占用的端口号
netstat -an | grep "LISTEN"
12.指定文件列宽(给你一长串不换号文本转换后方便查看)
cat fileData | fold -w 64
fold -w 64 fileData
13.查看文件夹的容量大小
//这里的m可以替换为k,g(kb,mb)
du -sm ./
14.从id.pub文件计算指纹fingerprint
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
git 有用且不容易记住的命令
这里整理一些非常常用的git命令,方便忘记命令查看
1.克隆指定的分支
2.创建一个无提交记录的分支
3.合并多个commit
4.忽略暂存文件
5.共享commit在不同分支
6.跟踪远程分支并在本地创建
7.给分支做备注
8.根据commit获取分支
9.prune清理无效的远程追踪分支
1.克隆指定的分支
说明:例如php版本从4-7有非常多的分支,我只想检索5.3这个版本的时候可以这么用
git init
git remote add -t BRANCH_NAME_HERE -f origin REMOTE_REPO_URL_PATH_HERE
git checkout BRANCH_NAME_HERE
2. 创建一个无提交记录的分支
说明:开发中我在我自己创建的分支上查看log只想看到我提交的记录
git checkout --orphan BRANCH_NAME_HEAR
3.合并多个commit
说明:开发中commit了多次,最后发现一些细节可以归纳为1次commit记录,此时可以用rebase -i, 后面带HEAD~2代表合并2条
rebase -i HEAD~2
4.忽略暂存文件
说明:开发中由于刚开始没有考虑到一些文件是否要加暂存,所以经过了add或者stage,同时push过,
但是现在想接下来的修改不再加入版本库
git update-index --assume-unchanged HEAR_IS_FILE
当然这条命令也有相反的命令(取消忽略指令)
git update-index --no-assume-unchanged HEAR_IS_FILE
5.共享commit在不同分支
说明:假如在brancha 分支提交了一个commit,而这个commit是一个重要的热性代码,这时候可以将这个提交的修改打补丁到其他分支
git cherry-pick COMMIT-ID
6.跟踪远程分支并在本地创建
说明:其他开发者在某个结点从master上checkout出一个分支并开发一段时间需要你介入该分支,此时你需要在本地创建一个和远程完全一致的分支
git checkout -b BRANCH_NAME --track origin/BRANCH_NAME
7.给分支做备注
说明:例如我们的某些分支因为测试或者开发周期较长,但是分支名往往不能非常准确的说明分支的作用,这时,我们需要给分支做备注
git branch --edit-description
git config branch..description
这是本地存储的。根据定义,它不能被推送,因为它存储在 .git / config 。
如果您删除分支,说明也会一并删除。
如果您设置 git config --global branchdesc true
8.根据commit获取分支
git branch --contains <commit_id>
9.跟新代码后只想看到冲突的文件
gsb | grep "^U"
10.更新代码后只想看冲突的diff
gd --diff-filter=U
11.强制更新本地代码为原创的代码
git reset --hard origin/master
git clean -fdx
12.prune清理无效的远程追踪分支
git remote prune origin --dry-run #先查看
git remote prune origin #清理
13.清理因为不仔细而提交的二进制文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch BINARY-FILE' --prune-empty --tag-name-filter cat -- --all
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
- 统计repo的大小
git count-objects -v