Squid http 代理

Squid 是一个Web代理软件,可以轻松的实现 HTTP,HTTPS,FTP 代理,通过缓存常用请求,Squid 能够减少带宽使用,提高响应速度。

sudo apt-get update
sudo apt-get install squid

Squid 的默认配置文件存放在 /etc/squid/squid.conf

sudo vim /etc/squid/squid.conf

Squid 的默认端口是 3128,配置文件中可以 http_port 3128 来设置

Squid 默认是不允许任何客户端连接的,通过修改配置允许所有客户端连接

http_access allow all

修改完成后重启代理服务

sudo service squid restart

reference


2018-02-24 linux , ubuntu , squid , proxy , webproxy , http , https

dockerfile 指令

通常情况下,我们并不使用 docker commit 方法来构建镜像,而是使用 Dockerfile 的定义文件和 docker build 命令来构建镜像。更多 Docker 入门 的内容可以参考之前的文章。

每条指令都会创建一个新的镜像层并对镜像进行提交,Docker 大致上按照下面的流程执行 Dockerfile 中的指令:

  • Docker 从基础镜像运行一个容器
  • 执行指令,对镜像做出修改
  • 执行类似 docker commit 的操作,提交一个新的镜像层
  • Docker 再基于刚刚提交的镜像运行一个新容器
  • 执行 Dockerfile 中下一个指令,直到所有指令执行完毕

常见的命令 RUNEXPOSE 之外,Dockerfile 还支持其他很多指令。

CMD

CMD 指令用于指定容器启动时要运行的命令,类似 RUN,但是 RUN 指令是指镜像被构建时要运行的命令,而 CMD 是指定容器被启动时要运行的命令。运行的命令放在一个数组结构中

docker run 命令可以覆盖 CMD 指令

如果 Dockerfile 有多个 CMD 指令,只有最后一个会生效。

CMD 指令有很多种格式,最常见,也是官方推荐的格式是:

CMD ["executable", "param1", "param2", ...]

ENTRYPOINT

ENTRYPOINT 指令和 CMD 指令非常类似,之前说过 CMD 指令会被 docker run 命令覆盖,而 ENTRYPOINT 指令提供的命令不容易在启动容器时被覆盖。实际上, docker run 命令行中的指定的任何参数都会被当做参数再次传递给 ENTRYPOINT 指令中指定的命令。

ENTRYPOINT 可以让容器以应用程序或者服务的形式运行。

ENTRYPOINT 也有很多使用方式,比较推荐的是:

ENTRYPOINT ["executable", "param1", "param2" ]

WORKDIR

WORKDIR 指令用来在从镜像创建一个新的容器时,在容器内部设置一个工作目录,ENTRYPOINT 或 CMD 指定的程序会在该目录下执行。

可以通过 -w 参数在运行时覆盖工作目录

sudo docker run -it -w /var/log ubuntu pwd

ENV

ENV 指令用来在镜像构建过程中设置环境变量,新的环境变量能在后续任何 RUN 指令中使用。

ENV RVM_PATH /home/rvm

同样也可以使用 -e 参数赖在运行时添加环境变量。

USER

USER 指令用来指定镜像会以什么用户去运行

USER nginx

镜像会以 nginx 用户去运行,同样也可以使用 -u 选项来覆盖该指令

VOLUME

VOLUME 指令用来像基于镜像创建的容器添加卷,一个卷可以存在一个或者多个容器内的特定目录,这个目录可以绕过联合文件系统,提供共享数据或者对数据持久化功能

  • 卷可以在容器间共享和重用
  • 对卷的修改是立即生效的
  • 对卷的修改不会对更新镜像产生影响
  • 卷会一直存在直到没有任何容器使用

卷功能让我们可以将数据,比如源代码,数据库等其他持久化内容添加到镜像中,而不是预先将这些内容提交到镜像内部,卷允许我们在多个容器间共享内容,可以利用此功能测试容器和内部应用代码,管理日志,处理内部数据库等等。

VOLUME ["/opt/project"]

该指令会基于此镜像创建的任何容器创建一个名为 /opt/project 的挂载点。

ADD

ADD 指令用来将构建环境下的文件和目录复制到镜像中。

ADD 指令通过目的地址参数末尾的字符来判断文件源是目录还是文件,如果目标地址以 / 结尾,那么 Docker 就认为源地址指向的是一个目录,如果目的地址不是 / 结尾,那么源地址就是文件。

COPY

COPY 指令和 ADD 很类似,根本不同是 COPY 只关心在构建上下文中复制本地文件,而不会去做文件提取和解压的工作。

如果目的位置不存在, Docker 会自动创建所需要的目录结构

ONBUILD

ONBUILD 指令能为镜像添加触发器,当一个镜像被用作其他镜像的基础镜像时,该镜像中的触发器会被执行。触发器会在构建过程中插入新指令,我们认为这些指令是紧跟 FROM 之后执行的。触发器可以是任何构建指令。

reference

  • 《第一本 Docker 书》

2018-02-23 linux , docker , docker-image

Docker中运行 MySQL

