#24 如何压缩 VirtualBox 磁盘

2019-05-21
  1. 用一个 ISO 文件,挂载目标磁盘,进入 Live 模式
  2. 安装 zerofree:sudo apt install -y zerofree
  3. 填充 0:sudo zerofree -v /dev/sdb1
  4. 执行结束之后,关闭 Live 系统
  5. 在 VBOX 宿主机上:VBoxManage modifymedium disk --compact /path/to/vdi

#22 Ubuntu 从 18.10 升级到 19.04 过程中出现的三个问题

2019-04-26

Ubuntu 19.04 与 4/19 发布,生命周期 9 个月。我提前两个月就定着日程在等,总是克制不住追新的冲动,哈哈。

好像主要就是:

  1. 内核升级到 5.0(4.x 升级到 5.0 其实没有什么大变化,主要是老人家高兴)
  2. GNOME 3.32,之前是 3.30
do-release-upgrade

由于审计过程中意外中断,导致出现了一些问题,这里做个记录。
声明:这些问题,是非正常升级流程出现的,不是说是 Ubuntu 的问题。

#21 TeamViewer 扑街之后的远程终端解决方案

2019-03-21

从今天开始,打开 TeamViewer 就这样了。


商业用途
检测为商业用途
该软件似乎适用于商业环境。请注意:免费版仅供个人使用。
您的会话将在5分钟后终止。请登录我们的网站以获得更多信息。

商业用途
超时后连接将被阻断。
您的许可证对您与伙伴的最大会话时间有所限制,立即重新连接时将被阻断。请稍后再试或升级您的许可证。
与该伙伴的连接在07:33之前都将保持阻断。

我不喜欢下那些破解版软件,对原开发者来说,就是偷东西,总觉得有亏于人。
另一方面也不放心其安全性。

但是,这价格真心用不起。

新方案

需求

远程访问公司的工作机器

备选方案

不管什么方案,从两个内网机器想要实现通信,只能有一个双方都能连接的外网主机进行中转。

我对自己家的公网 IP 很久以前就绝望了,我打电话给电信要求分配公网 IP,之后他们说给我开了,然后我要求进入光猫最高权限,进去设置端口转发规则,不行。。。那要公网 IP 有捷豹用啊!

所以:

  1. 要么别个给免费的全套远程桌面访问解决方案(一般有些限制),比如行云管家
  2. 要么给免费的数据转发(一般也有些带宽之类的限制),或许附带专用软件。

只要能流畅使用终端,都可以接受。

在研究方案的过程中,发现了另一个好的选择:tmate.io。

tmate.io

这是 tmux 的分支。
tmux 我用过好一阵子,也很容易上手。

使用方法:

# 创建远程连接
tmate -S /tmp/tmate.sock new-session -d

# 显示 SSH 连接命令
tmate -S /tmp/tmate.sock display -p '#{tmate_ssh}'

思路

创建定时任务,定时检查并建立 tmate 连接,然后将 ssh 命令输出到文件里面。
文件位于我的坚果云文件同步目录 $HOME/Documents/Mine/,这样我在任何地方都能通过 SSH 访问公司的电脑。

/etc/cron.d/tmate

SHELL=/usr/bin/zsh
* * * * * markjour [ -f $HOME/Documents/Mine/tmate.now ] && $HOME/Documents/Mine/tmate.sh && rm $HOME/Documents/Mine/tmate.now

~/Documents/Mine/tmate.sh

#!/usr/bin/zsh

tmate -S /tmp/tmate.sock kill-session
tmate -S /tmp/tmate.sock new-session -d
sleep 3
tmate -S /tmp/tmate.sock display -p '#{tmate_ssh}' > ~/Documents/Mine/tmate.conn

我在家只需要在同步目录下创建一个名为 tmate.now 的文件,一会儿就能用上 ssh 了。

#20 VirtualBox 虚拟机磁盘扩容

2018-12-13

之前只有一个 50G 存储,后来磁盘空间总不够,就把占空间比较大的 Projects 目录(用户主目录下)移出来,弄了一个独立的 50G 盘。
过了段时间,又隔三差五提醒我空间不够了,baobab 清理了,可以删除的东西一删,多出几 GB 来。
但是看结果,还是扩容一下,一了百了。

#19 几个小脚本

2018-12-05

随便翻一下谷歌浏览器调试工具(F12)执行过的脚本,摘几个贴一下。
1. Gitee GVP
2. API 测试时先调登录接口
3. heidiSQL 找回数据库密码
4. 列出 Python 文档中的章节
5. 自动删除网易邮箱的邮件

