2019年6月10日星期一

VirtualBox 为 Ubuntu server guest 配置共享文件夹

依次点击“设备 > 安装增强功能”。

如果弹出未能加载虚拟光驱的报错,不用管,没有关系。

创建空文件夹用于 mount 虚拟光驱
touch /media/cdrom
mount 虚拟光驱:
sudo mount /dev/cdrom /media/cdrom
查看是否 mount 成功:
ls /media/cdrom
如果所列文件包括 VBoxLinuxAdditions.run 等,那么表明 mount 成功了。

接下来是安装:
sudo /media/cdrom/VBoxLinuxAdditions.run
如果这一步报错,提示 Please install the gcc make perl packages from your distribution,那么需要先安装 gcc, make, perl 这几个文件,做法是:
sudo apt-get update
sudo apt-get install gcc make perl
安装完 VBoxLinuxAdditions.run 后,需要重启系统。

重启系统前,建议先把必要的共享文件夹配置给设置好,做法是依次点击:设备 > 共享文件夹。在“固定分配”里填好名称、路径等信息,记下这里的名称,假设名称是 vmshare

然后就可以重启系统了:
reboot
重启完成后,mount 共享文件夹:
mkdir ~/linux_share
sudo mount -t vboxsf vmshare ~/linux_share
至此完成配置。

参考:
https://askubuntu.com/questions/161759/how-to-access-a-shared-folder-in-virtualbox

2019年6月7日星期五

Python 为什么我倾向于conda而不是pip,以及管理虚拟环境为什么用conda

为什么 conda 而不是 pip

原因一,pip 安装包经常编译失败:

pip 安装需要编译的包时,经常会失败。这类包例如 bottleneck、Twisted。而 conda 则能正确安装这些需要编译的包。

原因二,conda 能自动创建最佳环境:

conda 安装包时能自动创建最佳的环境。典型的例子是安装 numpy 和 pandas,conda 安装时会自动安装 mkl,mkl 是英特尔用来加速科学运算的一系列包,可以让 numpy 运行地更快。pip 安装 numpy 和 pandas 时,不会自动安装 mkl。

当然,自动安装 mkl 有好有坏,坏处可能是你只想安装 numpy 和 pandas 本身,而对 mkl 带来的额外硬盘占用很讨厌。不过,就一般用户而言,更应该关心的是自己的研究工作本身,而不是费时费力地去自行打磨 python 环境。用 conda 显然能比用 pip 省时省力。

为什么管理虚拟环境用 conda,而不是其他例如 venv

上述原因也是我在 python 虚拟工具的选择中,使用 conda 而不是其他工具(例如 python 3.7 官方推荐的 venv)的原因所在,用譬如 venv 创建虚拟环境,我只能 pip 安装,而 pip 安装时我面临很多包无法正确编译、安装 numpy 时不会自动安装 mkl 等问题,而用 conda 来管理虚拟环境,上述问题都不复存在。

2019年6月4日星期二

Linux 查看进程、关闭进程

查看进程:top

运行 top 命令可以动态监控所有进程,类似windows 里的“任务管理器”

Linux top command

top 命令是什么词组的缩写呢?

答案是并不是任何词组的缩写,而是指 top 这个单词,取 a top users display for Unix 或 top CPU processes 中的 top 一词,尽管 Wikipedia 说是 table of processes 的缩写。关于这一话题的讨论,可以参考如下链接:
https://unix.stackexchange.com/questions/186524/what-does-top-command-in-linux-stand-for

查看进程:ps

例如想查看 python 这一进程,可以运行
ps -ef | grep python
ps 是 processes 的缩写。

关闭进程:kill

用法:kill[参数][进程号]

一般 kill + 进程编号即可结束进程,例如“kill 123”。

对于结束不掉的进程可以使用“kill -9 进程编号”。

2019年6月2日星期日

怎样查看VPS IP是否被墙

昨天(2019年06月02日)我的 bandwagon shadowsocks 忽然连不上了,ping 也不能 ping 通,恰巧同事的 vultr 服务器也 ping 不通,我怀疑两个 ip 地址都被墙了。

那么,如何判断 ip 地址是否被墙呢?

一个简单的方式是找一个专门 ping ip 地址的网站,例如 http://ping.pe/ 或者 https://tools.ipip.net/ping.php 。这里以后者为例。

进入网站,输入 ip 地址,选择中国大陆和港澳台地区,然后开始 ping。下面两张图是我的服务器的 ping 信息,可以看到港澳台丢包率为0,大陆丢包率为100,很明显 ip 地址被墙了。





IPv6 的 fe80开头的地址

fe80开头的 ipv6 地址不是公网地址,没人给你分ip,自动协商的地址,通常无法用于上网。 现在各大运营商用的ipv6: 电信是240e开头的(240e::/20) 移动是2409开头的(2409:8000::/20) 联通是2408开头的(2408:8000::/20)