mysql 是 Docker 和 MySQL 官方提供的一个镜像。

启动服务器实例

拉取镜像

docker pull mysql

启动镜像

docker run --name first-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7

这样就创建了一个名为 first-mysql 的 mysql 5.7 实例。

Shell 中访问容器日志查看

docker exec -it first-mysql bash

日志

docker logs first-mysql

环境变量

当启动 mysql 容器时,可以传入环境变量来改变容器的配置:

  • MYSQL_ROOT_PASSWORD:必须。用于设置MySQLroot用户的密码
  • MYSQL_DATABASE:可选。用于指定镜像启动容器时要创建的数据库。如果提供了用户/密码,则会将该用户做为此数据库的超级用户。
  • MYSQL_USERMYSQL_PASSWORD:可选。用于创建一个新用户并设置密码。
  • MYSQL_ALLOW_EMPTY_PASSWORD:可选。设置为yes时,则可以使用空密码登录
  • MYSQL_RANDOM_ROOT_PASSWORD:可选。设置为yes时会为root用户设置一个随机密码(使用pwgen),所生成的随机密码会被输出到stdout
  • MYSQL_ONETIME_PASSWORD:可选。为root用户指定一个一次性密码,该密码会在用户首次登录时强制修改

数据存储

mysql 镜像创建容器时,数据库存储会以下面两种方式存储:

  • 数据卷容器:使用Docker默认的数据管理方式来管理数据库的数据存储,在这种方式下,数据库文件会被写入数据库的内部。这种方式对于用户非常简单,缺点是很在宿主机上找到所存储的数据。
  • 外部数据卷:在宿主机创建一个数据目录,再将数据目录挂载到容器内部。这种方式可以很方便的在宿主机上找到并进行数据管理,但需要确保数据目录的存在。

使用外部数据卷时,假设宿主机有 /my/data/ 目录,可以使用 -v 选项来讲宿主机挂载到容器:

docker run --name mysql -v /my/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7

数据备份

docker exec first-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

在其他容器中连接mysql

官方的镜像中导出的是默认 3306 端口,其他容器可以使用 --link 参数来连接mysql容器

docker run --name other-app --link first-mysql:mysql -d other-application-use-mysql

2018-02-18 mysql , database , linux , docker

netdata 又一款 Linux 监控程序

任何服务器监控是一项很重要的事情,以前在 VPS 上一直使用 nodequery ,虽然设置方便简洁,但是数据不够详细也是他很大问题,所以经过一番寻找又发现了这个 [[Netdata]]。下面是 netdata 一系列的特性

  • 安装方便,几乎是一键
  • 实时信息显示,监控内容详细
  • 高性能,netdata 和插件都使用 C 编写,不占用系统 IO
  • 发送告警,可以向很多第三方平台发送报警通知,包括 telegram, email, slack channel 等等
  • 无磁盘 IO 操作
  • 不需要 root 权限
  • 可视化界面漂亮

官方提供了一些列的 demo : https://my-netdata.io/

一键安装

按照下面的教程安装:

现在官方也提供了 Docker 的方式安装,更加方便。

配置 Nginx

upstream backend {
	server 127.0.0.1:19999;
	keepalive 64;
}

server {
	listen 80;
	listen [::]:80;

	index index.html index.htm index.nginx-debian.html;

	server_name status.einverne.info;

	auth_basic "Protected";
	auth_basic_user_file passwords;

	location / {
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://backend;
		proxy_http_version 1.1;
		proxy_pass_request_headers on;
		proxy_set_header Connection "keep-alive";
		proxy_store off;
	}
}

主要配置如上,可以加上一个密码保护,具体 Nginx 的配置 可以参考链接。

htpasswd -c -d /etc/nginx/passwords yourusername

这行命令中的 passwords 就是之前 Nginx 配置中的 auth_basic_user_file 后的参数,通过该选项设置用户名密码。

卸载删除

netdata 是不提供卸载脚本的,如果要在系统中删除,可以使用如下

killall netdata
apt-get remove zlib1g-dev gcc make git autoconf autogen automake pkg-config
rm -Rf /usr/sbin/netdata
rm -Rf /etc/netdata
rm -Rf /usr/share/netdata
rm -Rf /usr/libexec/netdata
rm -Rf /var/cache/netdata
rm -Rf /var/log/netdata
rm -Rf /opt/netdata
userdel netdata

2018-02-16 linux , vps , monitor

使用 docker compose 管理多个容器

Docker Compose 是一个定义和启动多容器的工具,可以使用 Compose 来管理多个 Docker 容器。Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Docker Compose 使用 YAML 文件定义应用,之后可以使用一行简单的命令来创建或者启动所有的服务。

Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器,但往往实际应用可能包含不止一个容器,常见的 Web 容器通常还包括一个数据库容器。Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose 中有两个重要的概念:

  • 服务 (service):应用容器,实际上可以包括若干运行相同镜像的容器实例
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义

使用 Compose

使用 Compose 可以简单的归纳为三步

  • 定义应用的 Dockerfile
  • 定义服务 docker-compose.yml 文件
  • 执行 docker-compose up 来启动整个服务

