CentOS 最佳第三方仓库

Submitted by Dot on Mon, 05/15/2017 - 02:00

我翻译的这篇《 CentOS 最佳第三方仓库 》今天发表在 linux.cn 首页,这是我为 linux.cn 翻译的第二篇文章。

一个实现 LFS(Linux From Scratch) 自动化的脚本(上)

Submitted by Dot on Fri, 12/09/2016 - 09:20

LFS ( Linux From Scratch ) , 即“从零开始构建 linux ”。具体是指,从最基本的 glibc, binutils, gcc 等开始,逐个编译 linux 运行所必须的各个软件,最终构建出一个可以启动并独立运行的 linux 。
一个完整的 LFS 过程至少要分为两个阶段——chroot 前和后。本文涉及 chroot 前的内容,基本可以完成 LFS 6.4 即 chroot (包括)之前的所有工作,包括软件包下载、环境设定、编译等,直到 chroot 命令本身。

记得给crontab加上路径

Submitted by Dot on Tue, 10/04/2016 - 20:23

如果没有添加路径,外部命令无法执行。
之前只是听说,不以为然,今天出现问题才有体会。
事情是这样的。
TrinityCore 6.x很不稳定,worldserver经常因为客户端的一些行为而异常退出。因为放在aws上,不想每次都ssh上去启动,就写了个脚本:
pidof bnetserver || { /home/dot/6tcinit/bin/bnetserver & }
pidof worldserver || { /home/dot/6tcinit/bin/worldserver < /dev/null &> /dev/null & }

加到crontab里每5分钟运行一次。奇怪的是||后面的语句总会运行,这说明前面的的命令报错了(状态码非0)。
把前面的命令替换为:(冒号,等同true)则正常,说明问题出在pidof命令上。这时才想起查看日志,于是看了看crond发送的邮件,提示pidof: command not found,这才想起没有添加路径,导致找不到pidof。

resize2fs: Bad magic number in super-block

Submitted by Dot on Mon, 09/05/2016 - 20:25

这是在CentOS 7上扩展lv时遇到的问题。

当时为了给TrinityCore配置环境,需要编译较新的gcc。但之前只给这个CentOS虚拟机分配了8G的硬盘,编译时gcc目录竟然涨到了近5G,No space left one device,进行不下去了。

第一反应是扩展lv。
先添加一块硬盘,然后执行:
pvcreate /dev/sdb
vgextend centos /dev/sdb
lvextend -l +100%free /dev/mapper/centos-root
但是最后resize2fs报错:
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root

最后在这里找到了答案

原来CentOS 7默认采用xfs而非ext4,resize2fs自然无效了。

CentOS 7.2 上编译 TrinityCore

Submitted by Dot on Sun, 09/04/2016 - 18:18

TrinityCore 是什么?黑话,一个网络游戏框架;白话,一个魔兽世界服务器端
本文描述在 CentOS 7.2 上部署 TrinityCore
编译流程官方 wiki 讲的很详细,不赘述。这里只讲一些可能遇到的问题,以及 wiki 遗漏的一些细节

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用户需修改脚本;