dns
回家后发现家里的新拉的光纤是移动的,但是移动居然对53端口的udp实行完全拦截,也就是dns拦截。想起之前在宿舍使用的cloudflare的json格式的DoH还有DoT,所以决定搞一搞。
回家后发现家里的新拉的光纤是移动的,但是移动居然对53端口的udp实行完全拦截,也就是dns拦截。想起之前在宿舍使用的cloudflare的json格式的DoH还有DoT,所以决定搞一搞。
$引用,如$FUCK或${FUCK},花括号只起边界作用readonly xxxx,将xxxx设置为只读变量,只读变量不允许修改和删除unset可以删除变量"ahh"${agg}"ahhhh"${string:1:2}${#string}a=(var1 var2 var3)a[n]=111$(a[n]),使用@可以获取数组全部元素${#a[*]}$0: 可执行文件文件名$#: 传递参数数量$*: 传递的所有参数$$: 当前运行脚本的PID$@: 和$*一样$-: 显示Shell使用的当前选项$?: 最后命令的退出状态。0表示没有错误,其他任何值表明有错误
[ $var -eq 0 ]-eq 相等-ne 不等-gt 大于-lt 小于-ge 大于或等于-le 小于或等于[ -e $var ]-b 是否块设备文件-c 是否字符设备文件-d 是否目录-e 文件是否存在-f 正常文件路径或文件名-x 可执行文件-L 是否符号连接-r 是否可读-w 是否可写[[ $var1 = $var2 ]],test $var1 = $var2[[ $var1 != $var2 ]][[ -z $str1 ]][[ -n $str1 ]]! 非-o,|| 或-a,&& 与printf format-string [arguments...]
1 | a=10 |
1 | for var in item1 item2 ... itemN |
1 | while condition |
1 | case 值 in |
参数获取方式和cmd的参数获取一致
1 | [ function ] funname [()] |
docker build . 并不是指定dockerfile的路径,而是指定了构建时ADD和COPY的上下文路径,然后根据这个路径将文件加入&复制到镜像中
RUN是在构建镜时执行一次的shell脚本
WORKDIR)--chown=<user>:<group>修改目标权限 COPY --chown=55:mygroup files* /mydir/ADD URL,将链接文件下载到指定位置,然后设置权限600ENV <key> <value>ENV <key1>=<value1> <key2>=<value2>...--build-arg <参数名>=<值>在执行时加入HEALTHCHECK 支持下列选项:--interval=<间隔>:两次健康检查的间隔,默认为 30 秒;--timeout=<时长>:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;--retries=<次数>:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次。ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行docker container start1 | // 初始化信号量sem的初始值为value |
1 | // name是名称 |
示例
1 | int pid = fork(); |
1 | // 阻塞获取,值-1 |
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、信号、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC
网上好像用软链的方法挺多的,今天不是用软链方式(主要是我失败了)
老生常谈的问题
捣鼓了这么久,总算是实现在树莓派3b上开启支持ipv4和ipv6的热点,真是不容易,网上各种傻x桥接,根本跑不起来,看着都气人。