常见的 docker-compose.yml 文件如下:

version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

安装

Compose 依赖于 Docker Engine,所以确保安装 Compose 之前 Docker 已经在本地安装成功。安装 Compose 非常简单,将编译好的二进制文件下载到本地即可,查看compose 的github release 页面 获取最新版本:

sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

示例

具体例子可参考官网或者 https://github.com/einverne/dockerfile/ 项目下有 compose-start 文件夹,其中包含示例代码:

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

在该文件夹下使用 docker-compose up 启动服务。使用 docker-compose down 关闭。如果想要在后台执行添加 -d 选项 docker-compose up -d

以非root方式运行docker

如果 docker 用户不存在,创建docker 用户组

sudo groupadd docker

将当前用户添加到docker 用户组:

sudo usermod -aG docker [non-root user]

命令使用

Compose 命令的对象是项目本身,也可以为项目中的服务或者容器,默认为项目。 服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。

命令选项:

-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。

常见命令

docker-compose up          # 自动完成构建镜像,创建服务,启动服务,并关联服务等操作
docker-compose down
docker-compose start       # 启动存在的服务
docker-compose stop        # 停止
docker-compose restart     # 重启项目中服务
docker-compose exec        # 进入指定容器
docker-compose help
docker-compose image       # 列出 Compose 文件中包含的镜像
docker-compose kill [SERVICE...]
docker-compose pause [SERVICE...]
docker-compose unpause [SERVICE...]
docker-compose ps          # 列出项目中所有容器

up

大部分时候都可以直接通过该命令来启动一个项目,默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息。

当通过 Ctrl-C 停止命令时,所有容器将会停止。如果使用 docker-compose up -d,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。

docker-compose up -d        # 后台执行

down

此命令将会停止 up 命令所启动的容器,并移除网络

docker-compose              # 移除停止的容器
docker-compose -v           # 此选项会移除 volumns 中定义的卷,千万小心

举例

> docker-compose down -v
Removing wordpress    ... done
Removing wordpress_db ... done
Removing network wordpress_wordpress-network
Removing volume wordpress_db_data

build

重构项目中容器

docker-compose build [options] [SERVICE...]

rm

删除所有停止状态的服务容器。

docker-compose rm [options] [SERVICES ..]

config

验证 Compose 文件格式是否正确

docker-compose config

Compose 模板文件

默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。大部分的指令和 docker run 的含义是一样的。

image

指定镜像名或者镜像ID,如果本地不存在,Compose 会拉取该镜像

image: ubuntu

volumes

数据卷挂载设置,可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro)

volumes:
 - /var/lib/mysql

ports

暴露端口信息,使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)

更多详细可参考: https://yeasy.gitbooks.io/docker_practice/content/compose/compose_file.html

reference


2018-02-15 docker , docker-compose , linux

Wiznote 为知笔记

很早以前写过一篇文章,为了寻找Evernote 的代替品,两年过去了,我也认认真真地用了两年的的为知笔记。说实话现在再来说为知笔记确实有些晚,很早很早以前就有很多人推荐为知笔记。

但是经过两年使用,加上最新 2.5.8 的版本更新,让我不得不出来说一说 WizNote,早在之前的文章中提到过,因为 WizNote 提供 Linux 版本的客户端,所以让我一直能够用下去。我一直坚信的一点就是做产品,一定是做到一个服务,让用户选择一个服务,能够不考虑其使用成本,也就是不管我是在 Windows ,Mac 还是 Linux,或者是 Android 或者 iOS 我都能够快速获取服务提供的内容,这才是一个真正好的产品。当然所有的笔记类产品中只有 WizNote 做到了。当然这里其实还要提一嘴网易云音乐,太良心了这两家公司。WizNote 不说其他的功能在一定程度上超越 Evernote,但就跨平台,多设备同步这一点就比 Evernote 好过不止一点。更不用说支持markdown,支持语法高亮,支持pdf,html导出等等非常良心的功能。

最新 WizNote 更新一个 Linux 的 AppImage 版本,虽然这个版本绿色,下载直接可以使用,但是带来一个问题就是,无法建立快捷方式,我的快速启动突然失效,让我有些失望。AppImage 格式是一种新的Linux程序封装方法。AppImages 是便携的——它们无需安装即可运行在大多数Linux发行版上。所有的依赖包均包含于一个AppImage文件。但是这个 AppImage 文件必须每一次都让我去目录下手动执行,这个让我非常不爽,于是找到了下面的解决方法,手动创建一个快捷方式,使用该快捷方式启动 WizNote。

如果使用 GNOME,可以安装包 sudo apt-get install --no-install-recommends gnome-panel,然后使用如下命令:

gnome-desktop-item-edit ~/.local/share/applications --create-new

