Bash 设置历史记录的最大条数
编辑器打开 ~/.bashrc
nano ~/.bashrc
找到并且设置
HISTSIZE=10000
HISTFILESIZE=20000
重新加载终端
source ~/.bashrc
编辑器打开 ~/.bashrc
nano ~/.bashrc
找到并且设置
HISTSIZE=10000
HISTFILESIZE=20000
重新加载终端
source ~/.bashrc
在本地机器生成 SSH 密钥(如果还没有的话)
ssh-keygen -t rsa
按照提示进行操作
将公钥复制到远程机器: 使用 ssh-copy-id
命令将你的公钥添加到远程服务器的 ~/.ssh/authorized_keys
文件中:
ssh-copy-id username@B_machine_IP
按提示操作,你会看到Number of key(s) added: 1
表示添加成功,完成这一步后,你应该可以无需密码通过 SSH 访问远程服务器。
确认 rsync
安装:确保两台机器都安装了 rsync
。
执行 rsync
命令:
rsync -avzP /path/to/source/folder/ username@B_machine_IP:/path/to/destination/folder/
-a
表示归档模式,确保文件的属性和权限被保留。-v
表示详细模式,会显示传输过程的详细信息。-z
表示启用压缩,减少数据传输量。编辑器打开 ~/.zshrc
nano ~/.zshrc
找到并且设置,HISTSIZE
是内存中的最大数量,SAVEHIST
是硬盘中的最大数量
HISTSIZE=10000
SAVEHIST=10000
重新加载终端
source ~/.zshrc
首先,你需要在你的 Node.js 项目中安装 Winston 和 winston-daily-rotate-file(实现日志滚动)
npm install winston
npm install winston-daily-rotate-file
import winston from 'winston';
import DailyRotateFile from 'winston-daily-rotate-file';
import fs from 'fs';
import path from 'path';
function ensureLogDirectory() {
const logDirectory = path.join(process.cwd(), 'logs');
if (!fs.existsSync(logDirectory)) {
fs.mkdirSync(logDirectory, {recursive: true});
}
return logDirectory;
}
// 创建日志文件传输配置
function createFileTransport(logDirectory) {
return new DailyRotateFile({
filename: path.join(logDirectory, 'admin-%DATE%.log'),
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
format: winston.format.combine(
winston.format.colorize(),
winston.format.timestamp({format: 'YYYY-MM-DD HH:mm:ss'}),
winston.format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
});
}
// 创建控制台传输配置
function createConsoleTransport() {
return new winston.transports.Console({
level: 'debug',
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
)
});
}
const logDirectory = ensureLogDirectory();
const transport = createFileTransport(logDirectory);
const consoleTransport = createConsoleTransport();
// 初始化并导出logger
export const logger = winston.createLogger({
transports: [
transport,
consoleTransport
]
});
export const logMiddleware = (req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
const logLevel = res.statusCode >= 400 ? 'error' : 'info';
const message = `${req.method} ${req.url} - Status Code: ${res.statusCode} - ${duration}ms `;
logger[logLevel](message);
});
next();
};
const app = express();
app.use(cors());
app.use(express.json());
app.use(express.static('dist'));
app.use(logMiddleware); // 这里
列出所有卷:首先确保卷 logs
已被正确创建。
docker volume ls
检查卷的详情:使用以下命令来查看 logs
卷的详细信息,包括它的实际存储路径。
docker volume inspect logs 卷名
这个命令将返回一个包含卷详细信息的 JSON 数组。其中的 "Mountpoint"
键值对应的值就是卷在宿主机上的存储路径。例如:
[
{
"CreatedAt": "2024-06-20T13:47:04+08:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "mysql-redis",
"com.docker.compose.version": "2.27.1",
"com.docker.compose.volume": "mysql"
},
"Mountpoint": "/var/lib/docker/volumes/mysql-redis_mysql/_data",
"Name": "mysql-redis_mysql",
"Options": null,
"Scope": "local"
}
]
在这个示例中,logs
卷的存储路径是 /var/lib/docker/volumes/mysql-redis_mysql/_data
。您可以通过访问这个路径来查看和管理存储在卷中的日志文件。
Linux/macOS:可以通过包管理器安装,如在 macOS 上使用 Homebrew: brew install micro
Windows:可以通过 Scoop 或 Chocolatey 安装:scoop install micro
或 choco install micro
启动编辑器
在终端中输入 micro
后跟文件名即可打开文件进行编辑,例如:micro example.txt
Ctrl-D
输入 quit 退出
Ctrl-S
保存
查找下一个
在查找模式下,按下 Enter
将会查找下一个匹配项。
或者,按下 Ctrl-N
在查找结果中向下移动到下一个匹配项。
查找上一个
在查找模式下,按下 Ctrl-P
在查找结果中向上移动到上一个匹配项。
在查找模式下,按下 Esc
键或者 Ctrl-C
可以取消当前的查找操作,回到正常的编辑模式。
Micro 的配置文件通常存放在用户目录下的 .config/micro/settings.json
文件中。
可以通过修改这个文件来改变默认的设置,例如设置 tab 的大小,是否自动缩进等。
你可以在 ~/.config/micro/bindings.json
中定义自己的键绑定,以覆盖默认的快捷键配置。
可以通过 Ctrl-E
启动,然后输入任何内置命令或自定义命令来执行。
Micro 支持插件来扩展功能。可以通过 micro -plugin install [plugin_name]
来安装插件。
常用插件如 go
, python
提供了语言特定的语法高亮和其他功能。
插件地址### go 开发推荐插件
micro -plugin install go quickfix lsp autofmt snippets
注意,下载需要一段时间
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo nano /etc/apt/sources.list
把下面内容替换进去
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
sudo apt upgrade
Docker Hub 为了管理资源消耗,对镜像的拉取次数设有限制。对于未认证的用户,这一限制较低,而对于已认证的用户,限制相对较高。一旦超出这个限制,就会收到 HTTP 状态码 429(Too Many Requests)
最简单的方法是登录到您的 Docker Hub 账户。通过执行下面的命令来登录
docker login
登录后,Docker Hub 将提高您的 API 调用频率限制,已认证的用户每 6 小时 200 个拉取请求
升级 Docker Hub 账户
如果您是高频用户,建议考虑升级到 Docker Hub 的付费账户。付费账户提供更高的数据拉取限额,满足更频繁的开发需求。
使用其他镜像仓库
考虑使用其他公共镜像仓库,如 Google Container Registry (GCR)、Amazon Elastic Container Registry (ECR),或者建立您自己的私有镜像仓库。这些选择可以分散对 Docker Hub 的依赖,减少受限的风险。
本地缓存常用镜像
尽量缓存您经常使用的镜像。当您的 CI/CD 流程或开发环境需要使用这些镜像时,直接从本地缓存拉取,减少对 Docker Hub 的请求。
https://min.io/download?license=agpl&platform=docker## Docker 安装
创建一个 docker-compose.yml
services:
minio:
image: quay.io/minio/minio
container_name: minio
ports:
- "9000:9000"
- "9001:9001" # MinIO的管理界面(Console)端口
volumes:
- minio_data:/data
- minio_config:/root/.minio
environment:
MINIO_ROOT_USER: admin # 设置MinIO的用户名
MINIO_ROOT_PASSWORD: admin123456 # 设置MinIO的密码
MINIO_REGION: "cn-north-1"
MINIO_BROWSER: "on" # 是否开启浏览器访问
command: server /data --console-address ":9001"
healthcheck:
test:
[
"CMD",
"curl",
"-f",
"http://localhost:9000/minio/health/live"
]
interval: 30s
timeout: 20s
retries: 3
networks:
- minio_network
volumes:
minio_data:
minio_config:
networks:
minio_network:
driver: bridge