git引发的inode变化

Submitted by Dot on Tue, 08/23/2016 - 17:20

本文暂只说明现象,原因则有待研究。

我们删掉git目录下的一个文件foo1,如果foo1是其他文件foo的硬链接,此时虽然可以用git checkout foo1恢复文件,但恢复出来的这个foo1拥有的是不同的inode,和目标文件foo已失去了对应关系,俨然一个新文件。这倒不难理解。

但如果说这一举动会导致目标文件foo的inode也发生变化,就有些匪夷所思了。
来看看下面这个例子。

一个实现vpn简单操作的脚本

Submitted by Dot on Tue, 08/16/2016 - 10:16

本文是用curl命令提交表单的续篇,在脚本中添加了nmcli的调用,以实现连接、修改、断开等简单操作。

提示:

  • 脚本包含了注册功能,但需要目标页面没有验证或者有验证但可以绕开;
  • 脚本依赖于NetworkManager中的nmcli命令,请检查此命令是否存在于你的系统中;

 

脚本功能:

  • 若不带任何选项或参数,连接vpn;
  • 选项-c同样用于连接vpn;
  • 选项-d用于断开连接;
  • 选项-s用于显示vpn连接信息;
  • 选项-g用于修改vpn网关;
  • 选项-u用于修改vpn用户名;
  • 选项-h用于显示帮助信息;
  • 选项-v用于显示版本信息;
  • 参数为字符串时,参数1作为用户名,参数2作为密码,若只有参数1,则密码设为1111;

 

待解决的问题:

一个定时让你起身活动的脚本

Submitted by Dot on Sun, 08/14/2016 - 11:13

自己总是在电脑前一坐半天乃至一天,不利于健康不说,长时间纠结某个问题往往事倍功半,所以就写了这么个脚本,初衷就是定时提醒自己起身放松一下。

这个脚本作用很简单,添加到crontab,0 8-19/1 * * * relax.sh,8至19点每小时整点运行。

脚本功能:

  • 在当前开启的所有虚拟终端(pts)上输出提示音,提示音频率由慢到快,最后用vlc播放音频文件“break.mp3”,并关闭屏幕;
  • 脚本运行期间(约43秒),任一新打开的虚拟终端都会输出,无法正常工作,强迫你停止;
  • 如果当前是16点,则用vlc播放眼保健操广播音eyes.f4v,这是我在网上找的老版本,80后的记忆;60s后关闭屏幕;
  • 因为脚本是向pts输出,所以只对linux桌面的虚拟终端用户有效,如gnome-terminal;tty用户需修改脚本;

 

为drupal 8创建子主题subtheme

Submitted by Dot on Sat, 06/04/2016 - 20:45

虽然已经习惯了drupal的默认主题bartik,但还是有些看着不爽的地方,比如宽度占满屏幕,比如标签p的margin-bottom太大。

怎么办?直接修改core/themes/bartik/css/layout.css和core/themes/bartik/css/base/elements.css么?当然不,你肯定不想每次被更新覆盖后再重新修改。

两个办法:

  1. 把原主题复制一份放在themes下并重命名,自己维护代码。不推荐,因为容易乱,而且用这种方法你会错过原主题的更新;
  2. 创建子主题subtheme。这是本文要说的。

什么是子主题:

就是能继承原主题(base theme)所有属性的主题。同时,在子主题中的设置又优先于原主题。比如说,子主题css中只有一条p{color:red;},那么子主题会继承原主题所有的属性,然后把所有p标签设为红色。

那么,怎样创建一个drupal 8的子主题呢?

Could not delete temporary file "..." during garbage collection

Submitted by Dot on Thu, 06/02/2016 - 20:17

Recent log messages里总是有类似Could not delete temporary file "..." during garbage collection的报错,观察发现,每次都是5个一组,3小时一次,原来是cron时报错。

搜索了下,对应的是数据库中的表file_managed,status的两个值0和1分别代表temporary和permanent,用sql删除就OK了。