该命令会弹出一个对话框,输入一些必要的参数,保存即可,该命令会在 ./local/share/application/ 目录下新建一个 WizNote.desktop 的文件

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application                                # type
Icon=wiznote                                    # location of icon file
Terminal=false                                  # whether this app requires to be run in a terminal.
Name[en_US]=WizNote
GenericName=WizNote                             # longer name of the app
Exec=/home/einverne/app/WizNote-2.5.8-x86_64.AppImage  # command used to launch an app
Name=WizNote
Categories=WizNote;                             # categories in which this app should be listed.
GenericName[en_US.UTF-8]=WizNote

另外一个令我不爽的就是,在这个版本发布之后一段时间后我在 Linux 上的 PPA 安装的版本突然之间无法登录并无论多少次重新登录都说我密码错误,无法登录。即使说因为新版本,或者是因为同步机制升级,导致老版本的同步失效,也应该给予一个正确的提示,而不是说密码错误,我的密码并没有输入错误或者记错,因为网页版,Android/iOS 端都是正常登录的,而仅仅给个密码错误的提示会误导用户。虽然安装了新版本的 WizNote 这依然浪费了很多的时间,还有让我吐槽浪费更多的时间。

这有回到了文章开头我的观点,作为一个服务(产品),应该提供的是用户随时随地可获取的服务,所有的更新升级对用户应该都是透明的,用户不应该关心版本升级可能带来的任何问题,有很多时候我非常反感一个产品突然拿掉一些功能,虽然可能在一定程度上可能已经脱离公司发展轨迹,但其实对一些用户还是有着深刻的影响的。所以很多时候在考虑深度使用一个产品(服务)的时候,我一般都会考虑在这个产品的数据有没有备份或者导出的途径,如果没有任何可以导出或者备份的功能,一般情况下也就淘汰了这个服务。

说了这么多,其实 WizNote 还是目前我深度使用的一个服务,我真心的希望他会越来越好,也能够继续维护这么多版本的开发。最后真心地祝愿。


2018-02-14 wiznote , notebook , multi-platform , notes

免费的电子书站点收集

一年前使用 kindle 的时候有 kindle10000 ,还有无数的 kindle push 网站,去年突然全部一下子都关闭了,这一年多来,陆陆续续又发现了一些很不错的站点。现在整理整理分享一下。我电脑中还有大概五六十 G 的当年 kindle 人倒闭时全站资源的打包只是一直都还么有时间建立索引,整理出来,有时间还是要整理一下的。

Anna’s Archive

Anna’s Archive 是一个非盈利的、开源的 Shadow library 搜索引擎,可以搜索 Z-library 的内容。

zlibrary

  • https://zh.au1lib.org/
  • https://zh.b-ok.asia/
  • https://b-ok.cc/
  • https://zlibrary-asia.se
  • https://zlibrary-global.se
  • https://singlelogin.se
  • https://singlelogin.re
  • sg1lib.org
  • 1lib.pl
  • ng1lib.org
  • b-ok.com
  • bookzz.ren
  • booksc.xyz

manybooks

https://manybooks.net/

worldmiao

一个电子书搜索引擎,聚合了一些常见的网站。

https://worldmiao.com/

我的小书屋

http://mebook.cc/

以网盘下载为主

可以用来推送电子书到 Kindle 邮箱

2019 年 11 月更新,小书屋也不在了。愿站长一切安好!

集思会

强烈推荐的站点,几乎 kindle10000 之后就是他了。

http://www.kindlepush.com

书籍比较全,每天可推送两本,下载一本

2018-08-01 更新 kindlepush 网站也关站了,基本上也应该是盗版的原因吧,现在的资源站基本上只要做大了也就面临着闭站的风险了。

i-book.in

基于 IPFS 的电子书索引

https://book.tstrs.me/

书伴

很早之前因为一些 Kindle 相关的文章而关注了,后来也陆陆续续的有一些好书分享。

https://bookfere.com/

漫画

http://vol.moe/

kindle 漫画

http://www.kindlecomic.net/

记得以前不叫这个名字的,可推送漫画,漫画比较全,有连载。

bookset 我的精品书库

看站点应该只是个人在维护的。

https://bookset.me/

2019 年 9 月 1 日更新,看来是也不存在了。

it books

书阁

有品格的数字古籍图书馆

https://new.shuge.org/

寻找古籍的最佳选择。

epubee

一个电子书在线转换工具,也提供热门书的下载和推送。

http://cn.epubee.com/

掌上书苑

一个类似论坛的分享网站

https://www.cnepub.com/
https://www.soepub.com/

我要 kindle 电子书

这也是个人站长维护的电子书分享站点

http://51kindle.me/

kindle178

www.kindle178.com

高清杂志

这是一个杂志的合集,需要付费

http://www.gqzzw.com/

readfree

http://readfree.me/

书籍比较全,相同书籍有不同版本,可推送到 kindle,可下载,可共享图书

2019 年 7 月更新

readfree farewell

终于 readfree 也挺不住了,也不知道是抓版权呢,还是在禁止出版物。

iread

非常像 readfree

http://www.iread.cf/

子乌书简

http://book.zi5.me/

可推送,可下载,注册用户可以共享电子书,网站由 WordPress 所写。

鸠摩搜索

https://www.jiumodiary.com/

