Shell语法参考
几点注意事项
一次执行多条命令,可以有如下三种方法, 其区别如下:
分号: 顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行
&& : 顺序执行各条命令, 只有当前一个执行成功时候, 才执行后面的
|| : 顺序执行各条命令, 只有当前面一个执行失败的时候, 才执行后面的
设置shell脚本遇到错误时自动退出, 不执行后续命令
1#!/bin/bash -e 或者 set -e
特殊符号使用12345678910> 覆写原先的内容>> 在原先的内容后追加$? 前一个命令或者函数的返回码, 0表示执行成功$1 表示第一个参数,$2 表示第二个$# 命令行参数的个数$0 当前程序的名称$* 以"参数1 参数2 ..."的形式保存所有参数$ 本程序进程PID$! 上一个命令的PID脚本内取得输入命令时的参数: $n n代表第几个参数
特殊文件
/dev/null 重定向到此文件的数据都会被系统丢掉
/dev/tty 自动重定向到一个终端
函数使用
注意: ...
Linux常用命令参考
当做个人字典使用, 会进行不定期更新!
tar打包与压缩命令。
常用参数:
-c (–create) 建立新的备份文件
-x (–extract) 从备份文件中还原文件
-z (–gzip或–ungzip) 通过gzip指令处理备份文件
-v (–verbose) 输出执行过程中的详细信息
-f (–file) 指定备份文件
12345# 将/home文件夹下所有内容打包压缩成home.tar.gz文件tar -czvf home.tar.gz /home# 将home.tar.gz文件解压到当前目录tar -xzvf home.tar.gz
getops该命令可以用来解析命令行参数。
以下表示获取命令行参数 -d -t的值
1234567891011while getopts 'd:t:' OPT; do case $OPT in d) echo "d $OPTARG" exit 0;; t) echo "t $OPTARG";; ?) ec ...
docker安装confluence
自己搭建一个confluence wiki,现记录一下搭建过程和其中需要注意的点。
编写docker-compose12345678910111213141516171819202122232425version: '3'services: db: image: postgres:latest container_name: confluence-db ports: - "15202:5432" restart: always environment: - POSTGRES_PASSWORD=123456 volumes: - /opt/docker/confluence/pgsql-data:/var/lib/postgresql/data confluence: image: cptactionhank/atlassian-confluence:latest container_name: confluence ports: - "15 ...
红米AC2100刷pandavan及设置无线中继
获取SSH权限
打开本地浏览器输入192.168.31.1并登陆。
右上角选择固件升级, 升级到有漏洞版本2.0.7( 文件名:miwifi_rm2100_firmware_d6234_2.0.7.bin)
刷完重启后重新输入192.168.31.1登陆管理页,此时的浏览器地址栏如下(注意stock=后面的值每个人是不一样的):
http://192.168.31.1/cgi-bin/luci/;stok=ODJ893023kd2344224kdF/web/home#router
将stok=ODJ893023kd2344224kdF显示的值 复制替换到如下链接对应位置并浏览器打开:http://192.168.31.1/cgi-bin/luci/;stok=你浏览器显示的值/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's ...
spring中的设计模式
本文结合spingboot的源码描述一下spring中运用到的几种点典型的设计模式。
工厂模式本身也能产生bean, 例如其中一个实现类:```AbstractFactoryBean```,123456789101112131415getObject()方法源码如下:```java @Override public final T getObject() throws Exception { //单例从缓存中获取或者暴露引用(用来解决循环引用) if (isSingleton()) { return (this.initialized ? this.singletonInstance : getEarlySingletonInstance()); } else { //创建实例 return createInstance(); } }
其最终创建实例的方法是createInstance, 该方法由其子类工厂去实现, 具体的子类有如下几种:
例如mybatis的SqlSes ...
springboot启动流程及原理剖析
SpringBoot应用打出的jar包, 是可以直接使用 java -jar XXX.jar 命令直接启动的, 那么背后的原理是怎样的?
JarLauncherjar包结构首先先看一下springboot的jar包结构是什么样的。
新建一个springboot工程(可以直接使用idea自带的Spring Initializer创建), 然后使用mvn clean package打包, 使用压缩软件打开jar包, 观察其内部结构如下:
12345678910111213141516.├── BOOT-INF│ ├── classes│ │ ├── application.properties│ │ ├── cn│ │ ├── static│ │ └── templates│ └── lib│ ├── spring-core-5.2.2.RELEASE.jar│ ├── spring-webmvc-5.2.2.RELEASE.jar│ ├── ...// 这里略了大量jar包├── META-INF│ └── ...
树莓派使用另一主机的硬盘
实现效果:不实际接入真实硬盘, 而是使用局域网内(公网主机也行, 只是速度取决于带宽)另一主机上的硬盘(或者是目录)
实现方案: 使用NFS来实现
准备:
一个树莓派
一台Linux主机, 系统Ubuntu 20.04, ip是10.0.0.239
操作步骤:
服务端(Linux主机)
IP为10.0.0.239的主机安装nfs server
1sudo apt install nfs-kernel-server
创建nfs共享目录(如果已经存在, 可以不创建), 也就是要挂载到树莓上的目录
1mkdir -p /mnt/media/download
配置nfs服务, 编辑配置文件:vim /etc/exports, 添加一行
1/mnt/media/download *(rw,sync,no_root_squash,no_subtree_check)
各个字段说明如下:
/mnt/media/download: 要共享的目录
*:指定可以访问共享目录的用户 ip, * 代表所有用户。192.168.3. 指定网段。192 ...
红米AC2100 openWrt设置无线中继
红米AC2100刷openWrt的教程:http://openwrt.ink:88/archives/s-breed
刷完之后, 设置无线中继的步骤记录一下。这里使用2.4G的频率来作为客户端接收上一级信号, 然后使用5G频率作为服务端发射无线信号。图片是已经设置好之后截的, 所以有些地方可能有些不一样。
选择 网络 - 无线, 选择2.4G旁边的扫描按钮,加入网络, 选择需要中继的上一级网络, 然后填写密码, 其他默认即可。然后点击保存。
进入网络-接口页面, 点击 LAN条目的编辑, 注意此时已经有一个刚刚加入的wwan网络。
除了刚才新添加的wwan网络, 其余的全部勾选上
以上已经完成。 若不想开启2.4G的发射信号, 去无线页面禁用或删除2.4G的即可。
基于docker-compose+prometheus+grafana搭建Linux监控
基于docker-compose、prometheus、grafana来搭建Linux服务器的监控。
用到的几个expoter说明:
node-exporter: 监控整个主机所有资源
cadvisor: 监控容器资源
创建目录在主机上创建一些目录, 用来持久化监控数据和配置
123mkdir -p /opt/docker/monitor/configmkdir -p /opt/docker/monitor/datachmod 777 /opt/docker/monitor/data
创建docker-compose.yml切换到/opt/docker/monitor目录, 新建docker-compose.yml, 内容如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859version: '2'networks: monitor: driv ...
mybatis相关
在springboot中打印sql语句, 在配置文件中添加:
1mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl