ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/fIr1ax ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net v.gd/4A2G5b v.gd/VBg0IE v.gd/kVkm7n v.gd/jCKP1G linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com v.gd/2P9wTx v.gd/FtfpqE v.gd/eMfHsm v.gd/Ub7mqv v.gd/RReVk0 v.gd/vS3uTI v.gd/4Zxmba v.gd/1BnFph
Pages
Friday, 31 January 2020
TLDR 页-Linux 手册页的简化替代品
什么是 TLDR 页?
tar
命令为例。 通常,手册页的篇幅会超过 1000 行。tar
是一个归档实用程序,经常与 bzip
或 gzip
等压缩方法结合使用。tar
的 TLDR 页面看起来像这样,并带有一些方便的例子 —— 你可以使用此实用程序完成的最常见任务。apt
提供的内容。如何在 Linux 上安装和使用 TLDR 页?
npm install -g tldr
tldr --update
tldr
TLDR 的 web、Android 和 iOS 版本
fileboy,文件变更监听通知工具,使用 Go 编写
特性
- 极简的用法和配置
- 支持多平台,Windows/Linux/MacOS
- 支持自定义文件监听范围,监听指定文件夹/不监听指定文件夹/指定后缀文件
- 支持自定义监控事件(write/rename/remove/create/chmod)
- 支持设置多条命令
- 命令支持变量占位符
- 支持冗余任务丢弃,自定义冗余任务范围
- 支持 http 通知
- 更多...
编译环境
更新日志
运行
下载二进制文件
fileboy
, 加入系统 Path 中即可。源码编译
## 安装依赖
go get -u gopkg.in/fsnotify/fsnotify.v1
go get -u gopkg.in/yaml.v2
## 编译
go build
## 运行
./fileboy
使用
filegirl.yaml
配置文件,因此首次在项目中使用需要初始化 filegirl.yaml
。- 进入你想要 hot reload 的项目主目录下;
- 运行
fileboy init
,会在该目录下生成filegirl.yaml
文件; - 查看
filegirl.yaml
,修改为适合自己项目的配置项; - 运行
fileboy
即可.
command -> exec
命令,想事先确认是否能正常执行,可以运行 fileboy exec
命令,系统会尝试运行你的自定义命令。你可以使用
fileboy help
查看使用帮助。filegirl.yaml 配置文件说明
# 主配置
core:
# 配置版本号
version: 1
# 监控配置
monitor:
# 要监听的目录
# test1 监听当前目录下 test1 目录
# test1/test2 监听当前目录下 test1/test2 目录
# test1,* 监听当前目录下 test1 目录及其所有子目录(递归)
# .,* 监听当前目录及其所有子目录(递归)
includeDirs:
- .,*
# 不监听的目录
# .idea 忽略.idea目录及其所有子目录的监听
exceptDirs:
- .idea
- .git
- .vscode
- node_modules
- vendor
# 监听文件的格式,此类文件更改会执行 command 中的命令
# .go 后缀为 .go 的文件更改,会执行 command 中的命令
# .* 所有的文件更改都会执行 command 中的命令
types:
- .go
# 监听的事件类型,发生此类事件才执行 command 中的命令
# 没有该配置默认监听所有事件
# write 写入文件事件
# rename 重命名文件事件
# remove 移除文件事件
# create 创建文件事件
# chmod 更新文件权限事件(类unix)
events:
- write
- rename
- remove
- create
- chmod
# 命令
command:
# 监听的文件有更改会执行的命令
# 可以有多条命令,会依次执行
# 如有多条命令,每条命令都会等待上一条命令执行完毕后才会执行
# 如遇交互式命令,允许外部获取输入
# 支持变量占位符,运行命令时会替换成实际值:
# {{file}} 文件名(如 a.txt 、test/test2/a.go)
# {{ext}} 文件后缀(如 .go)
# {{event}} 事件(上面的events, 如 write)
# {{changed}} 文件更新的本地时间戳(纳秒,如 1537326690523046400)
# 变量占位符使用示例:cp {{file}} /root/sync -rf 、 myCommand --{{ext}} {{changed}}
exec:
- go version
- go env
# 文件变更后命令在xx毫秒后才会执行,单位为毫秒
# 一个变更事件(A)如果在定义的延迟时间(t)内,又有新的文件变更事件(B),那么A会取消执行。
# B及以后的事件均依次类推,直到事件Z在t内没有新事件产生,Z 会执行
# 合理设置延迟时间,将有效减少冗余和重复任务的执行
# 如果不需要该特性,设置为 0
delayMillSecond: 2000
# 通知器
notifier:
# 文件更改会向该 url 发送请求(POST 一段 json 文本数据)
# 触发请求的时机和执行 command 命令是一致的
# 请求超时 15 秒
# POST 格式:
# Content-Type: application/json;charset=UTF-8
# User-Agent: FileBoy Net Notifier v1.12
# Body: {"project_folder":"/project/path","file":"main.go","changed":1576567861913824940,"ext":".go","event":"write"}
# 例: http://example.com/notifier/fileboy-listener
# 不启用通知,请留空 ""
callUrl: ""
TODO
- 命令支持变量占位符
- 支持多命令
- 支持监听指定文件夹
- 支持不监听指定文件夹
- 支持监听指定后缀文件
- 支持自定事件监听
- 支持 http 通知
- 支持冗余任务丢弃
- 支持 http 合并任务的通知
QA
很多框架都自带了 hot reload 的功能,为什么还要单独写个 fileboy 呢?
filegirl.yaml
文件就行了。fileboy 可以应用在那些具体的场景?
对于一些需要监控文件日志或者配置变动的场景, fileboy 同样适合。你可以事先编写好相应的通知报警脚本,然后定义
filegirl.yaml
中的command
命令,交由 fileboy 自动运行监控报警。通知器在什么时候会发送 http 请求 ?
callUrl
参数(不为空即为已设置)。触发请求的时机和执行 command 命令是一致的,command -> delayMillSecond
参数对于触发器同样有效。请求超时默认15秒.idea 下更改文件,为什么会执行两次或者多次 command ?
delayMillSecond
参数,可以解决这个问题。filegirl.yaml 里面的 command 如何配置复杂命令?
命令 + 参数
这种形式的 command,而且 参数中不能有""符号或者有空格。如:go build
:支持;go env
:支持;php swoole start --daemon
:支持cat a.txt | grep "q" | wc -l
:不支持对于不支持的命令,可以把它写到一个文件里,然后在 command 中执行这个文件来解决。
为什么起名为 fileboy,又把配置名叫做 filegirl ?
一个基于nodejs的记笔记的程序-Trilium Notes
Trilium Notes是一款开源的笔记应用程序,专注于建立大型个人知识库。支持树状笔记、笔记加密、全文搜索、自托管服务器,还可生成可视化笔记的关系图和链接图等。基于Javascript编写,遵守AGPL-3.0开源协议。
功能特色:
笔记可整理成为树形结构,单个笔记可以放置到多个结构树中。
富文本支持,包括表格,图片,markdown数据公式等
支持编程代码高亮
快速导航,全文搜索F
无感的笔记历史版本记录
笔记属性可用来组织,查询等功能
同步笔记至自己的同步服务器
共享/发布笔记至公共网络
笔记加密功能,每个笔记可单独加密
快速创建各种图表(笔记类型 “canvas”)
笔记关系图谱
支持脚本
支持REST API自动化
触控优化,支持手机,平板。
暗夜主题模式Night theme
支持Evernote和Markdown文件导入导出
网页粘贴板
源码:https://github.com/zadam/trilium
------------------------------------------------
Features
- Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see cloning)
- Rich WYSIWYG note editing including e.g. tables and images with markdown autoformat
- Support for editing notes with source code, including syntax highlighting
- Fast and easy navigation between notes, full text search and note hoisting
- Seamless note versioning
- Note attributes can be used for note organization, querying and advanced scripting
- Synchronization with self-hosted sync server
- Strong note encryption with per-note granularity
- Relation maps and link maps for visualizing notes and their relations
- Scripting - see Advanced showcases
- Scales well in both usability and performance upwards of 100 000 notes
- Touch optimized mobile frontend for smartphones and tablets
- Night theme
- Evernote and Markdown import & export
- Web Clipper for easy saving of web content
Builds
- If you want to use Trilium on the desktop, download binary release for your platform from latest release, unzip the package and run
trilium
executable. - If you want to install Trilium on server, follow this page.
- Currently only recent Chrome and Firefox are supported (tested) browsers.
Documentation
Contribute
npm install
npm run start-server
Shoutouts
- CKEditor 5 - best WYSIWYG editor on the market, very interactive and listening team
- FancyTree - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
- CodeMirror - code editor with support for huge amount of languages
- jsPlumb - visual connectivity library without competition. Used in relation maps and link maps
Requirements
Trilium is a node.js application. Supported (tested) version of node.js is latest 14.X.X and 16.X.X. Trilium might work with older versions as well.
You can check your node version with this command (node.js needs to be installed):
node --version
If your Linux distribution has only an outdated version of node.js, you can take a look at the installation instruction on node.js website, which covers most popular distributions.
Dependencies
There are some dependencies required. You can see command for Debian and its derivatives (like Ubuntu) below:
sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev
Installation
Download
You can either download source code zip/tar from latest release or clone git repository from stable branch with
git clone -b stable https://github.com/zadam/trilium.git
Installation
cd trilium
# download all node dependencies
npm install
# make sure the better-sqlite3 binary is there
npm rebuild
Run
cd trilium
# using nohup to make sure trilium keeps running after user logs out
nohup TRILIUM_ENV=dev node src/www &
The application by default starts up on port 8080, so you can open your browser and navigate to http://localhost:8080 to access Trilium (replace "localhost" with your hostname).
TLS
Don't forget to configure TLS, which is required for secure usage!
from https://github.com/zadam/trilium/wiki/Manual-server-installation
------------------------------------------------------------------------------------
Desktop installation
If you want to use Trilium on the desktop, download binary release for your platform from latest release, unzip the package and run trilium
executable.
Startup scripts
There are also some other options to start Trilium:
-
trilium-no-cert-check
- Trilium will not validate the certificates, useful e.g. when you're syncing against a sync server with self-signed certificate- Alternatively you can set
NODE_TLS_REJECT_UNAUTHORIZED=0
environment variable to the Trilium process.
- Alternatively you can set
-
trilium-portable
- Trilium will try to create data directory in the trilium's directory -
trilium-safe-mode
- start up in "safe mode" which disables any startup scripts which might e.g. crash the application
Synchronization
If you are using a desktop instance and would like to sync with your server instance: Synchronization.
from https://github.com/zadam/trilium/wiki/Desktop-installation
解决目录占用超大空间的问题
$ df -h #查看磁盘占用情况
$ du -h --max-depth=1 ./ #查看当前目录的文件/目录占用大小
然后就是手动一层一层的找到最大的那个目录。
最后找到一个隐藏杀手:/var/spool/postfix/maildrop/。这个目录下面存在3000W个小文件,占用33GB。主要它还不是tmp之类的目录,没遇见过,真是很难查找。
究其原因是crontab任务日志发送到所有者的邮箱导致的问题
解决方案
方法1
编辑crontab顶部首行写上 MAILTO="",这样就会把邮箱信息赋空,也就不会发送了。
图片5030-linux查找maildrop目录超大空间占用
如果有非root用户的crontab任务也需要在顶部声明MAILTO="".
默认crontab -e是编辑的当前登录的用户定时任务配置,若是以root登录则为/var/spool/cron/root
同理www用户的定时任务文件就是/var/spool/cron/www
方法2
其次就是每条cron任务的最后把输出信息赋空 >/dev/null 2>&1
* * * * * /root/do.sh >/dev/null 2>&1
p.s.
记下以后排查的顺序:
web程序日志
nginx/apache日志
tmp
crontab 错误邮件发送日志
/var/spool/postfix/maildrop
/var/log 类型的log目录
/var/log/journal 启动目录的文件很多
...
参考:
https://www.jianshu.com/p/a0aa43707476
https://my.oschina.net/qimhkaiyuan/blog/1631028