主要是微博网盘和百度网盘共享书籍,质量层次不齐

olecn

少量的电子书,基本都在百度网盘

http://www.olecn.com/category/book/

其他

PDFDRIVE

这是一个面向英文阅读者的 PDF 分享网站,托管了很多高清的 PDF 资源。

https://www.pdfdrive.com/

Library Genesis

Library Genesis 是科学论文和书籍搜索引擎,是一款非常好用的学术(盗版)书网站,以英文语言作品为主,辅以法、德、日、西、葡、意、俄、阿、土等语言作品。1

English e-Reader

英语电子书及有声书

  • https://english-e-reader.net/level/pre-intermediate

SaltTiger

个人维护的,基本和计算机相关,大部分都是英文图书

https://salttiger.com/

lorefree

以区块链为依托,每天 10 本免费下载,目前藏书量已经十几万。

https://ebook.lorefree.com/

booklist.mobi

也是一个个人维护的站点

http://www.booklist.mobi/

epdf

英文 PDF

https://epdf.tips/

manybooks

https://manybooks.net/

好读

http://www.haodoo.net/

imatxt

http://www.iamtxt.com

wode5

www.wode5.com

SkEbooks

https://skebooks.com

苦瓜书盘

http://kgbook.com/

b-ok

英文书为主,非常大的库

https://b-ok.cc/s/

epubw

全站免费,全站度盘。书籍质量较高,有封面,目录,不过令人担忧的是度盘,随时可能失效

https://epubw.com/

bandubook

https://www.bandubook.com/

enjing

https://enjing.com

一些聚合搜索网站

全国图书馆参考咨询联盟

http://www.ucdrs.superlib.net/

读秀

http://www.duxiu.com

woyushu

需邀请码http://www.woyushu.com

已经关闭。

我自己的站

这是我自己建的站,我一直有在整理我硬盘上的电子书,但是无奈并没有那么多的 VPS 来存放这些书,抓了十几万条豆瓣的条目,有些已经从豆瓣完全消失了,希望这里有个地方存留一些记忆。

https://book.einverne.info

计算机相关

  • https://github.com/justjavac/free-programming-books-zh_CN
  • 相关 Kindle 的 tips

最后,在能力范围内请支持正版。个人已买 Kindle Unlimited,部分书籍能够买到也尽量会购买。部分不会发行的电子书用来在 Kindle 上读。

网站名称 网址 备注
ZLibrary https://zh.go-to-zlibrary.se/#desktop_app_tab 支持 16 种语言版本、490 多万本电子书资源
SaltTiger https://salttiger.com/ 大厂出品的编程电子书集结,涵盖 Python、C++、C#、Java、Android、iOS 等领域!
内酷网 http://neikuw.com 通过百度网盘分享电子书
恩京书房 https://www.enjing.com 界面非常好,提供多种格式下载
三秋书屋 https://www.d4j.cn 新站,通过百度网盘下载
sobooks https://sobooks.cc kindle 电子书社区
沉金书屋 https://www.chenjin5.com 需关注公众号才能下载
火岸电子书 https://huoan.net 书不多,网盘分享
电子书根据地 http://www.66books.cn 需关注微信公众号才能下载
相识电子书 http://www.xiangshi123.com 通过百度网盘分享,有些失效了
电子书基地 http://www.dzs.so 书不多,更新慢
爱悦读 https://www.iyd.wang 量少,有一阵子未更新
看 kindle https://www.lookkindle.com 需注册,部分资源需付费
花卷妈 http://www.huajuanma.com 专注儿童电子书资源
知识库 https://book.zhishikoo.com 界面友好,无需注册,通过百度网盘下载
逗分享 http://book.idoubi.net 广告多,下载比较麻烦
读书达人 http://www.dushudaren.com 需关注微信公众号
书山有路 http://www.ssylu.com 博客式电子书分享下载站
壹书 http://www.onebooks.cn 有书单有资源
微米电子书分享 https://www.dzsfx.com 通过网盘分享
rejoice 博客 http://www.rejoiceblog.com 博客式电子书下载站
锐读网 https://www.readuu.com 通过百度网盘分享
精品电子书 https://dylanbai8.github.io/ideahub 基于 github,约 10G 电子书,都是 2015 年前的
技术电子书 http://jsebook.com 技术类书籍,下载需注册登陆,书不多
书栈网 https://www.bookstack.cn 开源 IT 类书籍、文档分享站
码农电子书 https://book.mzh.ren IT 类书站,书少(已停更)
SaltTiger https://salttiger.com 每天一本编程书
我的黄金屋 http://goldroom.top 需注册
风陵渡书屋 http://www.eybook.com 新站
掌上书苑 https://www.soepub.com 需注册
我爱书籍 http://www.52book.me 分类较简单
AIBOOKS https://aibooks.club 需关注微信公众号获取提取码
Moreread http://moreread.me 数不多,需注册,可推送
kindlefree http://www.kindlefree.cn 不提供下载,注册后推送
kindle 吧 https://www.shuyingyin.com 书站导航
辣豆瓣 http://ladouban.com 界面友好,有书单书摘
分享 http://book.share2uu.com 书籍数量不小
推书圈 http://www.vzhuanba.com 新站,书较少
三分钟书屋 https://www.sanfenzhong.net 模仿我的小书屋,已断更数月
书堆阅读 https://www.werebook.com 书不算太多
芒果读书 http://diumx.com 精校电子书,需注册
千秋书在 https://www.qqszz.com 游客可免费下载
书聚 http://ebookg.com 需付费
图书网 http://www.ziliaoh.com 资源尚可
书单 https://ebooklist.mobi 需关注微信公众号才能下载
KDBooks https://www.kdlbook.cn 需关注公众号,获取验证码
爱分享读书 http://www.ishareread.com 需注册
电子书下载 https://bookzhai.com 新站,量不大,而且有一阵子没更新
Nmod https://www.nmod.net 书不多,但好在质量不错
淘书党 https://www.taoshudang.com 大部分书需关注微信公众号后才能下载,而且还得看站长时间
点书网 http://www.gezhongshu.com 需注册登录,免费下载次数有限
读书小站 https://ibooks.org.cn 确实是小站,更新较慢
辣豆瓣 http://ladouban.com 每本书读提供了豆瓣评分,需关注网站微信公众号获取密码下载
Iread http://www.iread.cf 需要注册,免费用户一天可下载三本
zure https://zure.fun 需注册,还不错
走读派 http://www.zoudupai.com 书站导航
Kindle 伴侣 https://bookf  