#18 OneTab 快速删除所有 URL 的方法

2018-12-05
function confirm() { return true; } // 覆盖 confirm 方法,一直返回确认
nodelist = document.querySelectorAll('#contentAreaDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(3)');
nodelist.forEach(function(ele, index, list) { setTimeout(function() { ele.click(); }, 1000 * index); });

#17 Git 补丁包

2018-08-01
  • git diff 对应 diff 命令
  • git apply 对应 patch 命令
git diff v1.2.1 v1.2.2 > v1.2.1_v1.2.2.patch

git apply --check v1.2.1_v1.2.2.patch

git apply -v --whitespace=warn v1.2.1_v1.2.2.patch

有部分文档中说 git applypatch 在一些细节上实现不一致,需要留意。但我轻量级使用,没有遇到过什么问题。

#16 Nano 编辑器

2018-07-13

Pico (Pine composer) is a text editor for Unix and Unix-like computer systems. It is integrated with the Pine and Alpine email clients, which were initially designed by the Office of Computing and Communications at the University of Washington.
A clone of Pico called nano, which is part of the GNU Project, was developed because Pico's earlier license had unclear redistribution terms. Newer versions of Pico as part of Alpine are released under the Apache License version 2.0.

Nano 是由于 Pico 编辑器早期授权条款不够 free 而开发,是 GNU 计划的一部分。

使用

Nano 是一个超级轻量级的文本编辑器,是每个 Linux 发行版的标配。

  1. 语法高亮(比如:/usr/share/nano/json.nanorc

两个命令:nano,rnano(受限模式,参考 man 文档)

配置

  • 系统配置 /etc/nanorc/usr/share/nano/
  • 用户配置 ~/.nanorc~/.nano/

参考资料与拓展阅读

#15 Linux 常用压缩命令 CheatSheet

2017-03-22

rar

rar a xxx.rar files...
rar e xxx.rar ./

rar a -p123456 xxx.rar files...
rar e -p123456 xxx.rar ./

rar a -v20m xxx.rar files...

tar

常用的参数说明(grep "^ \-[a-zA-Z0-9]" <(tar --help) | sort):

  • vf 分别表示输出详细信息、指定压缩包名称
  • x 解压
  • c 压缩
  • t 列出压缩包里面的文件列表
  • 压缩文件类型(Linux 下最常用的两种):
  • z:gz
  • j:bz2
# To extract an uncompressed archive:
tar -xvf /path/to/foo.tar

# To create an uncompressed archive:
tar -cvf /path/to/foo.tar /path/to/foo/

# To extract a .gz archive:
tar -xzvf /path/to/foo.tgz

# To create a .gz archive:
tar -czvf /path/to/foo.tgz /path/to/foo/

# To list the content of an .gz archive:
tar -ztvf /path/to/foo.tgz

# To extract a .bz2 archive:
tar -xjvf /path/to/foo.tgz

# To create a .bz2 archive:
tar -cjvf /path/to/foo.tgz /path/to/foo/

# To list the content of an .bz2 archive:
tar -jtvf /path/to/foo.tgz

# To create a .gz archive and exclude all jpg,gif,... from the tgz
tar czvf /path/to/foo.tgz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} /path/to/foo/

# To use parallel (multi-threaded) implementation of compression algorithms:
tar -z ... -> tar -Ipigz ...
tar -j ... -> tar -Ipbzip2 ...
tar -J ... -> tar -Ipixz ...

zip

# Create zip file
zip archive.zip file1 directory/

# To list, test and extract zip archives, see unzip
cheat unzip

# Extract archive
unzip archive.zip

# Windows 下创建的压缩包放到 Ubuntu 下解压可能会有编码问题
unzip archive.zip -O gbk

# Test integrity of archive
unzip -tq archive.zip

# List files and directories in a file
unzip -l archive.zip

7z

sudo apt install p7zip-full
dpkg -L p7zip-full p7zip | grep bin/
# /usr/bin/7z
# /usr/bin/7za
# /usr/bin/7zr
# /usr/bin/p7zip

文档中说是支持 7z,xz,tar,gz,zip,bz2,iso,rpm,deb 等等等等格式,不过没用过。

# 压缩
7z a  xxxx.7z files...
# 解压
7z e  xxxx.7z
# 查看文件列表
7z l  xxxx.7z

参考

  1. man
  2. --help
  3. cheat / tldr