主要的思想：获取所有子项长度，进行叠加得出缓存使用的大小function getStorageSize(storage){ if(typeof storage !== 'object' || storage === null){ throw new Error('计算的缓存不合法'); }else{ var size = 0; for(item in storage) { if(storage.hasOwnProperty(item)) { size += storage.getItem(item).length; } } return Number((size / 1024).toFixed(2)); } } var localSize = getStorageSize(window.localStorage); console.log('localStorage当前大小', localSize, 'kb'); var sessionSize =getStorageSize(window.sessionStorage); console.log('sessionStorage当前大小', sessionSize, 'kb');
连接数限制ssh_exchange_identification: read: Connection reset by peer应急方案应急方案1、 重启服务器（估计远程连接也连接不了的话）应急方案2、关闭ssh连接（如果可以进行远程连接）systemctl restart sshd解决方案vi /etc/ssh/sshd_config把MaxStartups值改为1000重启SSH服务，/etc/rc.d/init.d/sshd restart查看端口连接数查看22端口的连接数netstat -nat|grep -i '22' |wc -l
node脚本(使用git里面的提交号作为文件的版本号)给html中的js、css添加版本号，解决浏览器缓存引起的问题const fs = require("fs"); const { join, resolve } = require('path'); const execSync = require('child_process').execSync; const { mergeUrl } = require('./url.utils'); const findPath = resolve('./dist/template'); const rootPath = resolve('./'); //文件版本记录 const fileVersionNote = {}; const toComPath = path => path.replace(/\\/g, '/'); //获取版本号 const getVersion = (dir, fileName) => { let dirPathPart = toComPath(dir).split('/'); dirPathPart.pop(); let dirPath = dirPathPart.join('/'); fileName = fileName.replace(/^\s*(.*?)\s*$/, '$1'); if (!/^\//.test(fileName)) { fileName = join(dirPath, fileName).replace(rootPath, ''); }else{ fileName = 'dist' + fileName; } return getGitCommitVersion(toComPath(fileName).replace(/^\/(.*?)$/, '$1')); } //获取git文件版本号 const getGitCommitVersion = (file) => { let gv = null; if(/\?/.test(file)){ file = file.replace(/^(.*?)\?.*?$/, '$1'); } let noteV = fileVersionNote[file] if (typeof noteV !== 'string' || noteV === '') { if (fs.existsSync(file)) { try { gv = execSync(`git log ${file} | grep commit | awk 'NR==1' | awk -F ' ' '{print $2}'`); gv = gv.toString(); } catch (error) { } } if (typeof gv !== 'string' || gv.length < 10) { console.log('版本号获取错误', file); noteV = ''; }else{ noteV = gv.substr(0, 7); console.log('新文件git提交号：', file, noteV); } fileVersionNote[file] = noteV; } return noteV; } //读取所有的html function findHtmlAndAddVersion(dir) { if (fs.existsSync(dir)) { fs.stat(dir, (err, stat) => { if (err || !stat) { return console.error('读取文件状态错误', err); } else { if (stat.isFile()) { //只是读取html文件 if (/\.htm(l){0,1}$/i.test(dir)) { fs.readFile(dir, 'utf8', (err, data) => { if (err) { return console.error('读取文件错误', err); } else { let html = data.replace(/<link(.*?)href\s*=\s*([\'\"])(.*?)\2(.*?)>/gi, ($0, $1, $2, $3, $4, $5) => { if (/^\s*http[s]{0,1}:\/\//i.test($3)) { return $0; } else { return `<link${$1}href="${mergeUrl($3, { _gv: getVersion(dir, $3) })}"${$4}>`; } }).replace(/<script(.*?)src\s*=\s*([\'\"])(.*?)\2(.*?)>(.*?)<\/script>/gi, ($0, $1, $2, $3, $4, $5) => { if (/^\s*http[s]{0,1}:\/\//i.test($3)) { return $0; } else { return `<script${$1}src="${mergeUrl($3, { _gv: getVersion(dir, $3) })}"${$4}>${$5} `; } }); fs.writeFileSync(dir, html, function (err) { if (err) { return console.error('文件写入失败', err); } }); } }); } } else if (stat.isDirectory()) { fs.readdir(dir, function (err, files) { if (err || !Array.isArray(files)) { return console.error('读取文件夹错误', err); } else { files.forEach(file => { findHtmlAndAddVersion(join(dir, file)); }); } }); } else { console.error('文件类型识别错误', stat); } } }); } else { console.error('文件夹不存在！！！', dir); } } //添加版本号 findHtmlAndAddVersion(findPath);**注： 这里需要在linux或者在git
docker概述按照yum-config-manager工具yum -y install yum-utils安装docker-ce安装docker-ce的yum源sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #关闭使用最新版本docker-ce sudo yum-config-manager --disable docker-ce-nightly安装docker-cesudo yum install docker-ce docker-ce-cli containerd.io启动容器sudo systemctl start docker
pm2概述内建负载均衡（使用Node cluster 集群模块）后台运行0秒停机重载(维护升级的时候不需要停机).具有Ubuntu和CentOS 的启动脚本停止不稳定的进程（避免无限循环）控制台检测提供 HTTP API远程控制和实时的接口API ( Nodejs 9.模块,允许和PM2进程管理器交互 )pm2命令npm install pm2 -g # 命令行安装 pm2 pm2 start app.js -i 4 #后台运行pm2，启动4个app.js # 也可以把'max' 参数传递给 start # 正确的进程数目依赖于Cpu的核心数目 pm2 start app.js --name my-api # 命名进程 pm2 list # 显示所有进程状态 pm2 monit # 监视所有进程 pm2 logs # 显示所有进程日志 pm2 stop all # 停止所有进程 pm2 restart all # 重启所有进程 pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程) pm2 stop 0 # 停止指定的进程 pm2 restart 0 # 重启指定的进程 pm2 startup # 产生 init 脚本 保持进程活着 pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615) pm2 delete 0 # 杀死指定的进程 pm2 delete all # 杀死全部进程pm2目录卸载rm /usr/local/bin/pm2 rm -r /usr/local/lib/node_modules rm -r /root/.pm2/ `` ### pm2 自启动安装pm2npm install pm2 -g保存当前进程状态pm2 save生成开机自启动服务pm2 startup启用开机自启:systemctl enable pm2-root ### pm2 运行npm命令 ### 简单用法 1. npm run dev 2. pm2 start npm -- run dev 以上使用是等效的 #### 监听并重新命名运行（--watch监听代码变化，--name 重命令任务名称，-- run后面跟脚本名字） pm2 start npm --watch --name nickname -- run dev ### 手动删除pm2日志pm2 flush### 自动删除pm2日志pm2 install pm2-logrotate // 注意是pm2 install而不是npm installpm2 set pm2-logrotate-ext:retain 7 //保存7个文件pm2 set pm2-logrotate-ext:max_size 100M //每个备份文件大小为100M
查看磁盘中文件大小 du -sh *Linux log日志清理检查当前journal使用磁盘量journalctl --disk-usage journalctl --disk-usage清理方法可以采用按照日期清理，或者按照允许保留的容量清理，只保存2天的日志，最大500Mjournalctl --vacuum-time=2d journalctl --vacuum-size=500M如果要手工删除日志文件，则在删除前需要先轮转一次journal日志systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service统计文件夹中文件与目录大小（包含隐藏文件）du -sh .[!.]*查看磁盘使用情况df -h
Dockerfile# 从官方基础版本构建 FROM php:7.2-fpm # 1.0.2 增加 bcmath, calendar, exif, gettext, sockets, dba, # mysqli, pcntl, pdo_mysql, shmop, sysvmsg, sysvsem, sysvshm 扩展 RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext \ sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm # 1.0.3 增加 bz2 扩展, 读写 bzip2（.bz2）压缩文件 RUN apt-get update && \ apt-get install -y --no-install-recommends libbz2-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) bz2 # 1.0.4 增加 enchant 扩展, 拼写检查库 RUN apt-get update && \ apt-get install -y --no-install-recommends libenchant-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) enchant # 1.0.5 增加 GD 扩展. 图像处理 RUN apt-get update && \ apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ docker-php-ext-install -j$(nproc) gd # 1.0.6 增加 gmp 扩展, GMP RUN apt-get update && \ apt-get install -y --no-install-recommends libgmp-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) gmp # 1.0.7 增加 soap wddx xmlrpc tidy xsl 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libxml2-dev libtidy-dev libxslt1-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) soap wddx xmlrpc tidy xsl # 1.0.8 增加 zip 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libzip-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) zip # 1.0.9 增加 snmp 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libsnmp-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) snmp # 1.0.10 增加 pgsql, pdo_pgsql 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libpq-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pgsql pdo_pgsql # 1.0.11 增加 pspell 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libpspell-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pspell # 1.0.12 增加 recode 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends librecode-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) recode # 1.0.13 增加 PDO_Firebird 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends firebird-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pdo_firebird # 1.0.14 增加 pdo_dblib 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends freetds-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure pdo_dblib --with-libdir=lib/x86_64-linux-gnu && \ docker-php-ext-install -j$(nproc) pdo_dblib # 1.0.15 增加 ldap 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libldap2-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \ docker-php-ext-install -j$(nproc) ldap # 1.0.16 增加 imap 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libc-client-dev libkrb5-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-install -j$(nproc) imap # 1.0.17 增加 interbase 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends firebird-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) interbase # 1.0.18 增加 intl 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libicu-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) intl # 1.0.19 增加 mcrypt 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends libmcrypt-dev && \ rm -r /var/lib/apt/lists/* && \ pecl install mcrypt-1.0.1 && \ docker-php-ext-enable mcrypt # 1.0.20 imagick 扩展 RUN export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" && \ apt-get update && \ apt-get install -y --no-install-recommends libmagickwand-dev && \ rm -rf /var/lib/apt/lists/* && \ pecl install imagick-3.4.3 && \ docker-php-ext-enable imagick # 1.0.21 增加 Memcached 扩展 RUN apt-get update && \ apt-get install -y --no-install-recommends zlib1g-dev libmemcached-dev && \ rm -r /var/lib/apt/lists/* && \ pecl install memcached && \ docker-php-ext-enable memcached # 1.0.22 redis 扩展 RUN pecl install redis-4.0.1 && docker-php-ext-enable redis # 1.0.23 增加 opcache 扩展 RUN docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache # 1.0.24 增加 odbc, pdo_odbc 扩展 RUN set -ex; \ docker-php-source extract; \ { \ echo '# https://github.com/docker-library/php/issues/103#issuecomment-271413933'; \ echo 'AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl'; \ echo; \ cat /usr/src/php/ext/odbc/config.m4; \ } > temp.m4; \ mv temp.m4 /usr/src/php/ext/odbc/config.m4; \ apt-get update; \ apt-get install -y --no-install-recommends unixodbc-dev; \ rm -rf /var/lib/apt/lists/*; \ docker-php-ext-configure odbc --with-unixODBC=shared,/usr; \ docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr; \ docker-php-ext-install odbc pdo_odbc; \ docker-php-source delete # 镜像信息 LABEL Author="wkj" LABEL Version="1.0.25-fpm" LABEL Description="PHP FPM 7.2 镜像. All extensions."
linux系统中设置环境变量vi /etc/profile 追加如下内容JAVA_HOME= /usr/local/java/jdk1.8.0_261 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin配置生效： source /etc/profile