其他更多

这里的一些站点未经验证,可以自行参考选择

内酷网 http://neikuw.com 通过百度网盘分享电子书 恩京书房 https://www.enjing.com 界面非常好,提供多种格式下载 三秋书屋 https://www.d4j.cn 新站,通过百度网盘下载 sobooks https://sobooks.cc kindle 电子书社区 沉金书屋 https://www.chenjin5.com 需关注公众号才能下载 火岸电子书 https://huoan.net 书不多,网盘分享 电子书根据地 http://www.66books.cn 需关注微信公众号才能下载 相识电子书 http://www.xiangshi123.com 通过百度网盘分享,有些失效了 电子书基地 http://www.dzs.so 书不多,更新慢 爱悦读 https://www.iyd.wang 量少,有一阵子未更新 看 kindle https://www.lookkindle.com 需注册,部分资源需付费 花卷妈 http://www.huajuanma.com 专注儿童电子书资源 知识库 https://book.zhishikoo.com 界面友好,无需注册,通过百度网盘下载 逗分享 http://book.idoubi.net 广告多,下载比较麻烦 读书达人 http://www.dushudaren.com 需关注微信公众号 书山有路 http://www.ssylu.com 博客式电子书分享下载站 壹书 http://www.onebooks.cn 有书单有资源 微米电子书分享 https://www.dzsfx.com 通过网盘分享 rejoice 博客 http://www.rejoiceblog.com 博客式电子书下载站 锐读网 https://www.readuu.com 通过百度网盘分享 精品电子书 https://dylanbai8.github.io/ideahub 基于 github,约 10G 电子书,都是 2015 年前的 技术电子书 http://jsebook.com 技术类书籍,下载需注册登陆,书不多 书栈网 https://www.bookstack.cn 开源 IT 类书籍、文档分享站 码农电子书 https://book.mzh.ren IT 类书站,书少(已停更) SaltTiger https://salttiger.com 每天一本编程书 我的黄金屋 http://goldroom.top 需注册 风陵渡书屋 http://www.eybook.com 新站 掌上书苑 https://www.soepub.com 需注册 我爱书籍 http://www.52book.me 分类较简单 AIBOOKS https://aibooks.club 需关注微信公众号获取提取码 Moreread http://moreread.me 数不多,需注册,可推送 kindlefree http://www.kindlefree.cn 不提供下载,注册后推送 kindle 吧 https://www.shuyingyin.com 书站导航 辣豆瓣 http://ladouban.com 界面友好,有书单书摘 分享 http://book.share2uu.com 书籍数量不小 推书圈 http://www.vzhuanba.com 新站,书较少 三分钟书屋 https://www.sanfenzhong.net 模仿我的小书屋,已断更数月 书堆阅读 https://www.werebook.com 书不算太多 芒果读书 http://diumx.com 精校电子书,需注册 千秋书在 https://www.qqszz.com 游客可免费下载 书聚 http://ebookg.com 需付费 图书网 http://www.ziliaoh.com 资源尚可 书单 https://ebooklist.mobi 需关注微信公众号才能下载 KDBooks https://www.kdlbook.cn 需关注公众号,获取验证码 爱分享读书 http://www.ishareread.com 需注册 电子书下载 https://bookzhai.com 新站,量不大,而且有一阵子没更新 Nmod https://www.nmod.net 书不多,但好在质量不错 淘书党 https://www.taoshudang.com 大部分书需关注微信公众号后才能下载,而且还得看站长时间 点书网 http://www.gezhongshu.com 需注册登录,免费下载次数有限 读书小站 https://ibooks.org.cn 确实是小站,更新较慢 辣豆瓣 http://ladouban.com 每本书读提供了豆瓣评分,需关注网站微信公众号获取密码下载 Iread http://www.iread.cf 需要注册,免费用户一天可下载三本 zure https://zure.fun 需注册,还不错 走读派 http://www.zoudupai.com 书站导航 Kindle 伴侣 https://bookfere.com 为净心阅读而生 多读 http://www.duodu.cc 北海市图书馆 http://www.bhlib.com 书格 https://new.shuge.org 古籍类书籍 电子书资源网 https://bookresource.net 静思书屋 https://book.tinynews.org 苦瓜书盘 https://www.kgbook.com 看医学 http://www.kanyixue.com 医学类书籍 Thefuture 书籍搜索 https://bks.thefuture.top
偶书 https://obook.cc 小站,书单不错 熊猫搜书 https://xmsoushu.com Mox.moe https://vol.moe 漫画类书站 阅读链云盘 https://cloud.yuedu.pro 书享家 https://shuxiangjia.cn 图灵社区免费书籍 https://m.ituring.com.cn/book?tab=free&sort=new IT 类书籍 七彩英语 http://www.qcenglish.com 英文电子书下载站 PDF 之家 http://www.pdfzj.cn 译言图书 http://book.yeeyan.com E 书联盟 https://www.book118.com/index.html PDF 电子书 云海电子图书馆 http://www.pdfbook.cn 我爱读电子书 https://www.aixiaxs.com 无名书站 http://www.gqzzw.com 数理 https://book.sciencereading.cn 瑞文网教材 https://www.ruiwen.com/jiaocai/ LoreFree https://ebook2.lorefree.com Zlibrary https://z-lib.org Libgen http://libgen.rs 古腾堡 https://www.gutenberg.org ManyBooks https://manybooks.net

  1. https://www.douban.com/note/651658406/

    http://gen.lib.rus.ec http://libgen.io http://libgen.pw 


