Posts in category “Linux”

Setting timezone for Linux system

sudo timedatectl set-timezone Asia/Shanghai 

Setting timezone for MySQL

add the line below to [mysqld] section in /etc/my.cnf

default=time-zone = "+8:00"

Let your Linux system use memory as much as possible instead of swap space.

$ sudo vim /etc/sysctl.conf

add the line below to the end of this file:

vm.swappiness = 10

save and exit. Execute 

$ sudo sysctl -p

vm.swappiness = 10 means that the Linux system will only start using swap space when your available physical memory is less than 10%.

Vmware CentOS guest IP address automatically changed Isuse

今天天气不错,和太太儿子去 Bowenvale Walking Tracks 走了一个短途的hiking。回家路上前端同学报告说测试机出问题了,所有接口都不通了。于是到家赶紧排查问题。

网络环境

Host:Windows 10,Vmware Station Guest: CentOS 7.7 Bridge network

一开始以为是服务进程崩了。连上vpn发现机器都ping不通。哦看来虚拟机是被谁关掉了。远程桌面到Host机器一看....虚拟机活得好好的,并没有被关掉。用控制台登录进去一看,发现IP不是我们以前设定的IP,而是变成 172.18.开头的一个地址,这是我们误以为网络不通了的原因。

经过一番排查,发现故事应该是这样的:

CentOS机器的网络配置是 DHCP,因为网络是桥接的,因此只需要路由器上做点设置,根据CentOS机器网卡的Mac地址总是分配 192.168.178.52 这个IP给虚拟机就行了。我查看了路由器的设置,发现确实是这么设置的,虚拟机网卡的mac地址也没有变,看上去一切都很正常。不过这里有一个小小的细节,一开始我没有在意,但它可能是问题发生的始作俑者。

在登录公司路由器的时候,我没有直接进入设置界面,而是系统弹出一个提示框,说系统刚刚升级到某某版本,有一个引导界面走了好几步才进入路由器设置界面。

我先是修改CentOS的网络设置,把网络参数由 dhcp 改成 static,确保他总是使用 192.168.178.52 这个IP,也设置了默认路由,重启网络,发现修改生效了,IP地址现在是正确的了,但是却不能上网,内外不通。

那问题出在哪里呢?之前拿到的IP是172.18.x.x,这不是 Docker 喜欢用的IP段么?莫非和Docker 有关?我先是把 CentOS 虚拟机里的Docker 停掉....重启网络,依然固我。网还是不通。

我只好把关注点移到 Host 机器,硬件网卡,VMnet1, VMnet8, vEthernet (Default Switch)..... 慢,这个vEthernet 是什么鬼? 它的IP也是172.18.x.x的!网上搜索了一下,说这个东东应该是Docker添加的。对呀,我前几天刚好干过这个事情,在Windows 10 上安装了Docker,那时我是试图解决 Jenkins 不听话的问题。但因为这台Windows 10 主要是兄弟部门在用,怕Docker影响他们的业务,我的经理就赶紧把Docker卸掉了。

Docker都卸掉了,卸掉这个虚拟网络示配器料无大碍,于是我就尝试 uninstall it。系统提示发生了什么未知的错误,不让卸载。那就禁用它吧。禁用成功。再ping那个IP,网通了!

回头想想,CentOS机器的IP并非无缘无故就变了,我猜测应该是路由器自动升级,在那个短暂离线期间,CentOS的网络被我刚刚禁用的那个虚拟switch抢先接管了。本来应该由路由器固定分配 192.168.178.52 给那台机器,但路由器短暂弃权期间,这个过程被那个虚拟的switch示配器干扰,于是CentOS得到一个 172.18 开头的IP。

哎!Docker也真是的,你都已经被卸掉了,也不把自己带的东西清理干净。

很有意思的排错过程,记录下。

解决 ibus-rime 在 ubuntu 18.04 下中英文切换图标无变化问题

我忍受这个问题已经有快一个月了,今天打算花点时间把它解决掉。

经过一翻搜索,我发现已经有人在 ibus-rime 项目上报告了这个问题,也有人给出了解决方法。遗憾的是,那个解决方案有些含糊,我不知道需要对系统做哪些改变。

也许从源码安装能够解决问题?但我一开始走了弯路,没有认真安装文档中提到的所有依赖,毫无疑问的,编译到中间就因为缺这缺那失败了。后面我就老老实实的按照文档说明,先安装好所有的依赖,再执行 ./install.sh。然而我仍然可耻的失败了。我不知道原因....也许应该报个bug给作者。幸运的是,源码里还有一个 install-static.sh 脚本,我执行了这个脚本,结果顺利编译成功并安装。

现在我的五笔拼音也能够识别中英方式了(英文状态显示A,中文状态显示“五”),太开心了!

我是 ubuntu 18.04 (pop!os) Gnome 3 桌面,五笔拼音输入法

为方便同样用 ubuntu 18.04 的同学,我把编译前的准备工作和编译步骤列在下面:

1. 准备工作

sudo apt install cmake libboost-all-dev libibus-1.0-dev libnotify-dev libgoogle-glog-dev \
libkyotocabinet-dev libleveldb-dev libmarisa-dev libopencc-dev libyaml-cpp-dev

2. clone project and submodules:

git clone --recursive https://github.com/rime/ibus-rime.git
cd ibus-rime
# do this as normal user
./install-static.sh

3. 重启 ibus

ibus-damon -dxr 

Enjoy your favorite input method!

My favorite applications on Ubuntu

Awesome-Linux-Software
Awesome-Linux-Software Chinese

Currently, my laptop runs Pop! OS 18.04 (Ubuntu). Thanks my boss, he bought me a Windows laptop, so I have the chance to run Linux as my main OS. The following is a list of my favorite apps on my laptop.

mp3 player: Audacious

browser: Chromium

Markdown editor: Typora

Text editor: Geany

Quick view: gnome-sushi

Epub reader: Foliate

Console Dictionary: sdcv

Console tts: say (in gnustep-gui-runtime package)

hardware information: inxi

say alternative: gnustep-gui-runtime

apt-get install -y audacious chromium typora geany gnome-sushi foliate sdcv gnustep-gui-runtime inxi

3rd software

Jetbrains: Rider, Webstorm, Phpstorm, Pycharm

Telegram-desktop

will update the list when I remember... 😀