2018-02-13 books , free , website , kindle , pdf , mobi , epub

Linux 下安全的删除文件

Linux 下有一个非常危险的命令—-rm,虽然本意上rm命令是用来删除文件或者文件夹的,但是这个命令删除的文件很难找回来,一旦不小心手贱敲快了,就有可能导致不可挽回的结果。所以我搜了一圈,发现其实 Ubuntu 下有一个包 trash-cli。给Linux加了一层垃圾箱。

安装

sudo apt install trash-cli

这个命令包,包括 trash, trash-list, trash-restor, trash-empty 等等几个命令,具体可以参看 man。

~/.zshrc 中添加 alias

alias rm=trash

这样,以后使用 rm 时,默认将文件移动到垃圾箱中,再不会发生不小心删除文件之后无法找回的问题。

reference


2018-02-12 linux , rm , delete , file , manager

搭建自己的 Weibo 转 RSS 服务

认识我的人都是知道我一直使用 RSS 订阅信息,但是互联网越来越闭塞的现在,每一家公司都在自建后花园,把所有的信息封闭在内部,几乎现在没有任何内容型平台提供 RSS 输出了,所以也才有了这篇文章。以前我使用的微博转 RSS 的服务大都已经挂掉,唯一一家微博档案最近也似乎有些危险。不过幸好查到下面两个项目,让微博定义 RSS 不在困难。

  • https://github.com/DIYgod/Weibo2RSS
  • https://github.com/zgq354/weibo-rss

我使用了第二个项目,安装过程可以参考下文,都是使用 nodejs 实现,如果手动安装需要手动配置一下环境。

使用 Docker 安装

安装 Docker 的文章可以查看之前的文章

git clone https://github.com/zgq354/weibo-rss.git
cd weibo-rss
docker build -t <tag> .
docker run -p 3000:3000 -d --name weibo-rss --restart=always <tag>

默认程序会监听服务器的 3000 端口,可以通过 Nginx 的 proxy_pass 指令配置请求转发。

reference


2018-02-11 linux , docker , weibo , rss , inoreader

每天学习一个命令:find 查找文件

查找的动作在平时使用的频率也还是很高的,所以知道并用好 find 这个命令也很重要。find 命令顾名思义,就是搜索特定文件夹内的文件。当然后来用了 fzf 日常使用比 find 要高很多,不过如果要写脚本 find 命令的使用也是不得不了解的。

find 命令提供了非常多的选项,功能很强大。

基本使用

最基本的使用

find [path] [expression]

在 path 目录下查找 expression 的文件。

使用举例

通过文件名查找

find -name "query"   # 搜索文件名,大小写敏感
find -iname "query"  # 大小写不敏感
find -not -name "query"  # 查找不包含关键字的文件
find \! -name "query"    # 不包含

按照类型查找文件

find -type [fdlcb] "query"

type 后能够使用的类型有

  • f 常规文件
  • d 目录
  • l 连接
  • c 字符设备文件 character devices
  • b 块设备文件 block devices

比如要查找系统中所有以 .conf 结尾的文件

find / -type f -name "*.conf"

通过文件大小查找

find /path/to/folder -size 50M

查找 50M 的文件,size 后能够使用的单位有:

  • b 512byte blocks
  • c byte 字节
  • w two byte
  • k kB 千字节
  • M MB
  • G GB

size 后面的参数可以使用 + 或者 - 或者不加来标识,超过,少于,或者正好。

find / -size +700M   # 表示查找大于 700M 的文件
find / -size -50c    # 表示查找小于 50 byte 的文件
find . -size 50M     # 表示在当前目录查找正好 50M 的文件

通过时间来查找文件

Linux 会存储下面的时间:

  • Access time 上一次文件读或者写的时间
  • Modifica time 上一次文件被修改的时间
  • Change time 上一次文件 inode meta 信息被修改的时间

在按照时间查找时,可以使用 -atime-mtime 或者 -ctime ,和之前 size 参数一样可以使用 + 或者 - 来标识超多多长时间或者少于多长时间。

find / -mtime 1          # 寻找修改时间超过一天的文件
find / -atime -1         # 寻找在一天时间内被访问的文件
find / -ctime +3         # 寻找 meta 信息被修改的时间超过 3 天的文件

寻找修改时间超过 1 小时的 mp3 文件

find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3"

其中的-mmin n 参数表示的就是文件内容在前 n 分钟没有修改。

find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3" -exec rm -f {} \;

通过上面的语句就能够一次性删除超过 60 分钟未修改的 mp3 了。

通过 Owner 和权限搜索

使用 -user-group 参数来通过拥有者搜寻

find / -user einverne
find / -group shadow

同样按着权限查找文件

find / -perm 644
find / -perm -644 # 查找权限至少是 644 的文件

限制查找的深度

使用 -maxdepth 来限制查找的深度,默认情况下 find 会一层层搜索,如果只想让 find 命令查找当前目录或者子目录,可以使用

find -maxdepth 2 -name "query"

同理 还有一个选项 -mindepth

find -mindepth 2 -maxdepth 3 -name "query"

对搜索结果批处理

在搜索出结果之后,可以使用如下的方式对搜索的结果执行一个命令

find [param] -exec command {} \;

比如批量修改权限

find . -type f -perm 644 -exec chmod 664 {} \;
find . -type d -perm 755 -exec chmod 700 {} \;   # 批量修改文件夹权限

批量删除时间超过 1 天的文件

综合上面按时间查找文件和对搜索结果批处理,可以获知

find /path/to/folder/* -mtime +1 -exec rm {} \;
  • find 后面接一个完整的 path
  • -mtime +1 表示的查找时间超过 1 天的内容
  • -exec 后面表示对搜索的结果进行处理

或者直接使用 -delete:

find /path/to/folder/* -mtime +1 -delete

删除目录下空文件夹

find path/to/folder -type d -empty -print
find path/to/folder -type d -empty -delete

使用 locate

locate 命令需要额外安装

sudo apt install mlocate

locate 命令维护了一份文件和目录的数据库,所以检索速度会快一些,数据库通常一天更新一次,可以手动更新数据库

sudo updatedb
locate -S   # 查看当前数据库数据

locate 使用的方式和 find 大致差不多。

reference


2018-02-10 linux , find , file , command , search

电子书

本站提供服务

最近文章

  • 从 Buffer 消费图学习 CCPM 项目管理方法 CCPM(Critical Chain Project Management)中文叫做关键链项目管理方法,是 Eliyahu M. Goldratt 在其著作 Critical Chain 中踢出来的项目管理方法,它侧重于项目执行所需要的资源,通过识别和管理项目关键链的方法来有效的监控项目工期,以及提高项目交付率。
  • AI Shell 让 AI 在命令行下提供 Shell 命令 AI Shell 是一款在命令行下的 AI 自动补全工具,当你想要实现一个功能,敲一大段命令又记不住的时候,使用自然语言让 AI 给你生成一个可执行的命令,然后确认之后执行。
  • 最棒的 Navidrome 音乐客户端 Sonixd(Feishin) Sonixd 是一款跨平台的音乐播放器,可以使用 [[Subsonic API]],兼容 Jellyfin,[[Navidrome]],Airsonic,Airsonic-Advanced,Gonic,Astiga 等等服务端。 Sonixd 是一款跨平台的音乐播放器,可以使用 [[Subsonic API]],兼容 Jellyfin,[[Navidrome]],Airsonic,Airsonic-Advanced,Gonic,Astiga 等等服务端。
  • 中心化加密货币交易所 Gate 注册以及认证 Gate.io 是一个中心化的加密货币交易所。Gate 中文通常被称为「芝麻开门」,Gate 创立于 2013 年,前身是比特儿,是一家致力于安全、稳定的数字货币交易所,支持超过 1600 种数字货币的交易,提供超过 2700 个交易对。
  • 不重启的情况下重新加载 rTorrent 配置文件 因为我在 Screen 下使用 rTorrent,最近经常调试修改 rtorrent.rc 配置文件,所以想要找一个方法可以在不重启 rTorrent 的情况重新加载配置文件,网上调查了一下之后发现原来挺简单的。